Forum: Mikrocontroller und Digitale Elektronik Probleme bei EEPROM schreiben bei Mega8


von Chris (Gast)


Angehängte Dateien:

Lesenswert?

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...

von holger (Gast)


Lesenswert?

Lass mal val4 weg;)

von Mr. X (Gast)


Lesenswert?

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.

von Thomas K. (thomas_k39)


Lesenswert?

Oder anders gesagt: nach dem Schreiben von val3 muss addr um 2 erhöht 
werden...

von Chris (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.