struct in ein EEPROM schreiben

Gast #3165964
Lesenswert?
• ▲
▼
Hallo,

ich habe bei einer Software für einen PIC32-µC eine Struktur in der 
Form:

struct Daten
{
  unsigned char Daten_1[10];
  unsigned char Daten_2;
  unsigned short Daten_3;
  signed int Daten_4;
  unsigned char Daten_5;

  ...

} EEPROM_Daten;

Diese Struktur möchte ich so wie sie im RAM abgelegt ist in ein EEPROM 
schreiben und später wieder vom EEPROM ins RAM zurückschreiben.
Dazu möchte ich die Länge der Struktur ermitteln und sie dann Byte für 
Byte bearbeiten, ohne ihren Aufbau (der sich gelegentlich ändern wird) 
beachten zu müssen.
Meine Frage dazu ist: Wie adressiere ich die einzelnen Bytes der 
Struktur?

Für alle Hinweise möchte ich mich schon vorweg ganz herzlich bedanken.
Gast #3165986
Lesenswert?
• ▲
▼
Wenn du die Größe deiner Struktur kennst:

void writeDatenToEeprom(struct Daten *data, uint8_t size)
{
  uint8_t i;
  uint8_t eepAddr;

  // hier eepAddr auf die gewünschte Startposition setzen

  for (i=0; i<size; i++)
  {
    eep_write_byte( ((uint8_t *) data)[i]);
    eepAddr++;
  }
}
Gast #3165989
Lesenswert?
• ▲
▼
hardcore-Variante:
1
uint8_t* p = (uint8_t*) &EEPROM_Daten;
2

3
for (int i=0; i<structLength ; i++)
4
   write_eeprombyte(irgendwo, p[i]);

Alternativ per union, oder per memcopy in ein uint8_t-Array, aber 
portabel ist das halt alles nicht.

Oliver

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.