Bitmanipulation Tastereingang

Gast #3192579
Lesenswert?

Hallo zusammen. In meinem Projekt scheitert es an einer Kleinigkeit.

#include <avr/io.h>

int main (void){

        DDRB |= 0b00000010;

  while(1){
    if (1<<PB0){      //wenn eingang bei PB0
      PORTB |= (1<<PB1);  //dann ausgang bei PB1
    }
  }
}

Die Eingangsspannung bei PB0 kommt von einem Transistor(Emmiter), 
bedeutet bei mir 4,3V (5-0,7). Liegt es daran, dass der Mikrocontroller 
den Ausgang nicht schaltet.? Was kann man machen.?

MfG: mderw
Gast #3192592
Lesenswert?

mderw schrieb:
>//wenn eingang bei PB0
>//dann ausgang bei PB1
Diese Kommentare sind mindestens nichtssagend wenn nicht falsch. Und der 
Ausgang wird niemals abgeschaltet. Vielleicht wolltest du sowas

if(PINB&(1<<PB0)) //Wenn Eingang auf logisch 1
  PORTB|=(1<<PB1); //Ausgang auf 1 setzen
else
  PORTB&=~(1<<PB1); Ausgang auf 0 setzen
Gast #3192596
Lesenswert?

mderw schrieb:
> Ja. Das habe ich übersehen. Es geht aber immer noch nicht. Liegt es doch
> an der Spannung von 4,3V.?

Ach so, dein Eingang wird per Transistor gesteuert. Jetzt verstehe ich. 
Wenn du den genauen Typ des µC verrätst könnte man im Datenblatt gucken 
ob 4,3V schon als logisch 1 erkannt werden (ich vermute mal ja).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren