Zitat von Joerg
Die Ausdrücke sind nicht nur gleichwertig, sondern ein und dasselbe. _BV() wird nicht vom Compiler ausgewertet, sondern ist lediglich ein Macro und wird damit vom Präprozessor aufgelöst.Zitat von Felix G
avr/sfr_defs.h wird von avr/io.h includet, so daß man es eh dabei hat.Zitat von ./avr/include/avr/sfr_defs.h
In sfr_defs.h werden auch Sachen defined wie
bit_is_clear(sfr, bit)
loop_until_bit_is_set(sfr, bit)
etc...
Mit der Compilerabhängigkeit ist das so ne Sache.
Hardwarenahe Dinge werden durch verschiedenen Compiler meist verschieden ausgedrückt, wie zB die Definition von Interrupts und Signals. Alles andere hat mit dem Compiler eigentlich nix zu tun. Jedenfalls lassen sich Makros wie bit_is_clear() leichter portieren als wenn man immer selber hinschreibt, zu was das Makro expandiert. Beim Compilerumstieg braucht man dann nämlich nur eine Zeile im Header anzufassen und nicht die ganze Quelle nachzukontrollieren.
Lesezeichen