Forum: Compiler & IDEs Float in EEPROM


von Stefan_h (Gast)


Lesenswert?

Hi,

Wie kann ich variablen vom Typ float in den EEPROM schreiben??

lg,

Stefan

von Peter Fleury (Gast)


Lesenswert?

Auf meiner Homepage gibts unter Winavr-Examples ein Bespiel wie man int
Variablen in EEPROM ablegen und auslesen kann.
Dieses Beispiel anpassen an float variablen sollte ja nicht so
schwierig sein.

http://www.mysunrise.ch/users/pfleury/

von Stefan_h (Gast)


Lesenswert?

Hi,

Wie man 8-bit und 16-bitVariablen abspeichert ist mir klar.

Float sind doch 32-bit lang und ich weis nicht wie ich dem Compiler
sage, dass er sie in einzelne Bytes aufteilen soll.

lg,

Stefan

von Peter Fleury (Gast)


Lesenswert?

Wenn Du die AVR-libc anschaust, sieht du dass es auch eine Funktion
eeprom_write_block() / eeprom_read_block() gibt.

Diese Funktionen können zum speichern von float Variablen verwendet
werden.

von Mark de Jong (Gast)


Lesenswert?

Hallo Stefan,

mit folgende union kannst du dein float als byte oder word lesen oder
schreiben!

float_byte_int tmp;

tmp.value = -12,232;
tmp.byte_val[0..3]
tmp.int_val[0..1]


typedef union
{
 float value;
 unsigned char byte_val[4];
 unsigned int int_val[2];
} float_byte_int;

Grüße Mark,

von Peter Fleury (Gast)


Lesenswert?

Und so kann man EEPROM Beispiel auf Float Variablen erweitert werden:

#define EEPROM_SECTION  _attribute_ ((section (".eeprom")))
float     eeprom_var4  EEPROM_SECTION  = 1.3456; // four byte float

int main(void)
{
  float     floatVar;
  eeprom_read_block( &floatVar, &eeprom_var4, sizeof(eeprom_var4) );

}

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.