mikrocontroller.net

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


Autor: dennis (Gast)
Datum:

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

Autor: Anton Wert (antonwert)
Datum:

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

Autor: dennis (Gast)
Datum:

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

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht eben doch ein Defekt, wenn das EEPROM seine Daten zu schnell
verliert!

Autor: Anton Wert (antonwert)
Datum:

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

Autor: TravelRec. (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

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

...

Autor: dennis (Gast)
Datum:

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

Autor: TravelRec. (Gast)
Datum:

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

Autor: Anton Wert (antonwert)
Datum:

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

Autor: dennis (Gast)
Datum:

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

Autor: Der Techniker (_techniker_)
Datum:

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

Autor: dennis (Gast)
Datum:

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

Autor: TravelRec. (Gast)
Datum:

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

Autor: dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, danke. Ich schau mal was sich machen läßt

Autor: Michael (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

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

...

Autor: TravelRec. (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

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

Autor: TravelRec. (Gast)
Datum:

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

Gruß aus´, Harz :)

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.