Hallo,
bei einem ATMega64 wurde jede Minute in zwei EEprom Speicherstellen
geschrieben. Normalerweise hält das circa 70 Tage für 100000
Schreibzyklen.
Allerdings war es viel länger über 200000 Schreibzyklen also über 140
Tage.
Was passiert wenn ein EEprom defekt geht? Kann der uC abstürzen, weil er
z.B. die Speicherstelle nicht mehr lesen kann? Kann das schreiben und
lesen des eeprom ab und zu noch funktionieren? Wird der uC langsam und
hängt irgendwo fest?
Programmieren lässt sich das Gerät noch normal. Es tritt ein
sporadischer Fehler auf, denn ich bis jetzt nicht nachvollziehen kann.
Es scheint als steht der UART, die SPI und die I2C. Erst nach einem
Spannungsreset läuft das Gerät wieder. Der Watchdog ist eingeschalten.
Fabian
Meistens äusser sich das in Wirrwar, welches nach dem Schreiben im
EEProm steht, bzw ob das da so steht lässt sich schwer herausfinden, das
Wirrwar kommt beim Lesen zurück.
Schreib doch ein kleines Programm, welches dir immer ein bestimmtes
Bitmuster schreibt von Vorn bis Hinten und wieder ausliest, sobald das
nicht übereinstimmt, lass eine LED leuchten o.Ä.
@ Fabian (Gast)
>bei einem ATMega64 wurde jede Minute in zwei EEprom Speicherstellen>geschrieben. Normalerweise hält das circa 70 Tage für 100000>Schreibzyklen.
Naja, nicht so dolle. Macht man meist eher anders.
http://www.mikrocontroller.net/articles/Speicher#EEPROM_Schreibzugriffe_minimieren>Was passiert wenn ein EEprom defekt geht? Kann der uC abstürzen, weil er>z.B. die Speicherstelle nicht mehr lesen kann?
Nein. Du liest dann nur falsche Daten. Wenn aber dein Programm durch
diese aus dem Tritt kommt, weil keine Fehler/Bereichsprüfung gemacht
wird, dann kann dein uC abstürzen.
> Kann das schreiben und lesen des eeprom ab und zu noch funktionieren?
"Funktionieren" wird es immer, aber die Daten werden verändert. Am Ende
liest du immer nur noch 0xFF, wenn alle Bits kaputt sind.
> Wird der uC langsam und hängt irgendwo fest?
Nein. Siehe oben. Das Programm ist ausserdem im Flash, nicht im EEPROM.
Das sind getrennte Speicher im AVR.
>Programmieren lässt sich das Gerät noch normal. Es tritt ein>sporadischer Fehler auf, denn ich bis jetzt nicht nachvollziehen kann.>Es scheint als steht der UART, die SPI und die I2C. Erst nach einem>Spannungsreset läuft das Gerät wieder. Der Watchdog ist eingeschalten.
Klingt nach dem oben genannten Fehler. Dein Programm verschluckt sich an
unsinnigen Daten.
MfG
Falk
Hi
>bei einem ATMega64 wurde jede Minute in zwei EEprom Speicherstellen>geschrieben. Normalerweise hält das circa 70 Tage für 100000>Schreibzyklen.
Falscher Ansatz. Führe dir mal die AppNote 'AVR101: High Endurance
EEPROM Storage' zu Gemüte.
>Allerdings war es viel länger über 200000 Schreibzyklen also über 140>Tage.
Ist ja auch nur die Mindesthaltbarkeitsdauer.
MfG Spess
@ Fabian (Gast)
>Wenn der Atmel aus dem Tritt kommt, müsste das dann immer sein und somit>nachvollziehbar sein oder?
Ja. Schreib mal testhalber falsche Daten rein und prüfe. Das kann aber
knifflig werden, denn du weisst ja nicht auf welche falschen Daten er
giftig reagiert.
MfG
Falk
Prüfen auf defekte Zellen ist recht einfach:
- Beschreiben aller Zellen mit 0x00
- EEPROM löschen (AVR-Studio)
Die defekten Zellen kommen dann beim Leertest automatisch ans Licht.
Wenn schon Zellen beschrieben wurden, dann einfach löschen (ohne
vorheriges Beschreiben).
Thilo M. schrieb:
> Die defekten Zellen kommen dann beim Leertest automatisch ans Licht.> Wenn schon Zellen beschrieben wurden, dann einfach löschen (ohne> vorheriges Beschreiben).
Dann müsste das AVR-Studio auch einen Fehler bei Programmieren bringen,
dass z.B. das der eeprom - Vergleich beim Programmieren Fehlgeschlagen
ist, oder?
Die eeprom Stellen sind Konfigurationsparameter, wenn beim Auslesen an
dieser Stelle noch das richtige drin steht, sollte noch alles ok sein,
oder? Was anderes kann nicht defekt gehen?
Fabian
> Dann müsste das AVR-Studio auch einen Fehler bei Programmieren bringen,> dass z.B. das der eeprom - Vergleich beim Programmieren Fehlgeschlagen> ist, oder?
So ist es.
> Die eeprom Stellen sind Konfigurationsparameter, wenn beim Auslesen an> dieser Stelle noch das richtige drin steht, sollte noch alles ok sein,> oder? Was anderes kann nicht defekt gehen?
In der Regel bleibt der zuletzt geschriebene Wert im EEPROM, wenn's
defekt ist. Bin aber nicht ganz sicher ob Bits, die noch intakt sind,
noch beschrieben werden können.
Beim Schreiben einer defekten eeprom - Stelle kann dann nur passieren,
das nicht das richtige an dieser Stelle drin steht?
Also es kann nichts weiter schlimmes passieren, wenn man versucht diese
Stelle zu schreiben oder zu lesen? Wie z.B. Atmel stürzt ab weil eeprom
nicht beschrieben werden kann.
Bzgl. Programmieren und eeprom Vergleich mit AVR-Studio - wenn man den
gleichen Wert ins eeprom reinschreibt welcher schon drin steht und das
eeprom an dieser Stelle ist, sollte das Programmieren trotzdem klappen,
oder?
Fabian
Das Programmieren (außer bei defekten Speicherzellen) klappt immer, nur
der Vergleich bringt dann Fehler, also kann der intakte Teil des EEPROMs
ruhig weiterverwendet werden. Dass der AVR abstürzt oder sonst was
passiert wird nicht passieren, er liest einfach falsche Werte aus den
defekten Zellen.
wenn du auf dem atmega noch speicherzellen im eeprom frei hast änder die
adressen die das programm benutzt. dann machts der µC nochmal solange.
und beim nächsten programm implementierst du eine
wear-leveling-funktion!
eigentlich sterben die speicherzellen dadurch, daß die aus ihren
spezifikationen hinauslaufen. idR brauchen sie einfach mehr zeit um
beschrieben zu werden. wenn sie die nicht bekommen (weil die logik davon
ausgeht die gewährte zeit reicht) gibts halt fehler beim schreiben. die
daten-haltezeit dürfte ebenfalls unter der anzahl schreibvorgänge
leiden.