- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: Variableninhalt (unter Verwendung eines Zeigers) ausgeben

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2007
    Ort
    Bayern
    Alter
    36
    Beiträge
    116

    Variableninhalt (unter Verwendung eines Zeigers) ausgeben

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich hab da wiedermal ein kleines Problem.

    Problemstellung:
    Ich möchte mir den Inhalt einer Variable als Debuginfo ausgeben. Dabei möchte ich zur Laufzeit selbst bestimmen welche Variableninhalt ich sehen möchte.
    Ich habe mir nun gedacht, dass ich die Speicheradresse der Variable (im RAM) über die RS232 eingebe. Die Adresse bekomme ich aus dem Mapfile.

    Ich lese dazu 4 Stellen (Hexadezimal) über die RS232 in einen ATmega88 ein und Konvertiere diesen String dann in Zahl, die ich einem Zeiger zuweise.

    Code:
    uint16_t addr;
    uint8_t value;
    
    str_temp[0] = rs232_buffer[1];
    str_temp[1] = rs232_buffer[2];
    str_temp[2] = rs232_buffer[3];
    str_temp[3] = rs232_buffer[4];
    
    addr = strtoul(str_temp, NULL, 16);
    
    // Ausgabe der eingelesenen Adresse (zur Kontrolle)
    uart_puts("\n\rADDR: 0x");
    uart_debug_8bit( (uint8_t)(addr>>8) ,16);
    uart_debug_8bit( (uint8_t)addr ,16);
    
    // Ausgabe des Speicherinhaltes an dieser Adresse
    // DAS FOLGENDE FUNKTIONIERT NICHT!
    uart_puts("\tVALUE: 0x");
    value = *addr;
    uart_debug_8bit( (uint8_t)value ,10);
    In der vorletzten Zeile value = *addr; kommt die Fehlermeldung "error: invalid type argument of 'unary *' (have 'uint16_t')" mit der ich nichts anfangen kann.
    Es tut auch nichts zur Sache wenn ich die ganze Zeile ändere auf value = (uint8_t)*addr;

    Zur Info:
    Code:
    void uart_debug_8bit (uint8_t nr, uint8_t base)
    {
    	char Buffer[10];	
    	itoa(nr, Buffer, base);
    	uart_puts(Buffer);
    }
    Ich bedanke mich!

    mfg
    Benny
    cooming soon...

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Wenn du an die Adresse einer Variable willst, schreib mal ein & statt einem * davor.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2007
    Ort
    Bayern
    Alter
    36
    Beiträge
    116
    Ich möchte mir den Wert einer Speicherzelle, die sich im RAM befindet und deren Adresse ich vorher per RS232 festgelgt habe ausgeben.

    mfg
    Benny
    cooming soon...

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    uint16_t* addr;

    sast

    雅思特史特芬
    开发及研究

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2007
    Ort
    Bayern
    Alter
    36
    Beiträge
    116
    Merci!

    mfg
    Benny
    cooming soon...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test