Forum: Mikrocontroller und Digitale Elektronik Low High und Pull Up


von Hans (Gast)


Lesenswert?

Guten Abend Ihr,
Ich bin etwas ratlos, da ich jetzt etwas n die Welt der Microkontrolre 
eingestiegen bin jetzt aber noch einige Sachen nicht ganz verstanden 
hab:

1. Den Unterschied zwischen Pull Up und High, da ich soeben erfahren 
hab, dass ich die ganze Zeit für ne LED den Pull Up benutzt hab (PORTB 
|= (1<<PB2);)
Ist das jetzt arg schlimm? Wie mach ichs anderst?

2. Wie aktivier ich den Pull Down, oder wie kann ich den Pull Up wieder 
deaktivieren? Weil wenn ich ne LED jetzt wieder ausschalten will, dann 
muss (da ich ja immer mit den Pulls gearbeitet hab) der Pull Up wieder 
weg sein.

Hoffe ihr könnt mir ein par Steine für meinen Zukünftigen Weg für die 
Microcontroller legen, damit ich dazulernen kann.

Guten Abend noch
Hans

von Uwe .. (uwegw)


Lesenswert?

Ob
PORTB |= (1<<PB2);
Pullup oder high ist, hängt von DDRB ab. Wenn dort der Pin als Ausgang 
geschaltet ist ( DDRB|=(1<<DDB2); ), dann ist es high, ansonsten ist es 
Eingang mit Pullup.

Abschalten mit
PORTB &= ~(1<<PB2);

Pulldowns hat der AVR nicht.

von HildeK (Gast)


Lesenswert?

>Hoffe ihr könnt mir ein par Steine für meinen Zukünftigen Weg für die
>Microcontroller legen, damit ich dazulernen kann.
Müsste die man nicht eher wegräumen? :-)

Ganz verstanden habe ich deine Frage nicht. Aber grundsätzlich soviel:
Ein Ausgang besteht entweder aus zwei (komplementären) Transistoren 
(FETs), von denen jeweils einer leitend und der andere gesperrt ist. 
Damit kannst du HIGH und LOW an den Ausgang schalten - ohne Pull 
up/down. Vorteil: sowohl HIGH- als auch LOW-Zustand verbrauchen keinen 
Strom, außer dem Strom, den du außen abnimmst.

Alternativ kann auch der obere Transistor weggelassen werden und statt 
dessen ein Pull-Up (ein Widerstand) aktiviert werden. Wird der untere 
Transistor niederohmig, dann geht der Ausgang auf LOW. Während dieser 
Zeit fließt aber immer Strom durch den unteren Transistor. Der 
Transistor wird mit Open-Collector (-Drain) betrieben. Schaltet man den 
Transistor hochohmig, so wird der Ausgang nach HIGH gezogen - nur eben 
nicht so kräftig wie im komplementären Mode.

Alternativ kann auch der untere Transistor weggelassen werden .... (fast 
wie im letzten Absatz)

Wie du bisher deine LED angeschlossen hattest, kann ich jetzt nur ahnen: 
Pull UP-Mode und eine LED vom Ausgang nach Masse?
Kann man notfalls so machen. Dann wird die LED dadurch ausgeschaltet, 
dass sie mit dem Transistor einfach kurzgeschlossen wird. Es fließt also 
im AUS-Zustand noch mehr Strom als wenn die LED leuchtet. Deshalb wird 
man es eher nicht tun.
Besser ist es hier, den Pull-Up einfach zu vergessen und vom Pin nach 
VCC eine Reihenschaltung aus R und LED zu verwenden.

Die ganz spezifischen Fragen zum µC kann ich dir nicht beantworten.

von Philipp B. (philipp_burch)


Lesenswert?

HildeK schrieb:
> Alternativ kann auch der obere Transistor weggelassen werden und statt
> dessen ein Pull-Up (ein Widerstand) aktiviert werden. Wird der untere
> Transistor niederohmig, dann geht der Ausgang auf LOW. Während dieser
> Zeit fließt aber immer Strom durch den unteren Transistor. Der

Also zumindest beim AVR lässt sich nicht der untere Transistor und 
gleichzeitig der PullUp aktivieren (Wäre ja auch doof). Ist DDRxy 1, 
wird der Pin aktiv nach Vcc, bzw. GND gezogen, ist es 0, steuert PORTxy 
den entsprechenden PullUp. Bei 1 ist der PullUp aktiviert, bei 0 eben 
nicht. Der untere Transistor ist dabei aber immer sperrend.

> Wie du bisher deine LED angeschlossen hattest, kann ich jetzt nur ahnen:
> Pull UP-Mode und eine LED vom Ausgang nach Masse?
> Kann man notfalls so machen. Dann wird die LED dadurch ausgeschaltet,
> dass sie mit dem Transistor einfach kurzgeschlossen wird. Es fließt also
> im AUS-Zustand noch mehr Strom als wenn die LED leuchtet. Deshalb wird
> man es eher nicht tun.
> Besser ist es hier, den Pull-Up einfach zu vergessen und vom Pin nach
> VCC eine Reihenschaltung aus R und LED zu verwenden.

Ich tippe hier eher auf ein Verständnisproblem, wahrscheinlich war alles 
richtig. Nur mit dem PullUp wird die LED schon sehr dunkel. Der hat 
irgendwas um 50-100k, macht bei 5V noch 30-60uA. Bei Low-Current, bzw. 
superhellen LEDs ist das gut sichtbar, aber nicht wirklich hell.

von Hans (Gast)


Lesenswert?

Okay meine LEDS sind alle mit Vorwiderstand an dem Controller und hängen 
an Masse, also wenn ich dann DDRB = 0b11111111; und dann noch PORTB |= 
(1<<PB2); das ist ja dann einfach den Pin auf HIGH ziehen oder? das mit 
dem Ausschalten hab ich schon herrausgefunden aber trozdem danke.

Gute Nacht Hans

von HildeK (Gast)


Lesenswert?

@ Philipp Burch (philipp_burch)
>Also zumindest beim AVR lässt sich nicht der untere Transistor und
gleichzeitig der PullUp aktivieren (Wäre ja auch doof).

So doof ist das nicht - wenn der Pull-Up in dem Wertebereich von 
aktuellen Xilinx-Bausteinen ist (<10k), dann ließe sich da schon was mit 
anfangen. I²C arbeitet ja auch auf der Basis.

ich sagte ja:
>Die ganz spezifischen Fragen zum µC kann ich dir nicht beantworten.
zumal der µC nicht mal näher spezifiziert war.

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
Noch kein Account? Hier anmelden.