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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.