Forum: Gesperrte Threads mal ne frage an euch


von Franz (Gast)


Lesenswert?

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;
  }
}

von Johannes M. (johnny-m)


Lesenswert?

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...

von Ronny Spiegel (Gast)


Lesenswert?

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

von Realpotter (Gast)


Lesenswert?

Ja, das kommt etwa hin. Tut es nicht ? Fuses ? Clock options ?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

"Wichtige Regeln - erst lesen, dann posten!
...
Aussagekräftigen Betreff waehlen"

Du bekommst hiermit den Schlechtester-Betreff-des-Jahres-Preis 
verliehen.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.