Hi, Wie kann ich variablen vom Typ float in den EEPROM schreiben?? lg, Stefan
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/
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
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.
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,
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.