www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM in Codevision


Autor: Timo Benesch (milka)
Datum:

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

Autor: crazy horse (Gast)
Datum:

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

Autor: Timo Benesch (milka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke! Hat mir sehr geholfen!

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.