Forum: Mikrocontroller und Digitale Elektronik ATTiny26-EEPROM: Zuverlässigkeit!


von Andi (Gast)


Lesenswert?

Hallo!

Habe in meinem Prog Routinen eingebaut, wo nach jeder
Parameteränderung, also nach Auswahl des Wertes eines Parameters und
dann nach setzen per Knopfdruck, ein Block mit 12 Bytes vom SRAM in das
EEPROM gespeichert wird.
Bei einem Stromausfall oder Reset stehen somit die zuletzt gemachten
Einstellungen wieder zur Verfügung.
Wie zuverlässig ist das EEPRO?
Hat schon mal jemand Probs mit dem EEPROM gehabt?
Kann man in den schon einige 100 male was schreiben, ohne das es Fehler
gibt?
Habe beim schreiben ein Verify eingebaut und bei Abweichung wird bis zu
10 mal das Schreiben wiederholt.

Gruß
Andi

von Fritz Ganter (Gast)


Lesenswert?

Datenblatt Seite 1?

Ich schreib 48mal pro Tag ins EEPROM bisher ohne Fehler.

von Peter D. (peda)


Lesenswert?

"Habe beim schreiben ein Verify eingebaut und bei Abweichung wird bis
zu 10 mal das Schreiben wiederholt."


Das dürfte nichts bringen.
Daß beim Schreiben was schiefgeht, habe ich noch nie gehört.
Man muß natürlich dafür sorgen, daß kein Interrupt dazwischenhaut
zwischen die beiden Schreibbefehle.

Fehler treten immer nur beim Aus- und Einschalten auf.
Brown-Out setzen ist daher Pflicht.

Wenn man absolut sicher gehen will empfehle ich 2 oder 3 Datensätze mit
Prüfbyte (CRC).


Peter

von OldBug (Gast)


Lesenswert?

Und wenn dann noch ein Fehler auftaucht beim Schreiben, dann sollte man
davon ausgehen, daß die max. Schreibzyklen erreicht wurden und das
eeprom austauschen. Bei internem wirds schwierig, da muss man dann den
ganzen Controller tauschen...

von Andi (Gast)


Lesenswert?

Das mit den IRQ´s habe ich berücksichtigt.
Also vor dem setzen von EEMWE und EEWE ein CLI und danach ein SEI.

Das mit dem CRC muß ich mir noch mal überlegen.
Habe nur noch 22 Words im Flash frei. Wird knapp.

@Fritz: Das reicht ja dann für über 5 Jahre.
Wollte hier auch nur Fragen, ob schon jemand früher, nach ein paar 100
Writes, bereits ein Problem hatte.

Gruß
Andi

von Claus Thaler (Gast)


Lesenswert?

Irgendwo bei Atmel oder Microchip gibts ne Application Note, die sich
mit diesem Thema befasst. Man kann über einen Zyklischen Ringpuffer die
Datensätze über das ganze EEProm verteilen und so den Verschleiss
einzelner Bytes verringern, das sollte für die meisten Fälle
ausreichen.

von Andi (Gast)


Lesenswert?

Das Verteilen wird nur schwierig, wenn man das EEPROM so gut wie voll
macht weil man neben den im EEPROM befindlichen Default-Werten an Adr.
00h und der Sicherung der Parameter an Adr. 10h noch 6 Benutzerplätze
ab Adr. 20h per Save-Funktion zur Verfügung stellt.
Na ja, egal.
Atmel gibt mindestens 100.000 Schreibvorgänge an und sollte dann für
Jahrzehnte reichen.

Gruß
Andi

von Gunter (Gast)


Lesenswert?

Hi Andi,

nimm NICHT die Speicherzelle 00h !
Angeblich ist die besonders oft bei Fehlern betroffen.

Ich weiß allerdings nicht, ob das auch für die ATTiny gilt.

Gunter

von Heinz (Gast)


Lesenswert?

Hi,

ist die Zelle 00 nicht nur deshalb besonders betroffen, weil EEAR meist
(da unbenutzt) den Wert 00 enthält?

Irgendwo habe ich aber gehört, dass das Problem hauptsächlich bei den
AT90ern ("Classic-AVR") auftrat, mangels BOD. Tinys und Megas kann
man wohl per BOD davor schützen.

MfG, Heinz

von Gunter (Gast)


Lesenswert?

Hallo Hein,

>Tinys und Megas kann man wohl per BOD davor schützen.
ich bin mir sicher, daß schon berichtet wurde, daß es
trotz BOD bei Megas Probleme gab.

Deshalb laß ich die Zelle 00h lieber aus.

Gruß
Gunter

von Andi (Gast)


Lesenswert?

Wie jetzt, soll das etwa heißen, das wenn im Adressregister 00h drin
steht, alle 8 Bit low also auf GND geschaltet, dass das mehr Strom
braucht beim Schreiben?
Ist das auch beim Lesen der Fall?
Bei Adresse 00h bis 0Fh wird nur bei Programmstart und bei manueller
Ausführung gelesen aber nie geschrieben.
Ist auch nur für Defaultwerte gedacht welche nur von Pony-Prog mittels
EPP-Datei vom Compiler geschrieben werden und dann nie wieder.
Nur von 10h bis 7fh wird geschrieben und gelesen.
Wie macht man das eigentlich mit dem BOD?
Ich weiß nur, das dieses ab einer Spannungsgrenze nach unten einen
Reset durchführt.
Muß man den nur aktivieren und das wars dann?

Gruß
Andi

von Malte Marwedel (Gast)


Lesenswert?

Mit dem Stromverbrauch hat das nix zu tun. Es ist blos bekannt, dass
nach einem nicht ganz sauberen AVR Start (ziemlich egal was das
Programm nun macht) gerne mal die Erste EEProm Speicherzelle mit 0x00
beschrieben wird, also die urspränglichen Daten verloren gehen.
Insbesondere von der AT90S Serie ist dieses Verhalten bekannt. Ich
hatte es aber auch schon mal, dass andere Zellen bei einem fehlerhaften
Prog Start müt Müll überschrieben wurden (AT90S8535).

von Marco (Gast)


Lesenswert?

was ist "Brown-Out"?
und reicht ein kleiner kondensator/gold cap als pufferung aus, um bei
spannungsverlust noch daten ins eeprom schreiben zu können? zb die
letzte uhrzeit beim stromausschalten?

von Malte Marwedel (Gast)


Lesenswert?

>was ist "Brown-Out"?
http://www.mikrocontroller.net/wiki/Brownout

Es kommt ganz auf den Stromverbrauch des Controllers und der Kapazität
des Kondensators an, ob die Zeit ausreicht um Daten zu sichern. Zu
beachten ist hier, dass der Controller mitgeteilt werden muss, dass der
Strom demnächst abfallen wird.

von Andi (Gast)


Lesenswert?

Wegen dem BOD:
Es gibt ja ein Flag in MCUSR für einen Brown-Out welches man testen
kann.
Wenn man dieses Bit regelmäßig prüft, was macht man dann in disem
Fall?
Brown-Out-Reset heißt doch eigentlich, das es einen Reset nach einem
Brown-Out gegeben hat, oder?
Wie kann man in ASM verhindern, das die CPU bei einem Brown-Out
"verrückt" spielt und irgendwas an den Pin´s schaltet?

Gruß
Andi

von Marcus M. (Gast)


Lesenswert?

Hallo Andi,

wenn diese Flag gesetzt ist, dann ists ja schon zu spät!
Der Brown out Zustand ist erreicht worden.

Was nun Brown Out ist?
Ganz kurz erklärt, es kann der Zustand eintreten, das die
Spannungsquelle sehr viel Strom liefern muß - viele Verbraucher an -
und der µC mehr Strom ziehen möchte, als die Quelle zur Verfügung
stellen kann.
Die Quelle versucht diesem "Strommangel" auszuweichen und leider
sinkt dann die Spannung leicht ab. Nun gibts beim TTL aber eine
Schwelle, ab der der Signalzustand indifferent ist. IMHO irgendwas von
2,7V bei einem 5V (VCC) Baustein.
Sollte jetzt im µC aufgrund der gesunkenen Ausgangsspannung dieser
Zustand eintreten, dann wird anstatt einem Befehl aus dem Flash
irgendwas übertragen und somit auch irgendwas gemacht. Aber nicht mehr
das, was Du Dir gewünscht hast. Somit bleibt nur der sichere Reset in
einem solchen Zustand um dem dann entstehenden Choas vorzubeugen. Die
Daten, die in diesem Zustand ins Eeprom geschrieben werden sind
ebenfalls undefiniert!

Du kannst aner einige Statuswerte über den Brown-Out Reset retten.

Gruß Marcus

von Peter D. (peda)


Lesenswert?

Der Power-On-Reset des AVR wird schon bei etwas über 1V inaktiv. Das
reicht dann aber noch lange nicht, damit alle Transistoren ordentlich
arbeiten, d.h. die CPU spielt verrückt und zerstört z.B. den
EEPROM-Inhalt.

Der Bron-Out-Reset ist eine Art Spannungskomparator, der die CPU
solange in Reset hält, bis die Spannung wirklich hoch genug ist zum
sauberen Arbeiten und zusätzlich auch beim Spannungseinbruch
zuschlägt.


Peter

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.