mikrocontroller.net

Forum: Compiler & IDEs EEPROM funktioniert nicht richtig!


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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


Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In dem Code oben ist ein Schreibfehler:
    T1 = eeprom_read_byte(&eeT1);
    T1 = eeprom_read_word(&eeT2);// 2. Mal T1
    T3 = eeprom_read_word(&eeT3);
ansonsten:
- poste compilierbaren Code
- hast du die Probleme im Simulatioroder "in echt"?
- hast du das .eep-File geflasht ? (bzw. im Sim. geladen)
(- Anhänge gehen hier im Forum verloren, wenn man "Vorschau" klickt)

hth. Jörg

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,
vielen Dank für Deine schnelle Antwort! Die Probleme sind mit Deiner 
Hilfe gelöst!


Problem 1: EEPROM lesen bei Neustart funktioniert nicht.

Das EEPROM war offensichtlich nicht beschrieben. Ich lade das Programm 
mit Pony Prog und bin davon
ausgegangen, daß bei "OPEN DEVICE FILE" und "WRITE ALL" auch wirklich 
alles geöffnet und geschrieben
wird. Jetzt habe ich gelernt, daß das .eep File separat geöffnet werden 
muß.


Problem 2: Beschreiben des EEPROM im Programm mit anschließendem lesen 
funktioniert nur bei T3 und T4

Das lag am Schreibfehler. Hier wurde uint8_t T1 mit uint16_t T2 
überschrieben, was natürlich nicht
funktionieren kann.

Nochmals meinen Dank!

Gruß Martin

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gern  geschehen ;)
den Fehler mit dem .eep-File macht man mal, abe rauch nur ein Mal :)

gruß Jörg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.