Forum: Mikrocontroller und Digitale Elektronik EEPROM in Codevision


von Timo B. (milka)


Lesenswert?

Hi,

man kann doch den EEPROM beim mega32 ja nur 100.000 mal beschreiben. Nun 
hab ich eine Variable mit > eeprom int save_klein; < deklariert und 
speichere in ihr nun etwas mit zb. > save_klein = klein; <. Nun das 
funktioniert zwar aber
1. bringt der Compiler die Fehlermeldung: uninitalized EEPROM, was 
bedeutet sie?
2. Benutzt der Compiler automatisch immer die selbe EEPROM 
speicherzelle?,  die ich dann nur 100.000 mal beschrieben werden kann 
oder wechselt er sie. Wenn er dies nicht tut wie kann ich das manuell 
tun?

mfg milka

von crazy horse (Gast)


Lesenswert?

zu 1:
eeprom int save_klein=0;
Damit wird dann auch eine *.eep-Datei erzeugt und die Variable erhält 
den Wert 0 (oder eben einen anderen x-beliebigen)

zu 2:
erst mal benutzt er natürlich immer die gleiche Speicherzelle(n) für die 
gleiche Variable.

Einen Speicherzellenwechsel musst du programmieren. Dazu eine weitere 
EEPROM-Zelle als Adresszeiger verwenden. Dort steht dann, wohin im 
Moment gelesen/geschrieben werden soll. Dazu brauchst du natürlich auch 
einen Zyklenzähler, aber der muss ja nicht jedes einzelne Byte 
mitzählen, kann erst mal im RAM bleiben. Wenn nicht ständige 
Abschaltungen erfolgen, reicht es, wenn du den EEPROM-Zähler z.B. alle 
256 Schreibvorgänge erhöhst und so irgendwann einen notwendigen 
Speicherzellenwechsel erkennst.
Im Prinzip halte ich aber nicht allzuviel von solchen Spielereien.
Lösungsmöglichkeiten:
-Daten bleiben im RAM, Versorgungsausfall frühzeitig erkennen, dann noch 
schnell ins EEPROM schreiben, aus
-AVR mit Batterie puffern, sleep-Mode. Daten bleiben im RAM erhalten
-ext. I2C-FRAM dranbasteln

von Timo B. (milka)


Lesenswert?

Danke! Hat mir sehr geholfen!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.