EEPROM und float

Gast #3203061
Hallo,
wie sitze ich immer mal wieder auf dem Schlauch und getraue mir hier zu 
schreiben.
Ich möchte im EEPROM des ATMEL-Controllers einen float-Wert speichern 
der nachdem die Platine Stromlos war wieder abrufbar ist. Im Tutorial 
ist dies ja auch gut beschrieben:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Flie.C3.9Fkommawerte_lesen.2Fschreiben

Allerdings wird hier doch der Wert mit
1
float eeFloat EEMEM = 12.34f;
immer wieder nach dem Einschalten mit "12.34" überschrieben?

Wie kann ich eine "automatische" Adresse erhalten die nicht wieder neu 
mit einen Wert initialisiert wird?

Danke!
Gruß
hal
hal schrieb:

> Allerdings wird hier doch der Wert mit
>
1
float eeFloat EEMEM = 12.34f;
> immer wieder nach dem Einschalten mit "12.34" überschrieben?

Nein.
EEMEM gekennzeichnete Variablen tauchen nicht als normale Variablen im 
Programm auf. So zu sagen.

Das EEMEM sorgt dafür, dass in der Verwaltung der Variablen im EEPROM 
Speicher reserviert wird und somit eine Speicheradresse zugewiesen wird. 
Mehr aber auch nicht.
Aus der Initialisierung generiert der Compiler/Linker ein eiges Hex-File 
welches ins EEPROM gebrannt werden kann und dann diesen Wert im EEPROM 
anlegt.

>
> Wie kann ich eine "automatische" Adresse erhalten die nicht wieder neu
> mit einen Wert initialisiert wird?

das passt schon alles so und funktioniert genau so, wie du es willst.
Gast
@Karl Heinz Buchegger
OK...aber warum erhalte ich für
1
float eeFooFloat_a EEMEM;
2
float value_a = 1.23, value_b;
3

4
eeprom_write_float(&eeFooFloat_a, value_a);
5

6
value_b = eeprom_read_float(&eeFooFloat_a);

für value_b immer 0?
Gast
So jetzt ja! Klar! Natürlich!
Wenn ich jedesmal mit dem Programmer das Programm neu übertrage werden 
natürlich die Standardwerte ins EEPROM geschrieben.
Um es zu testen muss ich den Kontroller Reseten bzw. vom Stromnetz 
trennen!

Danke, hat etwas gedauert

Gruß
hal
Weiters solltest du dich mit der EESAV Fuse auseinandersetzen. Sie 
verhindert, dass der EEPROM Inhalt beim allgemeinen Chip Erase über ISP 
gelöscht wird. Und die meisten Brennprogramme machen beim Flashen eines 
neuen Programms erst mal einen Chip Erase. Woraufhin dein EEPROM Inhalt 
wieder flöten ist.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 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.