Forum: Mikrocontroller und Digitale Elektronik Werte im eeprom speichern...aber wann?


von Kersten D. (unbenannt-editor)


Lesenswert?

Hi!
Ich möchte 8 16-Bit Werte im Eeprom abspeichern (Atmega8 WinAVR gcc)
damit diese beim Abschalten nicht verloren gehen. Die Werte können aber
jederzeit vom Benutzer verändert werden und es wäre auch denkbar, dass
der Benutzer einen Wert ändert und sofort danach das Gerät abschaltet.

Wie stelle ich das Speichern sicher, ohne ständig bei jeder
Benutzereingabe gleich den Eeprom zu beschreiben?

Denkbar wäre, den Abfall der Versorgungsspannung zu messen und dann zu
schreiben (Spannung über eine Art Puffer aufrechterhalten). Das
erscheint mir aber doch etwas aufwendig, zumal ich keine Pins mehr frei
habe und auch die Schaltung bereits fertig ist.
Gibt es noch andere Lösungen?

Kersten

von A.K. (Gast)


Lesenswert?

"ohne ständig bei jeder Benutzereingabe gleich den Eeprom zu
beschreiben?"

Warum nicht genau so? Sorgst du dich um die 100000 möglichen
Schreibvorgänge?

von Feadi (Gast)


Lesenswert?

Hallo,

angenommen der Benutzer gib 10x am Tag neue Werte ein, wird der Chip 27
Jahre halten.

Gruß, Feadi

von Kersten D. (unbenannt-editor)


Lesenswert?

Das Gerät ist ein Netzteil, die Werte können mit einem Drehimpulsgeber
fast stufenlos verändert werden...selbst wenn ich nach jeder Eingabe
warte bis keine Änderung mehr erfolgt und dann speichere...an so einem
Netzteil verstellt man ja öfter was.

von A.K. (Gast)


Lesenswert?

Du hast dir ja selber die Antwort gegeben.

Und wenn dir die 100000 Sorgen machen: Speichere 1x32bit,8x16bit. Der
32bit-Wert ist ein Zähler. Und diesen 20-Byte-Block schreibst du nicht
immer an die selbe Stelle, sondern hübsch im Ringelreihen immer
hineinander. Beim Start suchst du den Eintrag mit dem höchsten
32bit-Zähler, beim nächsten Schreibvorgan landet das dann mit +1
dahinter.

Ergibt rund 2,5 Mio garantierte Schreibvorgänge. Bei 10 Jahren
Lebensdauer und 10 Stunden pro Tag darf der Anwender dann immer noch
jede Minute dran drehen.

von A.K. (Gast)


Lesenswert?

PS: Häng noch eine CRC dran, damit das Netzteil nicht alles in Brand
setzt, wenn das EEPROM Mist liefert. Das kann nämlich auch beim
schonendsten Betrieb immer passieren.

von Kersten D. (unbenannt-editor)


Lesenswert?

Danke, werde ich so machen. CRC kommt auch rein, obwohl das Netzteil
nach dem Einschalten sowieso erst nach Knopfdruck die Ausgänge
einschaltet.

von Der T. (Gast)


Lesenswert?

@A.K.

Aber was ist mit dem niedrigsten Bit vom Zähler? Das ändert doch bei
jedem Schreibvorgang seine Wertigkeit, oder hab ich da was übersehen?

Gruß,
Techniker

von Johannes R. (krampmeier)


Lesenswert?

Der aktuelle Zählestand wird paarweise mit dem zugehörigen Wert im
Ringspeicher abgelegt. Deswegen müsste man zum Auslesen erst den
höchsten Zählerstand suchen.
Je nach geplanter Anwendung des Netzteils würde ich mir den Aufwand mit
so einem Ringspeicher allerdings sparen und darauf vertrauen, dass der
EEPROM deutlich mehr als die garantierten Zyklen aushält, mindestens
Faktor 10 bei Ruamtemperatur :) Eine Speicherung z.B. ein Sekunde
nachdem der Wert stabil ist sollte doch eine ausreichende Lebensdauer
sichern, oder?

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.