Forum: Mikrocontroller und Digitale Elektronik Eeprom auf Fehler prüfen


von Ralf (Gast)


Lesenswert?

Hallo,
ich möchte bei einem Zustandswechsel den aktuellen Zustand meines AVR
tinys in eine Eepromzelle speichern. So kann ich nach einem Reset
wieder in den entsprechenden Zustand springen.
Da wohl während der Lifetime des Gerätes die 100000 garantierten
Schreibzyklen überschritten werden möchte ich die defekte Zelle
erkennen und die nächte Zelle verwenden.

Meine erste Idee ist eine 2 aus 3 Struktur...Ich speichere den Wert in
3 aufeinanderfolgende Zellen. Nach einem Reset untersuche ich die
Zellen auf gleichheit und verwende bei einem defekt die nächsten drei
Zellen.

Einfacher und schöner fänd ich es aber nur eine Zelle zu beschreiben
und gleich zurückzulesen. Bei fehlerhaften Wert verwende ich die
nächste Zelle.
Was aber passiert, wenn die Zelle sich zwar beschreiben lässt, ihren
Wert bei Stromlosigkeit nicht hält!? Gibt es diese Fehlererscheinung
beim sterben einer Zelle überhaupt oder kann ich das ausschliessen?

hoffe auf eure Meinung

von johnny.m (Gast)


Lesenswert?

1.: Die Zahl "100000" gibt den Wert an, bei dem der Hersteller noch
garantiert, dass es funktioniert. In der Realität dürften es wesentlich
mehr Zyklen sein.

2.: Nimm eine EEPROM-Zelle als Zähler, in der die Adresse der benutzten
Speicherzelle steht. Dann mach Deine Prüfung (schreiben, zurücklesen und
vergleichen). Wenn die Werte nicht übereinstimmen, erhöhst Du den Zähler
um eins und speicherst die Variable in der nächsten Zelle. Da die
Zählvariable nur geschrieben wird, wenn eine andere Zelle defekt ist,
können mindestens 100000 Zellen kaputtgehen, bevor Deine
Zählvariablenzelle den Geist aufgibt.

von akw (Gast)


Lesenswert?

Soweit ich weiß darfst du einfach nicht immer in die gleiche Zelle
schreiben, sondern jedes mal Weiterrücken. D.h. das sich die
Schreibzyklen noch mal um einen beträchtlichen Fakter erhöhen.

von Ralf (Gast)


Lesenswert?

Hallo,
danke für Deine Antwort. So wie Du beschreibst mache ich es ja mit
meiner 2aus3 Strukur.
Ich frage mich aber trotzdem ob ein Fehler des EEProm nicht auch sein
könnte, dass es sich zwar beschreiben lässt, aber den Wert bei
Stromlosigkeit nicht behält.

von johnny.m (Gast)


Lesenswert?

@akw:
Klar, irgendwo muss aber auch abgelegt sein, in welcher Zelle der
aktuelle Wert steht. Und da ist es sicher am einfachsten, die Variante
mit Zähler zu nehmen und dann eine andere Zelle zu benutzen, wenn eine
fehlerhaft ist. Wenn man bei jedem Zugriff eine andere Zelle nimmt,
brauchts auch einen Zähler, der aber auch bei jedem Zugriff geändert
werden muss, wodurch er dann genau so schnell unbrauchbar wird wie der
Rest. Und damit hat man nix gewonnen.

von Ralf (Gast)


Lesenswert?

weiterrücken hat den Nachteil, dass ich eine Zelle mit dem Zählerstand
brauche...Diese wird dann bei JEDEM weiterrücken beschrieben und
erreicht als erste die 100000er marke.

von Sonic (Gast)


Lesenswert?

Ich würde die Zelle nur beschreiben wenn der Inhalt differiert. das
erhöht die Lebensdauer schon mal. Und dann, wie oben schon beschrieben,
zurücklesen ob der geschriebene Wert korrekt ist. Falls nicht: die
nächste Zelle benutzen. Als 'Adress-Speicher' für die aktuelle
Speicherzelle würde ich eine weitere Zelle (oder 2) festlegen.

von johnny.m (Gast)


Lesenswert?

> dass es sich zwar beschreiben lässt, aber den Wert bei Stromlosigkeit
> nicht behält.

Wäre mir neu. Wenn es sich beschreiben lässt und Du den selben Wert
auch zurücklesen kannst, dann sollte er sicher gespeichert sein und
auch bei Stromlosigkeit erhalten bleiben.

von Karl H. (kbuchegg)


Lesenswert?

Darf ich mal nachfragen, wie deine Schätzung bezüglich derAnzahl
und Frequenz der Zustandswechsel lautet?

von Läubi (Gast)


Lesenswert?

du kannst auch immer folgendes machen:

FF = leer, du suchst den ersten Wert != FF das ist dein Wert.
Wenn du einen neuen schreibst stellst du die aktuelle Zelle auf FF und
schreibst den Wert in die nächsten. so wird jede zelle nur... alle 512x
beschrieben (je nach verfügbarem EEprom)

von Ralf (Gast)


Lesenswert?

Hallo Karl-Heinz das ist natürlich schwer zusagen aber ich denke mit
50-60 Zustandswechsel muss ich pro tag schon rechnen...naja eigentlich
vielleicht ein wenig übertrieben über die nächsten 5 jahre hinaus zu
planen...aber ich bin halt en gründlicher...immerhin zeichnet das die
deutschen Produkte in der Welt aus g

von Karl H. (kbuchegg)


Lesenswert?

Rechne doch mal nach.

50 - 60 Zustandswechsel pro Tag.
100000 Wechsel hast du schlechtestenfalls zur Verfügung.
Bei 60 am Tag reicht das für  1666 Tage.
Das macht 4,5 Jahr.
Und das bei ununterbrochenem Dauereinsatz und jeden Tag 60
Zustandswechsel.
Wobei sich der zu speichernde Wert auch wirklich ändern muss. Es
ist trivial den Schreibzyklus auszulassen, wenn der zu schreibende
Wert schon gespeichert ist.

Und das ist schlechtestenfalls! Atmel garantiert für 100000 Zyklen.
In der Praxis liegen die Werte normalerweise wesentlich höher.

von Karl H. (kbuchegg)


Lesenswert?

> aber ich bin halt en gründlicher...immerhin zeichnet das die
> deutschen Produkte in der Welt aus

Zumindest haben sie (noch) diesen Ruf(*)
Aber: man kanns auch übertreiben.


(*) 'Made in Germany' verliert schön langsam dieses Gütesiegel.
Viele Produkte sind qualitativ nicht mehr das was sie mal waren
kosten aber immer noch ne Menge mehr als die der Konkurenz.

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.