Gast
#995101
Hallo,
ich habe folgende vereinfachte Ausgangssituation:
unsigned short Var1[3] = {1,2,3};
unsigned short Var1_EE[3] EEMEM = {0};
void Write2EEProm(void)
{
eeprom_write_block(Var1,Var1_EE, size_of(Var1));
}
Write2EEProm();
Inhalt Var1_EE: [0]:1 , [1]:2, [2]:3
Das obige Beispiel funktioniert bestenes, die Variablen sind global
definiert und die Funktion Write2EEProm steht direkt darunter in der
selben c-Datei.
Wenn ich jetzt die Funktion Write2EEProm so modifiziere, dass ihr ein
Pointer für das SRAM Array übergeben werden kann, wird nur noch der 1.
Wert des Arrays ins EEProm geschrieben, statt das ganze Array:
unsigned short Var1[3] = {1,2,3};
unsigned short Var1_EE[3] EEMEM = {0};
void Write2EEProm(unsigned short* pVar1)
{
eeprom_write_block(pVar1,Var1_EE, size_of(pVar1));
}
Write2EEProm(Var1);
oder
Write2EEProm(&*Var1); // kommt auf das gleiche raus
Inhalt Var1_EE: [0]:1 , [1]:0, [2]:0
Die EEProm Variable und (weil für das Beispiel einfacher) die SRAM
Variable ist weiter direkt global darüber deklariert, lediglich wird
jetzt der Quell-Pointer an die Funktion übergeben.
Was mache ich hier falsch ?
Dank für eure Hilfe.