Hi ... Ich möchte Daten (Float-Werte) in den EEProm meines AVR´s schreiben. Die Programmiersprache ist C. Ebenso möchte ich diese Daten bei Bedarf wieder auslesen und verarbeiten können. Mit dem Toturial komme ich nicht ganz klar. Mfg Sönke
was gibts da zu verstehen? das muss man doch nur rauskopieren und gut. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Block_lesen.2Fschreiben
1 | //...
|
2 | float myFloat = 12.34; |
3 | |
4 | union { |
5 | float r; |
6 | uint8_t i[sizeof(float)]; |
7 | } u; |
8 | |
9 | u.r = myFloat; |
10 | |
11 | /* float in EEPROM */
|
12 | eeprom_write_block(&(u.i),&eeFooFloat,sizeof(float)); |
13 | |
14 | /* float aus EEPROM */
|
15 | eeprom_read_block(&(u.i),&eeFooFloat,sizeof(float)); |
16 | /* u.r wieder 12.34 */
|
17 | //...
|
Hi, geht nur über einen Umweg da für Float keine Routinen in 'eeprom.h' drin sind. Hier mal ohne Nutzung von Union: #include <avr/eeprom.h> float myEEpromFloat EEMEM; // Float Wert in EEprom float myRamFloat; // Float Wert im Ram int main(void){ // der Variablen im Ram einen Wert zuweisen myRamFloat = 27.68; // Variable aus dem Ram ins EEprom kopieren eeprom_write_block(&myRamFloat,&myEEpromFloat,sizeof(float)); // Variable aus dem EEprom ins Ram kopieren eeprom_read_block(&myRamFloat,&myEEpromFloat,sizeof(float)); } Gruß Rene
Hi, Eine Verständnisfrage: Was bedeutet folgender Ausdruck:
1 | float myEEpromFloat EEMEM; |
vorallem "EEMEM" Gruß Sönke
Beim Einbinden des Headers "#include <avr/eeprom.h>" stürzt AVR - Studio ab. Kann es sein, dass ich in den Konfigurationen dem Linker diesen header noch zugänglich machen muss? Wenn ja mit welchen Einstellungen? Gruß Sönke
Danke, nun geht es. Nun eine Erweiterung. Ich möchte bei Betätigung eines Tasters "Save" den Wert einer Variablen ( z.B. 23.12) ins eeprom schreibe. Mit dem Taster "Read" möchte ich diese wieder lesen. Das klappt auch alles super. Nun möchte ich jedoch folgendes: Ich möchte ein Array anlegen. Es sollen insgesammt 10 Werte gespeichert werden. Es soll auf dem Display so aussehen: 1. Speicher: 23.12 2. Speicher: 99.23 ... 10. Speicher: 11.22 Diese Werte möchte ich über den Taster "Read" aufrufen und verarbeiten. Ich möchte z.B. sagen "Rufe Speicher "3" auf. Wie reallisiere ich das genau? Bzw. könntet ihr mir beim Ansatz helfen? Mfg Sönke
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.