Abfrage von Bits in Register

Gast #2014431
Lesenswert?
• ▲
▼
Um zu sagen ob diese beiden Zeilen gleichwertig, oder wenigstens korrekt 
sind, benötige ich mehr Informationen. Ohne weitere Informationen, wie 
diese Masken aussehen, würde ich sogar raten, dass es "if(IRQ_MASK & 
RX_START_EN)" heißen müsste.
Gast #2014632
Lesenswert?
• ▲
▼
Großes Fragezeichen schrieb:
> Das Bit RX_START_EN befindet sich im Register IRQ_MASK.

Wenn RX_START_EN nur eine Bitnummer ist, dann solltest du dieses Macro 
verwenden, um eine 1 an die richtige Stelle zu schieben. Mit einem AND 
kann man dann einfach abfragen, ob das entsprechende Bit gesetzt ist

if(IRQ_MASK & (1 << RX_START_EN))

Wenn RX_START_EN eine Bitmaske ist, dann entfällt natürlich das shiften.

if(IRQ_MASK & RX_START_EN)

Eine weitere Möglichkeit wäre auch, dass RX_START_EN ein Makro ist, 
welches direkt das richtige Bit extrahiert. In diesem Fall fällt sogar 
die Verknüfung it IRQ_MASK weg.

if(RX_START_EN)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren