Forum: Compiler & IDEs verschiedene arrays aus EEPROM lesen


von Yves Z. (barney)


Lesenswert?

Hallo, ich habe folgende Frage:

Ich habe mehrere array´s im EEPROM gespeichert.
Das auslesen über "eeprom_read_block();" funktioniert auch ohne 
probleme.

Jetzt soll über ein kleines Menü ein array ausgelesen und verarbeitet 
werden. Dazu wollte ich folgende Funktion verwenden:

const char EEMEM test1[] ={1, 2, 3};
const char EEMEM test2[] ={10, 20, 30, 40};

void funktion (const char array)
{
 char dummy[8];
 eeprom_read_block(dummy, array, sizeof(array));
 ....
 ....
}

Wenn ich diese Funktion dann aber in main mit  "funktion(testX);" 
aufrufe
wird immer nur der erste Wert des jeweiligen array´s ausgelesen. Da die 
array´s aber unterschiedlich lang sind kann ich ja keinen festen Wert 
anstelle von "sizeof()" schreiben. Da ich aber in C noch recht neu bin 
weiß ich gerade nicht weiter und bräuchte wenigstens einen kleinen 
"denkanstoß". Ich sag schon mal Danke im voraus!!!

von holger (Gast)


Lesenswert?

sizeof(const char array) ist nun mal 1.
Erweiter den Funktionsaufruf um einen Parameter:

void funktion (const char array, unsigned char len)
{
 char dummy[8];
 eeprom_read_block(dummy, array, len);
 ....
 ....
}



funktion(testX, sizeof(testX));


Weiss jetzt aber nicht ob sizeof mit EEMEM Arrays arbeitet.

von Yves Z. (barney)


Lesenswert?

High, es funktioniert einwandfrei, nochmals vielen Dank für die schnelle 
Hilfe. Tschau

von Sven P. (Gast)


Lesenswert?

holger wrote:

> void funktion (const char array, unsigned char len)
> {
>  char dummy[8];
>  eeprom_read_block(dummy, array, len);
>  ....
>  ....
> }

So wird noch kein Schuh draus, musst schon "const char *array" 
schreiben. Oder besser "const char array[]".

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.