Forum: Compiler & IDEs Frage zur Verwendung des _BV() Makros


von Stefan Sczekalla (Gast)


Lesenswert?

Hallo Leute,

mit dem _BV(blah) Makro kann ich ja prima bits setzen:

z.B. TCCR2 = _BV(COM20)|_BV(CTC2)|_BV(CS20);

... aber wie lösche ich denn genauso "elegant" ein einzelnes Bit ?

     TCCR2 &= !_BV(COM20) ;

?!? oder irgendwie besser / anders ?

Grüße,

Stefan

von Stefan Sczekalla (Gast)


Lesenswert?

.... ich mach mal die Ingrid:

das muesste doch eingetlich mit TCCR &= ~(_BV(COM20)) funktionieren.

?!?

von Patric (Gast)


Lesenswert?


von Mike (Gast)


Lesenswert?

Laut Jörg Wunsch soll dieses Makro eher nicht mehr verwendet werden, da
es veraltet ist.

von Fritz Ganter (Gast)


Lesenswert?

Doch, die _BV() Schreibweise passt schon, man soll nicht mehr sbi und
cbi verwenden.
Durch die _BV Operationen bleibt es dem Compiler beim optimieren
überlassen ob er ein Byte ins Port schreibt oder sbi verwendet, je
nachdem was schneller ist.

von Jörg Wunsch (Gast)


Lesenswert?

BV gibt's nicht mehr, _BV schon.

Nicht verwenden sollte man den Makro nur dann, wenn man Wert auf
Codeportabilität legt, da andere Compiler/Bibliotheken ihn nicht
haben.

Aber er ist in der Tat nichts weiter als ein (1 << (x)), der Code
sieht nur ein wenig lesbarer aus mit dem Makro.

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.