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

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.

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.