mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEprom lesen und schreiben bei AVR


Autor: Sönke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: fnah (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was gibts da zu verstehen? das muss man doch nur rauskopieren und gut.

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
//...
   float myFloat = 12.34;
 
   union {
      float r;
      uint8_t i[sizeof(float)];
   } u;
 
   u.r = myFloat;
   
   /* float in EEPROM */
   eeprom_write_block(&(u.i),&eeFooFloat,sizeof(float));
 
   /* float aus EEPROM */
   eeprom_read_block(&(u.i),&eeFooFloat,sizeof(float));
   /* u.r wieder 12.34 */
//... 

Autor: Rene Zimmermann (renezimmermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sönke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Eine Verständnisfrage:

Was bedeutet folgender Ausdruck:
 float myEEpromFloat EEMEM; 

vorallem "EEMEM"

Gruß Sönke

Autor: fnah (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Sönke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.