Forum: Compiler & IDEs Float in EEPROM


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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) );

}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.