Hallo, es besteht folgendes Problem: Ich muss in einem µC Ereignisse Zählen die zwingend sofort in dem internen EEPROM Bereich gespeichert werden müssen. Also ein fortlaufender Zähler. Der Zähler soll insgesamt bis zu 80 Mio Zählereignisse Speicher. In einem µC stehen dazu 1k Byte EEPROM zur Verfügung, welcher Byteweise geschrieben werden kann. Nun garantiert der Hersteller min. 100k Schreibzyklen auf den EEPROM. Daher kann man leider keinen einfachen 32 Bit Zähler bauen der dann jedes mal um 1 hochgezählt wird. Nun hat man ja, wenn man jedes Byte einzeln 100k mal schreibt, insgesamt rund 100 Mio Schreibzyklen zur Verfügung. Hat man nun einen 32 Bit Zähler, so benötigt man 4 Bytes. Wenn man nun einen Zähler hat, der von Zählschritt zu Zählschritt einen Hamming-Abstand von 1 aufweist, dann ändert sich jeweils nur 1 Bit. Daher muss man nur eines der 4 Byte ändern (schreiben). So z.B. bei einem Gray-Zähler gegeben. Jetzt suche ich einen Zähler der zusätzlich noch die Bitänderungen auf die 32 Bit gleichmäßig verteilt. Dann könnte ich den Zähler von 0 bis 400k zählen lassen, wobei sich die Anzahl der Schreibzyklen für jedes Byte auf 100k verteilen. Bei einem Zählerstand von 400k wird einfach auf die nächsten 4 Byte gewechselt und wieder von 0 bis 400k gezählt. Hat jemand schon mal so einen Zählertyp gesehen?
Hi, ein erster Gedanke: Nimm doch ein externen Speicher (Dallas DS1245 - unlimited Cycles) In welcher Zeit werden den die 80 Mio. erreicht? Speicher bleibt bis zu 10 Jahre ohne Strom erhalten. Ansteuerung mit AVR moeglich..... LG aus Addis Ababa Klaus
Klaus Helmgens schrieb: > Nimm doch ein externen Speicher (Dallas DS1245 - unlimited Cycles) Aber wozu? Mit dem internen EEPROM muss es doch auch gehen. ... Und dazu noch ein so großes Bauteil (Anzahl der Pins). Als externes Bauteil könnte man dazu alternativ auch ein FRAM von RAMTRON verwenden. 10^12 Zyklen und 45 Jahre Speichererhalt. Es muss schon die interne Lösung sein!
http://de.wikipedia.org/wiki/Gray-Code Davon ab spielt es eine Rolle, wie der EEPROM intern organisiert ist, d.h. ob beim Schreiben eines Bytes wirklich nur ein Byte neu geschrieben wird oder automatisch ein ganzer Block.
1000 Byte der Reihe um jeweils eins erhöhen, bis auf 255 > 255.000 2 Byte für den Offset (jeweils beim Überlauf erhöhen) > Wertebereich > 16 x 10^9 für 80 Mio müssen die Offset-Bytes ca. 314 mal beschrieben werden die 1000 übrigen Bytes jeweils 80.000 mal Geht aber natürlich nur wenn auch wirklich Byteweise geschrieben wird.
Stephan schrieb: > Geht aber natürlich nur wenn auch wirklich Byteweise geschrieben wird. Danke für den Tipp. Der Ansatz ist gut. Im Datenblatt steht folgendes: The EEPROM array is programmed one byte at a time by supplying the address and data together with the appropriate Write instruction. An EEPROM memory location is first automatically erased before new data is written. ... In a chip erased device, no 0xFFs in the data file(s) need to be programmed.
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.