Nochmal zum Anfangsproblem. Ich will ja eigentlich gar nicht neu schreiben. Im Normalfall 99,9% der Anwendung wird der Controller gestartet und liest den EEPROM nur aus. Das Überprüfen auf 0xFF habe ich eingebaut, um ein initiales Beschreiben der Speicherstellen sicher zu stellen. Der Controller wird über einen Bootloader programmiert und hat zu Beginn noch nichts im Speicher stehen. Das war der Hauptgrund der Überprüfung. Nun habe ich im konkreten Fall ja bereits seit Monaten mit den Werten gearbeitet und alles war gut.

Ich möchte herausbekommen, was schief läuft. Dabei ist mir egal ob das Magie oder Fehlverhalten genannt wird. Ich schließe nicht aus, dass ich der Verursacher des Fehlers bin, aber wenn ich nicht weiß was da verkehrt läuft, kann ichs nicht ändern.

Was muss passieren, dass mein Programm mit dem gezeigten Codeschnipsel der Meinung ist, dass es den Wert neu schreiben soll, oder was passiert "magisches" das EEPROM Stellen ihre Werte ändern.

Als Beispiel habe ich einen Controller in der zu betrachtenden Box gehabt, bei dem das 0x2C falsch für den VNULL stand und die ID von vorher 01 auf 99 geändert war. Den Controller haben wir getauscht und einen neuen auf 01 adressiert. Nun trat nach einem Einsatz von 1,5 Tagen wieder ein Fehler auf und zwar wurde die ID zu 00 geändert. Mein Code überprüft auf >99 und 0xFF und schreibt bei true die ID auf 99. Das kann also beim ersten Fall passiert sein. Warum auch immer. Aber die ID 00 kann er nicht einfach schreiben. Das hab ich nirgends so programmiert. Jetzt könnte ich sagen, vielleicht hat ja der 2. Controller sowieso einen weg und ich sortiere den mal aus. Dann bleibt immernoch Controller 1 mit dem Fehler in VNULL. Was muss da passieren, dass das auftritt?