mikrocontroller.net

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


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: akw (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.