Forum: Mikrocontroller und Digitale Elektronik eeprom lebensdauer verlängern


von Heinrich H. (Firma: none) (woldo)


Lesenswert?

Hallo,

Habe schon in alten Threads gestöbert, leider nichts gefunden.
Ich würde gerne einen Ring-puffer programmieren um die Lebensdauer des 
EEPROM zu verlängern.
Es wird jeweils nur ein Byte oder max. 2Byte ins EEPROM geschrieben. Ich 
würde es nun so machen, dass ich das Register jedesmal um 1 bzw. 2 
erhöhe. Jedoch weiß ich dann nach einem Reset ja nicht mehr in welchem 
Register sich mein Byte befindet, oder? Wenn ich mir die Adresse 
abspeichere beschreib ich wieder ein Register "öfter".
Kann mir da wer helfen wie man das generell löst? Oder schicke ich 
einfach einen Suchalgorithmus drüber?

MfG
woldo

von Falk B. (falk)


Lesenswert?

@ Heinrich Huber (Firma none) (woldo)

>erhöhe. Jedoch weiß ich dann nach einem Reset ja nicht mehr in welchem
>Register sich mein Byte befindet, oder? Wenn ich mir die Adresse
>abspeichere beschreib ich wieder ein Register "öfter".

Das ist OK. In eine feste Adress schreibst du immer die Adresse der 
Daten, praktisch ein Pointer. Bei jedem neuen beschreiben der Daten wird 
auch ein Zähler im EEPROM erhöht. Wenn der Zähler bei 100.000 oder so 
angekommen ist, wird der Pointer im EEPROM erhöht und die Daten danach 
in neue Zellen geschrieben. Die Adresse wird damit nur alle 100.000 
Schreibzugriffe neu geschrieben. Da sie selber auch 100.000 und mehr 
Schreibzugriffe aushält kannst du dann 100.000 x 100.000 = 10 Milliarden 
Schreibzugriffe auf das EEPROM verwalten. Das sollte reichen.

MFG
Falk

von Michael (Gast)


Lesenswert?

Ist jetzt vielleicht eine völlig andere Lösung, aber wenn die Hardware 
noch nicht fix ist, würde ich einfach ein FRAM anstelle des EEPROMs 
nehmen. Die sind pinkompatible, beschreibbar wie ein RAM und halten 
ewig.

von OliverSo (Gast)


Lesenswert?

>Kann mir da wer helfen wie man das generell löst? Oder schicke ich
>einfach einen Suchalgorithmus drüber?

guggst du bei Atmel unter:
AVR101: High Endurance EEPROM Storage

Oliver

von Andreas K. (a-k)


Lesenswert?

Variante, besonders geeignet wenn die Datensätze immer gleich lang sind: 
Bestandteil eines ins EEPROM zu schreibenden Datensatzes ist eine 
laufende Nummer. Beim Start des Controllers wird das EEPROM nach der 
höchsten laufenden Nummer durchsucht. Direkt dahinter geht es dann 
weiter.

Hier hiesse das beispielsweise: 2 Bytes laufende Nummer (Überlauf 
berücksichtigen), 2 Bytes Inhalt.

von Heinrich H. (Firma: none) (woldo)


Lesenswert?

Hallo,

@Michael:
Hardware besteht schon.

@Andreas Kaiser (a-k)

Ja, so hätte ich es mir auch vorgestellt=> "alle" durchsuchen
Wissst ihr Zufällig welche Standartwerte die Register haben ohne dass 
sie beschrieben wurden?

von Falk B. (falk)


Lesenswert?

0xFF

von Heinrich H. (Firma: none) (woldo)


Lesenswert?

vielen dank für eure Hilfe!

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.