Gast
#598797
Hallo Leute! Ich arbeite mich gerade in das AVR GCC Tutorial ein und komme beim Abschnitt 18.3 EEPROM einfach nicht klar. Es will mir nicht gelingen, Daten aus dem EEPROM richtig zu lesen. Ich benutze WinAVR-20060125. Ich habe 4 Variable im EEPROM und 4 globale Variable im SRAM definiert //Code im Abschnitt der Deklaration uint8_t eeT1 EEMEM = 151; uint16_t eeT2 EEMEM = 10838; uint16_t eeT3 EEMEM = 330; uint16_t eeT4 EEMEM = 1260; volatile uint8_t T1; volatile uint16_t T2, T3, T4; Die Variablen in SRAM sollen durch die im EEPROM geladen werden void eepromread(void){ T1 = eeprom_read_byte(&eeT1); T1 = eeprom_read_word(&eeT2); T3 = eeprom_read_word(&eeT3); T4 = eeprom_read_word(&eeT4); } Leider werden die SRAM-Variablen beim Programmstart nur mit Datenmüll gefüllt. Auch das Schreiben in das EEPROM per Programm void eepromwrite(void){ eeprom_write_byte(&eeT1, T1); eeprom_write_word(&eeT2, T2); eeprom_write_word(&eeT3, T3); eeprom_write_word(&eeT4, T4); } mit anschließenden Auslesen funktioniert nur teilweise. Wenn ich T1 bis T4 per Programm setze und mit vorgenannter SUB eepromwrite() beschreibe und dann wieder lese, stimmt nur der Inhalt von T3 und T4. T1 und T2 enthalten Müll. Ich habe zum Test ein kleines Programm geschrieben und beigefügt. Damit kann man T1 bis T4 über den UART setzen (z. B. mit Eingabe T1=123), mit DA (Daten Ausgabe) auslesen, mit EW (Eeprom Write) beschreiben und mit ER (Eeprom Read) zurücklesen. Was habe ich nur falsch gemacht? Vielen Dank schon jetzt für die Hilfe. Martin