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
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.
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
@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
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.
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??
Eine Möglichkeit, aber doch nicht sehr sicher. Wieso fällt bei deiner Schaltung öfters der Saft aus?
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?
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.
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 ?"
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.