Atmega1284p Eeprom verändert einen Wert

OP #5592643
Lesenswert?

Ich habe ein Problem mit dem Atmega1284p.


Es gibt diverse Geräte welche mit dem Atmega1284p als Prozessor laufen. 
Im Konfigurationsmodus wird die Konfiguration (88byte Daten + 2byte 
Flag) ins Eeprom geschrieben und der Inhalt des EEprom verifiziert. Beim 
normalen Start der Geräte werden die beiden Byte Flags ausgewertet 
(diese müssen beide 0x01) enthalten damit das Gerät als "Konfiguriert" 
gilt. Sind diese Flags gültig, werden die 88byte ausgelesen und per CRC 
übeprüft. Ist der CRC Falsch, oder sind die Flags nicht gesetzt wird 
eine Fehlermeldung angezeigt (per LED).

Nun habe ich das Problem das die Geräte im Betrieb die "Konfiguration" 
verlieren, was sich durch blinken der LED's zeigt. Dies passiert 
willkürlich und in keinem belegbaren Muster.

In der Software gibt es bis auf den Konfigurationsmodus nur LESE 
Zugriffe auf das EEPROM. Der Konfigurationsmodus ist nur auf spezielle 
Weise erreichbar, die Chance das die Geräte diesen "unabsichtliche" 
betreten ist sehr unwarscheindlich, vorallem da vor dem schreiben die 
gesetzen Werte auf korrektheit geprüft werden.

Ein spezieller Modus darf das Gerät auf unkonfigruiert setzen, hierzu 
wird 00 in die Flag-Bytes geschrieben.

Einie tests ergaben, das es es jeweils nur die Flags "zerstört", die 
Datenbytes (Adresse 0x10 aufwärts) sind Einwandfrei, nur die Flags in 
0x08, 0x09 werden zerstört was bedeuted das diese 0xFF aufweisen. Der 
"ResetModus" kann auch nicht die Ursache sein, da dieser 0x00 schreiben 
würde.

Hat jemand eine Idee wie so etwas zu Stande kommen kann?
#5592691
Lesenswert?

Vielleicht geht die Versorgungsspannung zu langsam hoch oder nieder und 
der Brownout ist nicht konfiguriert. Versuch das mal um zu sehen ob sich 
da was ändert. Das wäre das erste wonach ich ausschauen würde. Lies auch 
das Datenblatt diesbezüglich. Langsame Stromversorgung hat nicht das 
erste Mal einigen Leuten Probleme bereitet.

Ich arbeite viel mit dem 1284 und kann Dein Problem mit dem EEPROM nicht 
nachvollziehen. Ist 100% zuverläßig. Brownout ist bei mir allerdings 
immer konfiguriert und eingeschaltet.

Notfalls hilft ein externer uC Supervisor wie ein MCP120.
(Firma: Funkenflug Industries) #6121901
Lesenswert?

Auch wenn der Thread schon sehr alt ist:

Einen externen Supervisor oder Reset-IC braucht man bei den AVRs nicht, 
denn genau dazu ist die BOD ja da. Man muß sie eben nur einschalten.

Ich hatte beim AVR auch erst ein einziges Mal Probleme mit korrupten 
EEPROM-Daten und das war ein logischer Fehler im Programm (Signaturbytes 
als Erkennungszeichen für ein frisch initialisiertes/leeres EEPROM am 
Anfang des Löschzyklus geschrieben und nicht am Ende, das gab dann 
Probleme wenn dieses Löschen durch einen Reset oder Abschalten 
unterbrochen wurde weil dann Datenreste im EEPROM zurückblieben). 
Niemals durch Probleme mit der Betriebsspannung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren