Problem mit Struczur in Eeprom zu schreiben!

Gast #3939522
Lesenswert?

Hallo Leute
habe ein kleines Problem mit folgender Structur!
1
typedef  struct // 76 Byte
2
{
3
  uint8_t adress;        
4
  uint8_t var1;
5
  uint8_t var2;
6
  uint8_t var3;
7
  uint8_t dummy[70];
8
  unsigned int crc;
9
}config;
10

11
config local_config;
12
config Eeprom_config EEMEM;

ich möchte jetzt die structur local_config ins EEprom speichern und 
wollte mich an diesen Trend halten!

Beitrag "Re: EEPROM Struct mit read und write block kopieren?"
1
 eeprom_write_block(  & local_config.config,& Eeprom_config.config,sizeof( local_config.config) );

leider bekomme ich folgende Fehlermeldung!

'config' has no member named 'config'

Was mache ich falsch?
#3939545
Lesenswert?

@ der kleine Nils (Gast)

>'config' has no member named 'config'

Das ist auch so.

>Was mache ich falsch?

C-Grundlagen. Eher so
1
eeprom_write_block( &local_config, &Eeprom_config, sizeof(local_config) );

Besser ist der config_t für den typdef, daran erkennt man einen Typ.
Macht die libc vom avr gcc auch so.
Gast #3939587
Lesenswert?

Hallo der kleine Nils !
Du kannst nur über den Punkt "." auf Elemente in der Stuktur zugreifen, 
die auch definiert sind.

Zu deiner Frage |.config| ist kein Element von typedef struct { .. } 
config;

Wie ein anderer schon schrieb, das sind C Grundlagen, die solltest Du 
dir vorab aneignen.
Gast #3939594
Lesenswert?

1
eeprom_write_block( & RAM_Data.Foo,
2
                      & EEP_Data.Foo,
3
                      sizeof( RAM_Data.Foo ) );
so sieht das Beispiel aus was ist hier anders?
Sorry ich sehe vorlauter Wald den Christbaum nicht!

Also ist das obige Beispiel Falsch!
Foo müsste klein geschrieben sein!
Oder?
#3939595
Lesenswert?

der kleine Nils schrieb:
> eeprom_write_block( & RAM_Data.Foo,
>                       & EEP_Data.Foo,
>                       sizeof( RAM_Data.Foo ) );
> so sieht das Beispiel aus was ist hier anders?
> Sorry ich sehe vorlauter Wald den Christbaum nicht!

Was da anders ist:
Es war einmal ein Struct mit Namen EEP_Data.
Und das enthielt ein Member Namens Foo.
Und diese Foo sollte eines Cycles in den EEPROM geschickt werden, zur 
Großmutter, die da wegen Steuerhinderziehung in einer Speicherzelle 
saß...

Du hast versucht einen Member namens config zu speichern, den Du 
garnicht hast.
Wenn Du etwas speichern willst, solltest Du aber auch groß genug sein, 
um zu wissen, was Du speichern willst.
Persönliche Seite #3939621
Lesenswert?

Detlef Kunz schrieb:
> Was da anders ist:

Neben der sehr schönen Erläuterung:

Das Beispiel speichert ein Element einer Struktur im EEPROM, aber 
nicht die ganze Struktur.

Also macht das Beispiel was anderes, als das, was Du erreichen willst, 
denn Du willst ja die komplette Struktur speichern, und nicht nur ein 
Element davon.

Hast Du schon mal ein C-Buch gesehen?

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