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
"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?
Hallo, angenommen der Benutzer gib 10x am Tag neue Werte ein, wird der Chip 27 Jahre halten. Gruß, Feadi
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.
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.
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.
Danke, werde ich so machen. CRC kommt auch rein, obwohl das Netzteil nach dem Einschalten sowieso erst nach Knopfdruck die Ausgänge einschaltet.
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.