www.mikrocontroller.net

Forum: Compiler & IDEs Wie schreibe ich eine struct ins EEPROM


Autor: Otto Richter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo da draußen,

ich habe eine struct aus 3 arrays definiert, die ich mit
eeprom_write_block(...) ins EEPROM (des ATMega128) ab Adresse 0
schreiben möchte, und natürlich auch wieder auslesen möchte.

Da, wo im folgenden Code die ??? stehen, habe ich mein Problem: wie
finde ich das 1. Element der struct ?

Danke im voraus !

Otto

/**** eeprom_handling.c   begonnen 5.3.06  OR  *****/

#include <avr/eeprom.h>

typedef struct
{
  uint8_t format_delay_control [ 3 ] ;
  uint8_t  chroma_gain_control [ 3 ];
  uint8_t  chroma_control [ 3 ];
} eeprom_struct ;

#define eeprom_struct.format_delay_control = {0x12, 0x0F, 0x0E} ;
#define eeprom_struct.chroma_gain_control = {0x13, 0x0F, 0x0E } ;
#define eeprom_struct.chroma_control =  {0x24, 0x0F, 0x0E  } ;

void eeprom_write ( void )
{
eeprom_write_block ( ??? , 0  ,  sizeof ( eeprom_struct ) ) ;
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 3 arrays definiert

Du hast gar nichts definiert. Du hast nur eine Menge
Zeugs deklarariert. D.h. Du hast dem Compiler gezeigt
wie eine Variable aussehen würde, wenn Du eine anlegen
würdest. Aber Du hast keine Variable angelegt.

Irgendwo wirst Du die aber brauchen

eeprom_struct Configuration;

und dann kannst Du die natuerlich als Quelle fuer den
eeprom_write_block nehmen (bzw. umgekehrt zum Lesen).

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich habe eine struct aus 3 arrays definiert, die ich mit
> eeprom_write_block(...) ins EEPROM (des ATMega128) ab Adresse 0
> schreiben möchte, und natürlich auch wieder auslesen möchte.

Muß es unbedingt Adresse 0 sein? Normalerweise lässt man den Linker das
verwalten.

> Da, wo im folgenden Code die ??? stehen, habe ich mein Problem:
> wie finde ich das 1. Element der struct ?

Um ein erstes Element zu haben, mußt du erstmal ein Objekt diesen Typs
haben. Bisher hast du nur den Typ selbst.

> #define eeprom_struct.format_delay_control = {0x12, 0x0F, 0x0E} ;
> #define eeprom_struct.chroma_gain_control = {0x13, 0x0F, 0x0E } ;
> #define eeprom_struct.chroma_control =  {0x24, 0x0F, 0x0E  } ;

Was soll das denn sein?

Du solltest dir mal das Tutorial anschauen. Da ist erklärt, wie man mit
dem EEPROM arbeitet.

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.