Gast
#262544
Hallo, kennt jemand eine elegante Methode, einen float - Wert in einem EEPROM speichern und später wieder auszulesen? Mein Problem ist die Wandlung von float in 4 x 8 Bit und wieder zurück (unter C).
|
Anzeige
|
float - Wert in EEPROM speichern
Gast
#262544
Hallo, kennt jemand eine elegante Methode, einen float - Wert in einem EEPROM speichern und später wieder auszulesen? Mein Problem ist die Wandlung von float in 4 x 8 Bit und wieder zurück (unter C).
Gast
#262545
welcher MC? Welcher Compiler? Interner oder externer EEPROM?
Gast
#262546
MC: Fujitsu MB90F352 Compiler: Softune EEPROM ist über I²C - Bus angebunden Mein Problem ist aber nicht das speichern oder ansprechen, sondern die Umwandlung.
Gast
#262547
hallo bastler, wenn du einen float-wert abspeichern möchtest brauchst du einfach nur einen zeiger auf den float-wert, castest diesen auf char und kannst wieder byte-weise arbeiten. float f; char *ptr = (char*) &f; write_eeprom (adress + 0, *ptr++); write_eeprom (adress + 1, *ptr++); write_eeprom (adress + 2, *ptr++); write_eeprom (adress + 3, *ptr++); so sollte es funktionieren. das auslesen funktioniert ähnlich : float f; char *ptr = (char *) &f; *ptr++ = read_eeprom (adress + 0); *ptr++ = read_eeprom (adress + 1); *ptr++ = read_eeprom (adress + 2); *ptr++ = read_eeprom (adress + 3); wenn ich keinen tipp-fehler gemacht habe sollte es funktionieren gruß rene
Gast
#262548
@TheMason: Danke für die schnelle Hilfe, das sieht gut aus und der Compiler hat auch nicht gemeckert. Testen kann ich die Funktionen erst, wenn ich Platine geliefert bekomme.
Gast
#262549
Kein Problem. Funktioniert auch für alles andere (double, long, structs) :-)
Gast
#1744212
Hallo, tut mir leid, dass ich das Thema wieder aufgreife, aber bei mir tuts nicht und ich verzweifle seit Tagen an dem Problem! :( Ich möchte mal ein kleines Projekt starten! Dieses wird ein Elektrinisches Sparschwein! Die Geldwurfanlage und so weiter ist noc in Arbeit, es happert am Programm! Ich benutze einen ATMEGA16L8 so wie das AVRStudio 4.18 SP2 und das AVR-Starterkit STK500 zu testzwecken. Angeschlossen sind im Moment die 8 Taster um die Münzen zu simulieren! Der Speicher ist eine (double) Variable, die ich einem I²C EEPROM (ST24C02) speichern möchte, damit der Speicher erhalten bleibt, wenn der Strom ausgeschaltet wird. Um die Funktion des EEPROMs zu testen schreibe ich den Startwert rein und lese ihn anschliessend wieder aus, um damit weiter zu arbeiten! Jedoch schreibe ich eine 10.00 rein und bekomme immer wieder 12.08 raus!?! Bei anderen Versuchen meines Programms bekam ich andauernd 0.00 raus!?! Hier der wichtige Teil des Codes:
Meine Funktionen sind:
Gregor schrieb: > Hallo, > > tut mir leid, dass ich das Thema wieder aufgreife, aber bei mir tuts > nicht und ich verzweifle seit Tagen an dem Problem! :( Dann fang einen neuen Thread an. Du hast noch nicht mal denselben Prozesser wie der um den es in diesem Thread geht. PS: float ist völlig ungeeignet wenn es um Geldwerte geht. |
Anzeige
|