Gast
#285470
Hallo,
ich habe in einer Applikation eine globale Statusvariable SysCfg mit
folgender Struktur:
typedef unsigned char u8;
typedef unsigned int u16;
typedef enum {
OPMODE_UNDEFINED = 0x00,
NORMAL,
DEBUG
} OperatingModeType_en;
typedef enum {
CMD_UNDEFINED = 0x00,
CAPTURE_START,
CAPTURE_IN_PROGRESS,
CAPTURE_COMPLETE
} AdcCtrlTypes_en;
typedef struct {
u16 UcInputPins_u2:2;
u16 DsrInputPins_u4:4;
} DigitalCaptureConfigType_t;
typedef struct {
u16 UcInputPins_u2:2;
u16 MuxInputPins_u5:5;
} AnalogueCaptureConfigType_t;
typedef union {
OperatingModeType_en OpMode;
AdcCtrlTypes_en AdcCtrl;
DigitalCaptureConfigType_t DigCap;
AnalogueCaptureConfigType_t AnaCap;
} SystemConfigurationType_t;
...
volatile SystemConfigurationType_t SysCfg;
Wenn ich nun einzelne Werte dieser Systemvariable verändern möchte,
z.B. mit
SysCfg.AdcCtrl = CAPTURE_START; oder
SysCfg.DigCap.UcInputPins_u2 = 2;
werden immer _alle_ Member dieser Struktur auf den zugewiesenen Wert
gesetzt. Wenn die o.g. Beispielaufrufe tätige, bekommen _alle_ Member
zuerst den Wert 0x01, danach 0x02.
Hat jemand eine Ahnung, woran das liegen kann?