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