Float in EEPROM

Gast #75028
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
Gast #75030
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,
Gast #75031
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) );

}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.