Forum: Compiler & IDEs mal wirds gespeichert mal nicht EEPROM.read


von DAVID B. (bastler-david)


Lesenswert?

Hallo
ich versuche 9 werte wie folgt zuspeichern.

EEPROM.put(0, 12); (12 ist nur ein beispiel werte reichen von 0 bis 15)
EEPROM.put(1, 12);
EEPROM.put(2, 12);
EEPROM.put(3, 12);
EEPROM.put(4, 12);
EEPROM.put(5, 12);
EEPROM.put(6, 12);
EEPROM.put(7, 12);
EEPROM.put(8, 12);

und wieder zu lesen mit:
int eeprom = (0);

eeprom0 = EEPROM.read(0);
eeprom1 = EEPROM.read(1);
eeprom2 = EEPROM.read(2);
eeprom3 = EEPROM.read(3);
eeprom4 = EEPROM.read(4);
eeprom5 = EEPROM.read(5);
eeprom6 = EEPROM.read(6);
eeprom7 = EEPROM.read(7);
eeprom8 = EEPROM.read(8);

Das geht auch teilweise bis zu Nummer 2 geht das auch sauber.
Nummer 3 (wert 4) geht fast immer.
und ab Nummer 4 (wert5) werden die werte selten bis nie gespeichert.
zuerst dachte ich an lese Fehler.
Das konnte ich ausschlissen da die werte teilweise sogar gleich nach dem 
schreiben verschwinden.
Da kahm ich darauf das der speicher vom ATmega2560 mit 4 KB voll sein 
muss.
Kann aber eigentlich auch nicht sein da Byte ja nur 8 bit braucht wäre 
nicht mal 1 KB belegt.

Jetzt meine letzte Vermutung kann es sein das ich zwischen den Adressen 
immer eins oder 2 freilassen muss da es sich um 2 zahlen handelt ?

Oder gibts da noch einen Trick ?
Danke

von pegel (Gast)


Lesenswert?

EEPROM.put ist eine komplexe Funktion.

https://www.arduino.cc/en/Reference/EEPROMPut

Für ein Byte gibt es EEPROM.write()

Siehe Kommentar im Beispiel.

von pegel (Gast)


Lesenswert?

Ach ja: zu put gehört get und update gibt es auch noch.

von och nööö (Gast)


Lesenswert?

DAVID -. schrieb:
> Oder gibts da noch einen Trick ?

Hätte man da das beliebte RTFM mal wieder zitieren sollen?

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.