Forum: Mikrocontroller und Digitale Elektronik volatile bei unio


von Hans (Gast)


Lesenswert?

Hallo Zusammen,

Benutzte Compiler: C18
Benutzte Tools: MPLAB V8.92

Darf ich so schreiben:
1
 typedef union
2
{
3
  struct
4
  {
5
    unsigned volatile Timeout:1;         //flag to indicate a TMR1 timeout
6
    unsigned volatile None:7;
7
  } Bit;
8
  unsigned char Byte;
9
}Flags;

danke

von Karl H. (kbuchegg)


Lesenswert?

Hmm.
Ich seh jetzt nicht, warum das nicht erlaubt sein sollte

Kriegst du eine Fehlermeldung?

von [c] (Gast)


Lesenswert?

Ich würde das "Bit;" durch
1
__attribute__((__packed__));
ersetzten, sonst kann dir der Compiler padding bytes/bits einfügen und 
du musst die Member so ansprechen
1
Flags my_flags;
2
my_flags.Bit.Timeout

Das Zweite ist eher Geschmackssache, mir würde es besser gefallen wenn 
man auf die Member mit
1
my_flags.Timeout
zugreifen könnte.

von Hans (Gast)


Lesenswert?

Karl H. schrieb:
> Kriegst du eine Fehlermeldung?

Nein
aber ich war mir nicht ganz sicher, ob ich das so schreiben darf.
Ich bin halt neue in C bzw. in Embeddede Welt und fragen tut immer gut 
bevor man ins kaltes Wasser springt.

Danke für die schnelle Antwort

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.