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?
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
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?
Vielleicht eben doch ein Defekt, wenn das EEPROM seine Daten zu schnell verliert!
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.
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.
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... ...
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.
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.
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?
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
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
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 ;)
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.
"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.
> 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. ...
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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.