Zweidimensionales Array im EEprom ablegen

Gast #2502084
Lesenswert?

Guten Morgen,

nach langen erfolglosen suchen hoffe ich hier von euch eine Antwort zu 
bekommen.

ich habe ein zweidiemensonale Array
1
uint16_t IO_Feld[20][5];

welches ich in EEprom ablegen möchte.
1
uint16_t eeFooByteArray1[20][5] EEMEM ;
2
....
3
eeprom_busy_wait ();
4
eeprom_write_block (IO_Feld, &eeFooByteArray1, sizeof(IO_Feld));

So scheint es nicht zu gehen! habt Ihr einen Tip?

gruß
Matthias
Gast #2502095
Lesenswert?

Der Name eines Arrays ergibt schon die Adresse des ersten Elementes.
Die nochmalige Bildung einer Referenz ist unnötig und sollte auch 
mindestens eine Warnung ergeben, wenn ich nicht irre.
1
eeprom_write_block (IO_Feld, eeFooByteArray1, sizeof(IO_Feld));

Daneben gibt es weitere Fallstricke.
Welchen Prozessor verwendest Du?
Gast #2502098
Lesenswert?

Du kannst doch das Array von Hand mittels zweier for-Schleifen linear im 
EEPROM ablegen. Also sowas wie
1
for (i = 0; i <= max_x; i++) {
2
 for (j = 0; j <= max_y; j++) {
3
  
4
   // Pseudocode:
5
   ADDR = EEPROM_ADDRESS + (i * max_x + j) * sizeof(type);
6
   write(ADDR, feld[i][j]);
7

8
 }
9
}

Gruß
Jens
Gast #2502219
Lesenswert?

Huuui,
geht das schnell hier bei euch, vielen dank für die Antworten.

eeprom_write_block (IO_Feld, eeFooByteArray1, sizeof(IO_Feld));

so scheint es zu klappen ( ohne &), hatte aber keinen Fehler erhalten!
Noch eine kurze Frage was ist der genaue unterschied zwischen

eeprom_write_byte und eeprom_update_byte?

gruß

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