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