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
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.
>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.
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?
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.