AVR ein Element aus Structur im EEPROM?

OP #2808448
Lesenswert?

Hallo,
kann ich eigentlich ein Element aus einer Struktur im EEPROM speichern?
Hintergrund:
Ich habe eine Globale Struktur in einer Header Datei. Das Programm ist 
sehr lang. Jetzt würde ich gerne ein Element aus der Struktur ins EEPROM 
speichern.

In einer Globalen Headerdatei habe ich z.B. folgendes stehen:
Der Sinn sei jetzt mal dahingestellt...
1
struct Person{
2
 uint8_t Name;
3
 uint8_t Alter;
4
 uint8_t Gruppe EEMEM; //Funktioniert nicht!
5
}
6
extern struct Person Gestern;
7
extern struct Person Heute;

Ohne das EEMEM funktioniert alles einwandfrei.
Ich möchte aber, dass die Gruppe immer im EEPROM gespeichert wird. Ich 
möchte nach dem aus und wieder einschalten des µC noch wissen, was in 
der Variablen "Gestern.Gruppe" gestanden hat.
Wie bekomme ich das hin?
Gruß Antong
OP #2808506
Lesenswert?

Hallo Georg G.

Ich bekomme beim compilen die Meldung
"expected ':', ',', ';', '}' or '__attribute__' before 'EEMEM'"

Ich habe allerdings die deklaration auch in einer Headerdatei stehen. 
Ich habe dort auch kein "#include <avr/eeprom.h>" drin stehen. Mit 
klappt das aber auch nicht. Muß ich das auch in der Headerdatei 
einbinden?

Beschreiben und lesen mache ich ja mit eeprom_read_byte usw. Soweit 
komme ich aber erst gar nicht.

Wenn ich eine Variable in einer .c Datei initialsiere z.B.
"uint8_t eeFooByte EEMEM = 123;" dann kann ich die auch lesen und 
beschreiben. Bleibt auch nach aus und wieder einschalten vorhanden.

Ich habe also im Moment praktisch zwei Probleme.
Wie bekomme ich eine Globale Variable in einer Headerdatei ins EEPROM? 
Und die zweite Sache, was ist wenn das auch noch ein Element einer 
Struktur ist?

Gruß Antong
#2808524
Lesenswert?

Anton G. schrieb:
> Wie bekomme ich eine Globale Variable in einer Headerdatei ins EEPROM?

Indem du genauso vorgehst, wie bei jeder anderen Variablen auch. Die 
Definition mit Initialisierung kommt in eine C-Datei, und eine 
Deklaration in die Header-Datei.

Anton G. schrieb:
> Und die zweite Sache, was ist wenn das auch noch ein Element einer
> Struktur ist?

Geht nicht. Du kannst die Elemente einer Struktur nicht über 
verschiedene Speicher verteilen.
OP #2808666
Lesenswert?

Stefan Ernst schrieb:
> Anton G. schrieb:
>> Wie bekomme ich eine Globale Variable in einer Headerdatei ins EEPROM?
>
> Indem du genauso vorgehst, wie bei jeder anderen Variablen auch. Die
> Definition mit Initialisierung kommt in eine C-Datei, und eine
> Deklaration in die Header-Datei.
>
> Anton G. schrieb:
>> Und die zweite Sache, was ist wenn das auch noch ein Element einer
>> Struktur ist?
>
> Geht nicht. Du kannst die Elemente einer Struktur nicht über
> verschiedene Speicher verteilen.

Danke euch allen.
Dann muß ich das wohl noch mal komplett umstricken oder eine extra 
Variable dafür anlegen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren