Jörg Esser schrieb:
> if ((dir==TRUE) & (LED_Mode & PWM) & !(LED_Mode & AUS)){
Ich hab ausnahmsweise mal die Glaskugel da und sehe gleich mehrere
Fallen:
Ist die if()-Bedingung ein boolscher Ausdruck? Dann musst du den
Operator && für die boolsche Und-Verknüpfung verwenden. So, wie es da
steht, ist das ein bitweises UND, das ein völlig anderes Ergebnis hat.
(LED_MODE & PWM): Willst du mit dem zuvor gesetzten Wert vergleichen,
muss der Ausdruck (LED_MODE & (1<<PWM)) lauten.
Der Ausdruck (dir == TRUE) kann zudem noch folgenden Nebeneffekt haben:
Nur der boolsche Wert FALSE hat einen eindeutigen Wert (0). TRUE wird
üblicherweise zwar als !FALSE definiert, welcher Wert das ist, ist aber
compilerabhängig. Sicherer wäre also (dir != FALSE) oder einfach (dir).
Zusammengefasst: Ist
if ((dir) && (LED_Mode & PWM) && !(LED_Mode & AUS)){
das, was du wolltest?
Grüße
Stefan