www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Falsche Werte im EEPROM


Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich habe ein Problem mit meinem EEPROM (auf ATMega328p). Ich habe jetzt 
schon mehrmals beobachtet, dass bei schnellem Ein-/Ausschalten (mehrmals 
hintereinander) Werte aus dem EEPROM nicht mehr stimmen. Das ist sehr 
schlecht für meine Anwendung, da ich Adressen abspeichere und dann das 
Gerät im Nirvana ist und ich die Elektronik neu flashen muss. Wie kann 
das sein? Oder besser: Was kann ich dagegen tun?

Vielen Dank für Eure Hilfe!

mfg
Andy

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der EEPROM wird nicht angerührt, wenn du es ihm nicht sagst. 
Höchstwahrscheinlich läuft im Programm gerade ein Zugriff, während du 
ein und ausschaltest.
Das lässt darauf schliessen, dass auf den EEPROM sowieso sehr oft 
zugegriffen wird -> minimieren, da bald schrott.

Auch eine Lösung wäre ein I2C EEPROM, der hat ein Schreibschutz-Pin.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die drei Standartantworten, mit der sich 75% aller Einsteigerprobleme am 
AVR lösen lassen, lauten:

- volatile
- JTAG ausschalten
- brown-out einschalten

Die Antwort auf deine Frage ist dabei ;-)

Oliver

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Nils: Danke! Ich habe auf der Elektronik eine 
Versorgungsspannungsüberwachung, d.h. wenn die Spannung einbricht, 
werden noch Daten in das EEPROM geschrieben. Nur wird das eine Byte, 
dass sich verändert (Adressbyte) beim Abschalten nicht angerührt. Kann 
es dadurch aber trotzdem zu Problemen kommen??
@Oliver: Danke für deine Tipps - werd ich mir gleich durchsehen...

lg

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich kann es daher kommen, wer kann den schon das genaue verhalten 
eines eeproms vorhersagen, wenn der Saft ausfällt? ;)
Keine Zugriffe mehr, sobald die Spannung abfällt.

Eventuell nen dicken Elko für den Controller und ein AND an VCC und dem 
Elko. Den Ausgang auf einen Pin. Sobald der 0 ist, eeprom schreiben.

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, das wär eine Lösung. Nur kann ich hardwaretechnisch nichts mehr 
ändern. Was hältst du davon, dass ich relevante Daten doppelt 
abspeichere und ich daran erkennen kann, ob sie stimmen oder nicht. 
Müsste doch gehen; und die Wahrscheinlichkeit, dass sich beide Bytes auf 
denselben Wert ändern, ist doch gering, oder??

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Möglichkeit, aber doch nicht sehr sicher. Wieso fällt bei deiner 
Schaltung öfters der Saft aus?

Autor: Stefan P. (form)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gab doch mal diesen Atmel-Bug wo beim Einschalten das erste Byte im 
EEPROM gelöscht werden könnte.

Evtl liegt da genau Dein Adressbyte?

Autor: AnotherOne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver schrieb:
> Die drei Standartantworten, mit der sich 75% aller Einsteigerprobleme am
> AVR lösen lassen, lauten:
>
> - JTAG ausschalten

Was hat das mit dem JTAG auf sich, Oliver? Ich habe nämlich ein 
ähnliches Problem, dass ich manchmal falsche Bytes im EEPROM habe.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AnotherOne schrieb:
> Oliver schrieb:
>> Die drei Standartantworten, mit der sich 75% aller Einsteigerprobleme am
>> AVR lösen lassen, lauten:
>>
>> - JTAG ausschalten
>
> Was hat das mit dem JTAG auf sich, Oliver?

Er sagte, dass das die 3 Standardantworten sind, die auf 90% aller 
Fragen passen :-)

In diesem Fall ist es die 3te: Brown Out einschalten.

> Ich habe nämlich ein
> ähnliches Problem, dass ich manchmal falsche Bytes im EEPROM habe.

Probier mal folgendes:
Mach dir im EEPROM ein Dummy-Byte. Am besten als allererste EEPROM 
Variablen, damit sie ganz an den Anfang des EEPROMS kommt. Nachdem du 
deine EEPROM Werte geschrieben hast, beschreibst du noch dieses Dummy 
Byte. Es geht nur darum, dass die EEPROM Adress-Register auf einem Wert 
stehen, an dem keine Nutzdaten von dir liegen, um mehr gehts dabei 
nicht. Wenn Bytes verändert werden, dann an dieser Adresse. Da dort aber 
dein 'unbenutzes' Dummy byte steht, entsteht kein Schaden.

Beitrag "EEprom Schreib / Lese Problem ?"

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.