Forum: Mikrocontroller und Digitale Elektronik AVR Eeprom unzuverlässig. Was tun?


von dennis (Gast)


Lesenswert?

Hi,
ich habe festgestellt das das Eeprom ab und zu Daten verliert. Ich hab
auch schon gelesen das das bei zu langsam ansteigender
Versorgungsspannung passieren soll. Ich hab schon die Brown Out
Detection aktiviert, aber das reicht offensichtlich nicht.

Was kann ich da tun?

von Anton W. (antonwert)


Lesenswert?

also entgegen meiner schnellen und oberflächlichen Lösung - gibt's net,
wenn doch Baustein deffekt,

würde ich dir zu einem externen Reset Baustein raten z.B. was von
Maxim, damit dürften sehr langsam ansteigende Spannungen kein Problem
mehr sein

von dennis (Gast)


Lesenswert?

Defekt is da nix. Er läßt sich ja wieder programmieren und funktioniert
ein paar mal. Sieht so aus als ob da immer nur einzelne Bits kippen
würden.

Wie schnell sollte die Spannung denn ansteigen?

von Unbekannter (Gast)


Lesenswert?

Vielleicht eben doch ein Defekt, wenn das EEPROM seine Daten zu schnell
verliert!

von Anton W. (antonwert)


Lesenswert?

Gegenfrage: wie langsam steigt sie denn an?
Also ca. 1V/s waren eben hier kein Problem...

Hast du nur mal zur Sicherheit den Baustein getauscht, und mit nem Oszi
die Betriebsspannung nachgemesssen?
Und:
- was macht der Reset Pin?
- welches Layout? (oder Steckbrett,...)
- 100nF vorhanden?
- Welcher Baustein (Bezeichung)

Ddiese und mehr Infos sind sicher hilfreich bei der Problemlösung.

von TravelRec. (Gast)


Lesenswert?

Ihc würde eher zu einem Programmfehler tendieren. Bei zu langsam
steigender Versorgung wirkt ja gerade der Brown-Out-Detektor und das
sehr zuverlässig. Der Ansprechwert sollte aber immer über der
mindestens angegebenen Grenze liegen, also bei schell getaktetem
Prozessor auch bei mindestens 4,3V (also Brown-Out Maximum). 2,7V
funktioniert nur bei den V-Prozis und nur bei Takten bis max. 4Mhz.

von Hannes L. (hannes)


Lesenswert?

Mein Schutz bei den alten Classic-AVRs war:
- Zelle 0 nie benutzen
- Nach jedem Zugriff auf EEPROM das EEAR-Register wieder auf 0
  setzen, so dass Störungen immer nur die unbenutzte Zelle 0
  versauen...

...

von dennis (Gast)


Lesenswert?

Programmierfehler dürfte eigentlich keiner vorliegen. Spannung usw
sollte eigentlich auch i.O. sein. Ist ein Mega32.

Das Problem tritt immer nur beim Einschalten auf und da schreibe ich
nicht in das Eeprom

Im Datenblatt gibts das Kapitel Preventing EEPROM Corruption

Zitat: Secondly, the CPU itself can execute instructions incorrectly,
if the supply voltage is too low.

Entweder hab ich beim Einschalten der Brown Out Detection gemacht (Mit
dem AVR Studio und STK500, sollte also kein Problem sein) oder ich hab
irgend ne Situation in der das nicht reicht.

von TravelRec. (Gast)


Lesenswert?

Mit aktiviertem und korrekt eingestelltem Brown-Out darf der Fehler
nicht auftreten, egal was die Spannung macht. Und das
EEPROM-Write-Enable-Bit wird auch hardwareseitig zurückgesetzt, also
kann´s eigenlich nur ein Programmfehler sein (unbestimmter Aufruf der
EEPROM-Write-Routine, vielleicht durch einen beim Power-Up zu früh
gestarteten Interrupt) oder der Brown-Out ist nicht richtig gefused.
Bei mir laufen etliche Tiny2313 und Mega16 in fiesen Umgebungen
(Modellbau) mit o.g. Einstellungen und noch nie ist ein Bit gekippt.

von Anton W. (antonwert)


Lesenswert?

Programmierfehler dürfte eigentlich....
sicher? also Programm auf das wesentliche reduziert?

Ist die Situation denn reproduzierbar? Und trat sie etwa auf als gerade
geschrieben wurde?

von dennis (Gast)


Lesenswert?

Reproduzierbar ist eigentlich nur das es immer beim Einschalten
passiert. Aber mal passiert's zwei mal hintereinander, dann 20x gar
nicht.

Naja, werd mal weiter Fehler suchen. Ich hab halt nur was im Ohr das
das ne Schwachstelle bei den AVR ist/war. Kann natürlich sein das das
nur bei den alten ein Problem war und hier die Ursache ganz wo anders
liegt

von Der T. (Gast)


Lesenswert?

Also wir nutzen das interne EEPROM grundsätzlich nicht zur
Kundendatensicherung, weil ein defekt einen neuen Prozessor erfordert.
Da diese ausschließlich SMD sind, ist ein wechseln deshalb aufwendig
und zeitraubend (=Geld).

Aus diesem Grund verwenden wir in der Firma nur gesockelte, serielle
EEPROMs! ;)

Im internen EEPROM legen wir nur Werte ab, die eigentlich nie verändert
werden (z.B. Seriennummer, Prüfstatus der Fertigung, Prüferkennung,
Revision, evt..)

Der ist bei einem defekt in 10sek gewechselt! ;)

Gruß,
Techniker

von dennis (Gast)


Lesenswert?

Ich schreibe ja auch nicht permanent rein. Sollen nur ein paar config
Sachen abgespeichert werden. Außerdem hab ich keine Kunden zu denen ich
fahren müsste um es auszutauschen ;)

von TravelRec. (Gast)


Lesenswert?

Adressiere mal andere Speicherstellen im EEPROM, wenn die auch kippen,
ist´s eindeutig ein Programm/Interruptproblem. Die alten 90Sxxx Prozis
löschten vornehmlich Zelle 0, bei den Megas ist der Fehler durch
internes Brown-Out abstellbar - wie gesagt.

von dennis (Gast)


Lesenswert?

ok, danke. Ich schau mal was sich machen läßt

von Michael (Gast)


Lesenswert?

"Das Problem tritt immer nur beim Einschalten auf ... "

Nach meiner Erfahrung können die Fehler beim Ausschalten auftreten; man
sieht sie dann zwar erst beim nächsten Einschalten, aber die Ursache ist
nicht der Einschalt- sondern der Ausschaltvorgang ! Neuere Bauteile sind
offenbar stabiler, zuvor kippten leere FFs nach F7 um: sehr ärgerlich.
Vielfach habe ich die Daten dreifach gespeichert und mit Prüfsumme
versehen, um sie dann beim Einschalten wieder korrigieren zu können.

Diese Effekte treten manchmal auch bei externem EEPROM und Flash-EPROM
auf; der sicherste Speicherort war bislang immer noch das
batteriegepufferte RAM.
Bei 'wichtigen' Daten mache ich daher grundsätzlich die beschriebene
Fehlerkorrektur.

von Hannes L. (hannes)


Lesenswert?

> Die alten 90Sxxx Prozis löschten vornehmlich Zelle 0

Ich habe beim AT90S2313 die Erfahrung gemacht, dass die Zelle verändert
wurde, auf die das Adressregister zeigte. Da das beim Einschalten immer
auf 0 stehen sollte, muss es also auch beim Ausschalten passieren
können.

...

von TravelRec. (Gast)


Lesenswert?

Das kann durchaus sein, Hannes, aber eben nicht mit aktiviertem und hoch
eingestelltem (also auf 4,3V) Brown-Out-Detektor. Bei meinen Tinys und
Megas jedenfalls bislang nicht. Und ich nutze den internen EEPROM schon
recht viel und gerne. Bei mehreren Tests mit langsam ein- und
ausfadenden Versorgungsspannungen habe ich immer beobachten können, daß
die Prozis bei etwas über 4V den Dienst ordnungsgemäß einstellten und
ein paar 10 Milivolt darüber wieder anfingen mit Ticken. Keine
EEPROM-Probleme verzeichnet. Testhalber mit ausgeschaltetem BrownOut
liefen teilweise nicht mal die Prozis an und auch der EEPROM nahm
gelegentlich "Schaden". Also Das BOD-Teil hat schon seinen
praktischen Nutzen. Ach so, bevor ich´s vergesse: ich betreibe alle
Prozis bei mir mit entsprechenden 100nF Keramikpillen und 10µF Tantals
in der Hauptstromversorgungsleitung zum Prozi nach Masse.

von Hannes L. (hannes)


Lesenswert?

Knut, was du schreibst ist alles richtig. Ich bezog mich aber auf den
AT90S2313, der hatte leider noch kein BOD.

Gruß aus dem Raum MD...
...HanneS...

von TravelRec. (Gast)


Lesenswert?

Naja klar - aber wir wollen doch mit der Zeit gehen ;-) Prozessor ohne
Brown out... ts ts ts...

Gruß aus´, Harz :)

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.