Hallo, ich möchte ein paar Werte im EEPROM eines Mega8 speichern, aber habe da ein Problem, aber nur bei einer von 4 Variablen. Ich habe mir deshalb sogar schon ein Testprogram geschrieben. Das liest einen Drehimpulsgeber ein und verändert damit eine Variable. Diese Variable und 3 weitere Werte, die ich nur zum testen ebenfalls aus dieser Variable erzeuge, lasse ich auf einem LCD ausgeben. Wenn ich eine Taste drücke sollen dann meine Werte ins EEPROM geschrieben und zur Kontrolle sofort wieder ausgelesen werden. Bei drei Variablen (eine uint16_t und zwei uint8_t) funktioniert das ohne Probleme, aber bei einer weiteren uint16_t Variable nicht! Meine erste Vermutung war ein defekter bzw. "verbrauchter" EEPROM, da ich damit schon etwas getestet habe. Mit einem neuen Mega8 hab ich aber das selbe Problem. Als nächstes dachte ich an einen Fehler in der Berechnung. Die ist aber so trivial dass es da nicht viele Fehler geben kann. Außerdem hätte ich noch die itoa()-Funktion im Verdacht, mit der ich die Werte zus Ausgabe am LCD umwandel. Da das aber bei der anderen uint16_t-Variable auch klappt würde ich das auch ausschließen. Im Anhang sind meine beiden Funktionen mit welchen ich den EEPROM lese und schreibe. Probleme macht einzig und alleine die Variable "val3". Hier ein paar Beispiele: val | val3-Soll | val3-Ist --------------------------- 0 | 50 | -206 6 | 56 | -200 7 | 57 | 57 13 | 63 | 63 14 | 64 | 320 300 | 350 | 10590 Warscheinlich habe ich nur eine Kleinigkeit übersehen, aber ich komme nicht drauf...
Chris schrieb: > Warscheinlich habe ich nur eine Kleinigkeit übersehen, aber ich komme > nicht drauf... Da bist du auf dem richtigen Weg. Eine Word-Variable hat zwei Byte und nicht eins.
Oder anders gesagt: nach dem Schreiben von val3 muss addr um 2 erhöht werden...
Thomas K. schrieb: > Oder anders gesagt: nach dem Schreiben von val3 muss addr um 2 > erhöht > werden... Macht Sinn... Und funktioniert sogar... Danke :)
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.