Hallo Community :) Ich frage mich momentan wie der Pullup Widerstand in einem Atmega8 aufgebaut ist. Ich frage deshalb weil ich am überlegen bin ob ich die Basis eines BC548 Transistors direkt an einen IO/Port anschließen kann. Das ganze müsste doch in etwa so wie auf dem Bild(Anhang) aussehen oder? Ich weis noch nicht worauf ich achten muss wenn ich einen Transistor an einen Mikrocontroller anschließen möchte. Bin noch in der Lernphase. Grüße
Phil E. schrieb: > Ich frage mich momentan wie der Pullup Widerstand in einem Atmega8 > aufgebaut ist. Steht im Datenblatt
Phil E. schrieb: > Ich frage deshalb weil ich am überlegen bin ob ich die Basis eines BC548 > Transistors direkt an einen IO/Port anschließen kann. http://www.mikrocontroller.net/articles/Relais_mit_Logik_ansteuern Hier sollte diese Frage beantwortet werden. Der interne PullUp ist nicht für den Ausgang bestimmt, der soll den Eingang auf ein festes Potential legen wenn es notwendig ist.
1 | DDRD |= _BV(PD1); //PD1 als Ausgang |
2 | |
3 | PORTD |=_BV(PD1)//Pullup hoch |
4 | PORTD &= ~_BV(PD1)//Pullup runter |
Schaltet man mit "PORTD" garnicht den Internen Pullup? Ich beiß auf Granit. Edit: Mit LED's hab ich bisher immer so gearbeitet. (Siehe Anhang) "PORTD |=_BV(PD1)" zum LED ausschalten und "PORTD &= ~_BV(PD1)" zum LED wieder einschalten.
Wenn der Port als Eingang konfiguriert ist, schaltet man so den Pull-Up. Ist es ein Ausgang, schaltest du niederohmig zwischen Vcc und GND. Und brauchst einen externen Basiswiderstand.
Wenn du mit DDRx das Port auf Ausgang schaltest und dann anschließend PORTD |=_BV(PD1)//Pullup hoch PORTD &= ~_BV(PD1)//Pullup runter schaltest du nicht den PullUp, sondern den Ausgang fest (über den internen FET) auf VCC oder GND. Wenn DDRx auf 0 ist, dann schaltest du mit dem selben Befehl den PullUp ein und aus.
Achso :) Ganz schön clever. Danke an euch beiden. Wieder etwas gelernt. Grüße Edit Edit: Ich hab jetzt mal als Anhang ein Prinzip Schaltbild hinzugefügt. Welches das Prinzip eines µC IO/Pins zeigt. Zumindest wie ich das verstanden habe.
1 | //IO/Pin nach GND
|
2 | PORTD &= ~_BV(PD2) |
3 | |
4 | //IO/Pin nach 5V
|
5 | PORTD |=_BV(PD2) |
Ich mach mir immer gerne kleine Prinzip schaltbilder um das Querdenken zu erleichtern. Ich denke jetzt hab ich meine Fehler raus. Wenn nicht, berichtigt mich bitte. Grüße
Phil E. schrieb: > //IO/Pin nach GND > PORTD &= ~_BV(PD2) > > //IO/Pin nach 5V > PORTD |=_BV(PD2) Vorausgesetzt das im DDRD Register der jeweilige Pin als Ausgang gesetzt ist.
Hubert G. schrieb: > Phil E. schrieb: >> //IO/Pin nach GND >> PORTD &= ~_BV(PD2) >> >> //IO/Pin nach 5V >> PORTD |=_BV(PD2) > > Vorausgesetzt das im DDRD Register der jeweilige Pin als Ausgang gesetzt > ist. Ok dann ist alles Klar. Danke Grüße
Der Vollständigkeit halber: in deinem Schaltbild muss S1 als Wechsler den Ausgang wahlweise auf Vcc oder GND schalten. Du hast einen Selbstzerstörungsmechanismus gebaut ;)
Malte S. schrieb: > Der Vollständigkeit halber: in deinem Schaltbild muss S1 als Wechsler > den Ausgang wahlweise auf Vcc oder GND schalten. Du hast einen > Selbstzerstörungsmechanismus gebaut ;) Ja stimmt :D
Moin! Der Vollständigkeit halber hier das Diagramm aus dem Datenblatt.
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.