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

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