www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik eeprom lebensdauer verlängern


Autor: Heinrich Huber (Firma: none) (woldo)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: Michael (Gast)
Datum:

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

Autor: OliverSo (Gast)
Datum:

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

Autor: Andreas K. (a-k)
Datum:

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

Autor: Heinrich Huber (Firma: none) (woldo)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0xFF

Autor: Heinrich Huber (Firma: none) (woldo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank für eure Hilfe!

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.