Forum: Mikrocontroller und Digitale Elektronik eeprom 16 bit Wert in C


von Dirk Lantzsch (Gast)


Lesenswert?

Hi,

ich will in meinen Atmega128 einen integer Wert im eeprom ablegen. Das
scheint auch zu gehen. Aber wenn ich ihn auslese bekomme ich zwar nen
16bit Wert, aber das LOW Byte ist immer 0. Mit char Werten
funktionierts immer.
Wenn ich jetzt irgendeine integer Variable definiere (!!nicht im
eeprom!!) dann funktionierts.
Womit zum geier hängt das zusammen?

Dirk.

von Dirk Lantzsch (Gast)


Lesenswert?

Haalllooooo,

jemand ne Ahnung?

Dirk.

von Robert (Gast)


Lesenswert?

Hallo Dirk,

das EEP funktioniert nur Byteweise. Schreibe einfach 2 Bytes (einzeln
und auf unterschiedliche Adressen) und setze dir dann dein Word oder
integer daraus zusammen.

Gruß Robert

von Alex (Gast)


Lesenswert?

Wenn du Held deinen Code mit angegeben hättest, wäre bestimmt schneller
eine Reaktion erfolgt.

von Philipp Sªsse (Gast)


Lesenswert?

Oder gar seinen Compiler. Ob der Compiler 16-Bit-Werte im EEPROM zuläßt,
ist schließlich seine Sache; die byteweise Aufsplittung ist dann seine
Aufgabe. (Wenn er es nicht tut, sollte er natürlich einen Fehler oder
mindestens eine Warnung bringen. Aber tut er das? Können wir es wissen,
wenn wir den Compiler nicht kennen?)

von Dirk Lantzsch (Gast)


Lesenswert?

@Robert: danke. Aber das ist die aller letzte Option für mich.

@die anderen:
Es ist der ImageCraft C Compiler in der Version 6.30B. Und Laut Hilfe
im Compiler sollte es gehen. Es geht Ja auch, aber eben nur wenn ich
eine Variable (!!nicht im eeprom!!) zusätzlich definiere. Und genau das
ist es was mich verwundert.

Wenn ihr keine Ideen habt, sagt trotzdem bescheid, dann stell ich den
relevanten Source noch rein.

Dirk.

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.