Go Down

Topic: in EEPROM Float-Variable abspeichern (Read 1 time) previous topic - next topic

Lazybone

Aug 17, 2011, 12:51 am Last Edit: Aug 17, 2011, 10:04 am by uwefed Reason: 1
Hallo,

ich habe bereits alles Mögliche versucht bekomme es aber nicht hin einen float Wert in den eeprom zu schreiben. Hat jemand einen Tipp für mich wie ich dies anstelle?


Gruß
Lazybone

Joghurt

Also man kann ganze Strukturen ins EEPROM schreiben, das geht dann auch mit floats.

Definition:
Code: [Select]

struct StoreStruct {
float fliesskommazahl;
} storage = {
1.0; // Initialwert
}


Speichern:
Code: [Select]

for (unsigned int t=0; t<sizeof(storage); t++)
EEPROM.write(CONFIG_START + t, *((char*)&storage + t));


Auslesen:
Code: [Select]

...
for (unsigned int t=0; t<sizeof(storage); t++)
*((char*)&storage + t) = EEPROM.read(CONFIG_START + t);


Zugriff dann per
Code: [Select]

storage.fliesskommazahl = 7.3;

etc...

Obs einen einfacheren Weg für floats gibt weiß ich nicht, ich hatte es bisher nur mit bytes, ints und longs zu tun und die kann man ganz einfach per EEPROM.write() speichern.

sth77

Das Eeprom kann ja nur Bytes aufnehmen, also muss man sich zur Aufnahme von Floats ein paar Gedanken machen. Beim Atmega328 (Duemilanove und Uno) haben wir 1024 "Speicherplätze" zur Verfügung. Bei einer Fließkommazahl kann man jetzt jede Stelle dieser Zahl separat abspeichern, im Prinzip genau das, was Joghurt vorschlug. Saubere Lösung!
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Go Up