Forum: Mikrocontroller und Digitale Elektronik Einstellparameter und Statistik im Eeprom speichern


von Neuling (Gast)


Lesenswert?

Hallo erfahrene Leute,

ich muss viele Parameter und Statistik (256Bytes) im Eeprom speichern.

Wie macht man das am besten:
1- Daten sofort nach Änderung in einem Array (Eeprom_CopyAr: somit habe 
ich eine Copy com Eeprom) schreiben und zum Eeprom schicken

2- - Daten in einem Array (Act_DatenAr) speichern
   - Zycklich beide Arrays (Eeprom_CopyAr und Act_DataAr) vergelichen, 
wenn sie sich unterschieden, die neue Daten zum Eeprom senden.

Bei (1) brauche ich einen Fifo, wo die Schreibaufträge abgelegt werden, 
wenn mehere Daten sich gelichezeitig ändern
Bei (2) wird CPU Zeit verbraucht, da zycklich beide Arrays verglichen 
werden.

von Karl H. (kbuchegg)


Lesenswert?

Die Frage ist: wie oft machst du so einen Speichervorgang, bzw. wie 
kritisch ist es, wenn mal was zb wegen Stromausfall verloren geht.


> Bei (2) wird CPU Zeit verbraucht, da zycklich beide Arrays verglichen werden.

Das ist nicht das Hauptproblem. Das Hauptproblem ist, dass die 
Lebensdauer von EEPROM Zellen begrenzt ist, und man bei AVR's im 
Dauereinsatz, recht schnell an diese Grenze heran kommt, wenn man naiv 
laufend schreibt.

von Neuling (Gast)


Lesenswert?

Vielen Dank für die Antwort.

Also es handelt sicheum einen externen Eeprom (Microchip 24LC), und ich 
werde schon aufpassen das ich nicht sehr oft schreibe, die 
Statistik/Zähler maximal 1/10Sekunden, die Einstellparameter sofort.

Bei Stromausfall dürfen die Daten verloren gehen

von Der (Gast)


Lesenswert?

Falls das Gerät einen Ausschaltknopf hat, der nicht sofort die 
Betriebsspannung unterbricht sondern nur per Elektronik abschaltet (wie 
beim Fernseher etc), dann könntest du auch nur beim Ausschalten 
speichern. Das reduziert die Anzahl der Schreibzyklen deutlich. Ich 
glaube, im Artikel steht da auch was darüber drin.

von Falk B. (falk)


Lesenswert?

@ Neuling (Gast)

>Also es handelt sicheum einen externen Eeprom (Microchip 24LC), und ich
>werde schon aufpassen das ich nicht sehr oft schreibe, die
>Statistik/Zähler maximal 1/10Sekunden,

Hmm, macht nach 10.000 Sekunden ~ 3h Betriebsdauer 100.000 Zugriffe und 
damit sind vielle EEPROMs am ENde ihrer offiziellen Lebensdauer. Selbst 
wenn 1 Million Schriebzugriffe garantiert werden, sind es nur 30 
Betriebsstunden.

>Bei Stromausfall dürfen die Daten verloren gehen

Dann brauchst du keinen EEPROM sondern nur einfach RAM.

von Neuling (Gast)


Lesenswert?

@Falk Brunner schrieb:

> Hmm, macht nach 10.000 Sekunden ~ 3h Betriebsdauer 100.000 Zugriffe und
> damit sind vielle EEPROMs am ENde ihrer offiziellen Lebensdauer. Selbst
> wenn 1 Million Schriebzugriffe garantiert werden, sind es nur 30
> Betriebsstunden.

Stimmt, sollte dann ungefähr 1/10min, oder 1/15min sein

>>Bei Stromausfall dürfen die Daten verloren gehen
> Dann brauchst du keinen EEPROM sondern nur einfach RAM.

gemeint sind nur die letzten eingestellten Parameter (wenn Stromausfall 
während dem Einstellen passiert)

von Gregor B. (Gast)


Lesenswert?

Nimm FRAM von Cypress, das lebt bei 10 Schreibzyklen pro Sekunde 
theoretisch >3000 Jahre (10^12 Zugriffe).

von Karl H. (kbuchegg)


Lesenswert?

Neuling schrieb:

> gemeint sind nur die letzten eingestellten Parameter (wenn Stromausfall
> während dem Einstellen passiert)


Die Parameter sind üblicherweise eh nicht das Problem.
Denn die verändert man die nicht dauernd

Das Problem sind die statistischen Daten, von denen du gesprochen hast.

> Stimmt, sollte dann ungefähr 1/10min, oder 1/15min sein

Also 6 Sekunden.
Immer noch zu häufig.
Geh mal eher in Richtung: jede Stunde
Dann sind wir bei 11 Jahren Durchhaltedauer.

Ob deine Schaltung so lange im Einsatz ist, ist eine andere Frage. Aber 
ins Auge fassen würde ich es. Ich hab noch Elektronik, die 30 Jahre alt 
ist.

von Neuling (Gast)


Lesenswert?

@Karl Heinz Buchegger
>Also 6 Sekunden.
>Immer noch zu häufig.
>Geh mal eher in Richtung: jede Stunde
>Dann sind wir bei 11 Jahren Durchhaltedauer.

wie hast du die 11 J berechnet?

Im Datenblatt steht 1.000.000 Erase/Write Cycles

Bei 1/10min => 10^6 / 6 = 166.666 Std => ~19Jahre
Bei 1/15min => 10^6 / 4 = 250.000 Std => ~28Jahre

Erreichen muss ich 10Jahre.

von Alexander S. (esko) Benutzerseite


Lesenswert?

Neuling schrieb:
> Stimmt, sollte dann ungefähr 1/10min, oder 1/15min sein

Die Schreibweise 1/10min ist ungenau. Karl Heinz fasst das als eine 
Schreiboperation pro (1/10) min auf. Also alle 6 Sekunden.
Neuling meinte wohl 1 Schreiboperation alle 10 Minuten.


Was sind das denn für Statistikdaten? Was ist das für ein EEPROM und wo 
ist das Datenblatt? Wieviel Bytes werden pro Schreibvorgang geschrieben? 
Läuft das Gerät dauernd oder nur intermittierend und wie lange im 
Durchschnitt?

Der Post von 26.07.2013 13:19 mit dem Schreiben direkt nach dem 
Stromausfall ist eine gute Idee bei solchen Sachen.

von Falk B. (falk)


Lesenswert?


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.