hi leute mal ne frage. könnt ihr mir bitte mal sagen was hier falsch ist? wenn ich an port-b pin-0 spannung anlege oder nicht müsste je nachdem die led brennen oder nicht.habe natürlcih port-d pin-2 mit der led verbunden. #define F_CPU 3686400 #include <avr\io.h> main () { DDRD=0xff; DDRB=0x00; DDRC=0xff; PORTC=0xff; PORTB=0; while(1) { if(PINB==1) PORTD=0x04; if(PINB==0) PORTD=0x00; } }
Und was ist mit den anderen Pins von Port B? Die hängen ja vermutlich irgendwie in der Luft (Pull-Ups sind jedenfalls nicht aktiviert). Demnach dürfte die Wahrscheinlichkeit, dass die Bedingung der Abfrage
1 | if(PINB==1) |
jemals wahr wird, relativ gering sein...
Ich vermute mal, die restlichen Pins vom PORTB sind einfach frei, d.h. weder Masse noch Vcc. Du hast für PORTB die Pullups nicht aktiviert, d.h. die PINB (ausser dem einen, den Du benutzt) sind nicht definiert. D.h. if(PINB & 0x01) zur Prüfung benutzen! Das ist besser, weil Du von den anderen Bits unabhängig prüfst. Weiterhin würde ich die Pullups aktivieren, oder die PINs auf einen definierten Pegel ziehen. (Pullups aktivieren: PORTB = 0xFF) RSp
"Wichtige Regeln - erst lesen, dann posten! ... Aussagekräftigen Betreff waehlen" Du bekommst hiermit den Schlechtester-Betreff-des-Jahres-Preis verliehen.