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
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
Ja. Das habe ich übersehen. Es geht aber immer noch nicht. Liegt es doch an der Spannung von 4,3V.?
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).
Poste den ganzen Code und am besten einen Schaltplan! Der Fehler steckt oftmals nicht da, wo man ihn zuerst vermutet!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.