Hallo zusammen
Ich verwende den XC32 im Zusammenhang eines PIC32. Ich habe wiedermal
Mühe, was der Compiler macht:
1 | typedef struct {
|
2 | unsigned char timeH;
|
3 | unsigned char timeM;
|
4 | unsigned char weekdays;
|
5 | unsigned int W;
|
6 | unsigned int R;
|
7 | unsigned int G
|
8 | unsigned int B;
|
9 | unsigned char power;
|
10 | } LightElement;
|
- "sizeof LightElement" ist ageblich 24
- jedoch 0xA00044B4 - 0xA00044A0 = 0x14 = 20 (siehe Attachment)
- LightElement hat aber nur 12 Bytes Nutzdaten
Das verstehe ich mal nicht, muss es aber so hinnehmen.
Eigentlich habe ich ein höheres Ziel: Ich habe verschiedene solcher
strucs, die ich in einer Page (256 Bytes) eines EEPROMs abspeichern
möchte. Ich möchte gleich eine ganze Page schreiben und nicht
"Bytemanipulatorisch". Das heisst es wäre schön wenn ich ein
übergeordneter "Container" hätte, der genau 256 Bytes gross ist (und
auch 256 Bytes Nutzdaten hätte), den ich dann in einer Page ablegen
könnte. Ich hatte an sowas gedacht, was aber (siehe oben) nicht
funktioniert.
1 | typdef struct {
|
2 | ...
|
3 | } StructA; // 64 Bytes gross
|
4 |
|
5 | typdef struct {
|
6 | ...
|
7 | } StructB; // 64 Bytes gross
|
8 |
|
9 | typdef struct {
|
10 | ...
|
11 | } StructC; // 64 Bytes gross
|
12 |
|
13 | typdef struct {
|
14 | ...
|
15 | } StructD; // 64 Bytes gross
|
16 |
|
17 |
|
18 | struct {
|
19 | StructA ElementA;
|
20 | StructB ElementB;
|
21 | StructC ElementC;
|
22 | StructD ElementD;
|
23 | } StructAllesZusammen; // 256 Bytes gross
|
Frage: Wie mache ich das am besten und leserlichsten, dass ich innerhalb
des Programms (code) auf die einzelnen Variablen zugreiffen kann und
diese doch in einem 256 Byte grossen Array sind?
Vielen Dank für Tips