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
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.
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.
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.
@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.
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.
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.
> 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.
Darf ich mal nachfragen, wie deine Schätzung bezüglich derAnzahl und Frequenz der Zustandswechsel lautet?
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)
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
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.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.