Forum: Mikrocontroller und Digitale Elektronik Spezialzähler mit Hemming-Distanz 1


von Claus (Gast)


Lesenswert?

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?

von Klaus H. (Firma: HELMGENS Engineering LLC) (klaus_ethiopia)


Lesenswert?

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

von Claus (Gast)


Lesenswert?

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!

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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.

von Stephan (Gast)


Lesenswert?

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.

von Claus (Gast)


Lesenswert?

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.

von Claus (Gast)


Lesenswert?

PS: Der Controller ist ein AT90CAN32

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.