Claudio Hediger schrieb:
> if(RX_PIN == 1) //Wird nicht high, bzw 1. Auch if(RX_PIN) geht nicht
In C ist weniger oft mehr.
Alles ungleich 0 ist in C logisch wahr.
WEnn dein Pin ein 0 Potential hat, dann liefert
PINB & (1<<PINB6)
mit Sicherheit eine 0. Aber wenn er ein 1 Potential hat, dann kommt da
00100000 PINB
& 00100000 (1<<PINB6)
---------
00100000
raus. Und das ist nun mal nicht 1. Aber es ist ungleich 0. Und das
reicht dann auch schon
es ist oft gerade bei Abfragen gefährlich, auf Bitebene auf einer 1 zu
bestehen. Gewöhn es dir ab.
if( PIN & (1 << PINB6) ) // wenn der Pin auf 1 ist
if( ! (PIN & (1 << PINB6) ) ) // wenn der Pin auf 0 ist
oder eben bei dir mit dem Makro
if( RX_PIN ) // ist der Pin auf 1
if( ! RX_PIN ) // ist der Pin auf 0
Blinder Eifer schadet hier mehr als er nützt.