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
.... ich mach mal die Ingrid: das muesste doch eingetlich mit TCCR &= ~(_BV(COM20)) funktionieren. ?!?
Laut Jörg Wunsch soll dieses Makro eher nicht mehr verwendet werden, da es veraltet ist.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.