eeprom lebensdauer verlängern

OP (Firma: none) #795236
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
@ 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
Gast
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.
Gast
>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
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.
OP (Firma: none)
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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.