Gast
#1532571
Hallo zusammen,
ich habe ein "kleines" Problem mit Pointern und komme auch mit der Suche
nicht dahinter:
Ziel: Ich möchte die Daten eines Struct ins EEProm schreiben und vorher
eine Prüfsumme über alle Bytes bilden indem ich jedes Byte des Stuct
addiere und von der Summe noch das Komplement bilde.
Das struct schaut vereinfacht so aus:
=====================================
struct e2param_struct
{
unsigned int array1[6];
unsigned int array2[6];
unsigned int array3[6];
}; // müsste als 2 x 6 x 3 = 36 Byte lang sein
Eine entsprechende Variable wurde deklariert:
=============================================
extern struct e2param_struct E2Param;
Nun möchte ich die 36 einzeln Bytes addieren
indem ich den Zeiger auf das erste Element
des struct setze und dann mittels Laufvariable i
einen Offset auf den Zeiger addiere:
================================================
unsigned char i, j;
j = 0;
for (i = 0; i < 36; i++) {
j += (unsigned char)*(&E2Param.array1[0] + i);
};
und anschließend das Komplement bilden:
=======================================
j ^= 0xff;
Mein Problem scheint zu sein, dass (unsigned char)*(&E2Param.var1[0] +
i) nicht jedes Byte des struct liefert sondern nur für i = 0 bis 17 das
Low-Byte von array1[0..5], array2[0..5], array3[0..5] und dann noch 18
mal 0
Hat da jemand einen Tipp für mich?
Danke & Gruß
Jürgen