PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verstehe Pullup nicht



Murus
10.09.2005, 15:23
Hallo zusammen,

ich arbeite gerade Roland Walters AVR-Buch durch.

Doch da hab ich noch ein gnusch....

Beispiel:
DDRD.7 ==> Port PD7 als Ausgang
PORTD.7=1 ==> Port PD7= High

Nur: wenn ich PORTD.7=1 eingebe, dann "aktiviere ich ja den internen Pullup-Widerstand" des AVR. Nur: Was heisst das? Wie sieht das "Ersatzschaltbild" davon aus? Was macht dieser Pullup? Bei Wikipedia komm ich net so ganz draus...
Wenn ich dann per Taster diesen Pin an Masse ziehe, was machts dann? (der Pullup)

Herzliche Grüsse
Mario

hacker
10.09.2005, 15:30
ein pullup zieht den pin auf Vcc...sprich da liegen nun 5V an...wenn du nun den taster drückst, setzt du den pullup sozusagen ausser kraft..
du brauchst häufig auch pulldowns bzw. ups wenn du ein pin auf einen eindeutigen pegel setzen willst...und ihn nicht einfach unbeschaltet frei lassen willst; es könnten sonst schwingungen auftreten

Murus
10.09.2005, 15:49
Und wieso brauchts diesen Pullup?

Millenniumpilot
10.09.2005, 15:50
Hallo Mario,

den Pullup aktivierst Du nur, wenn der Port als EINGANG gesetzt ist. Beim Ausgang bestimmt der Parameter, ob dieser Ausgang auf Hi oder Lo gesetzt wird. Den Pullup kannst Du Dir ganz einfach als Widerstand vorstellen, welche vom Pin nach Plus geht. So liegt eine definierte Spannung (ein definierter Pegel), in diesem Falle Hi am Port, wenn der EIngang unbeschalten ist. Das ist er ja meist dann, wenn man einen Schalter/Taster am Pin angeschlossen hat. Der Strom durch den Pullup ist so gering, daß durch einen einfachen Taster, dieser Port einfach nach Masse "kurzgeschlossen" werden kann. Am Port liegt dann durch die Tastenbetätigung direkt die Masse (Minus).
Also offener Taster: am Eingang liegt durch den Pullup Plus, Hi, Vcc, 5V
geschlossener Taster: am Eingang liegt Minus, Masse, 0V

Gruß Dirk

pebisoft
10.09.2005, 15:55
hier wird noch kein pullup gesetzt:
DDRD.7 =1 > Port PD7 als Ausgang
PORTD.7=1 >Port PD7= High > hier wird eine spannung ausgegeben, die begrenzung bestimmt du selber mit einem widerstand den du am pin anbringst, ist er zu niedrig für den verbraucher, brennt dein port durch.
PORTD.7=0 keine ausgangsspannung.

hier wird ein pullup gesetzt oder auch nicht:
DDRD.7 =0 > Port PD7 als eingang
PORTD.7=1 >Port PD7 pullup für portd7 ist gesetzt. interner widerstand wird gesetzt.
PORTD.7=0 >Port PD7 pullup für portd7 ist nicht gesetzt.
mfg pebisoft

Murus
10.09.2005, 16:13
Ahaaa, wenn ich den Pullup nicht setze und nen Taster geschlossen da dran hänge, schmort es mir den AVR, da zu hoher Strom da durch, oder?
Hmm, scheint verstanden zu sein.
Pullup nur, wenn es ein Eingang ist...

Hmm, aber man bräuchte den Pullup doch für einen Taster gar nicht... Entweder ist der Pin auf Masse oder Nicht.... Da brauchts doch die +5V am Pin über den Pullup gar net...???

Danke und Grüsse
Mario

pebisoft
10.09.2005, 17:12
nein.
wenn der pin nicht belegt ist, gibt es einen undefinierbaren zustand am eingang . es muss immer vcc oder gnd anliegen um einen einwandfreie "0" oder "1" zu haben, natürlich nur wenn die pullup gesetzt sind. der pullup hat nichts mit dem durchbrennen zu tun, das durchbrennen ist nur wenn der pin als ausgang geschaltet wird und der verbraucher zieht zuviel strom.
mfg pebisoft

Millenniumpilot
10.09.2005, 17:16
Hallo Mario,

lies Dir bitte die Beiträge von pebisoft und mir bitte nochmals ganz genau durch. Auch im Buch wird es IMHO eigendlich ganz einfach erklärt. Ich hatte es nun schon versucht, ganz einfach und populärwissenschaftlich zu schreiben ;-)

Gruß Dirk

pebisoft
10.09.2005, 17:25
durch den pullup-widerstand werden nur die störsignale von zu langen kabeln oder ähnlichen beseitigt. wenn z.b. ein sensor der signale abgibt (0-5v) direkt an den pineingang geschlossen wird, brauchst du mit sicherheit kein pullup.
hast du ein kabel dran, weil der sensor weiter weg liegt, musst du den pullup einschalten, damit das signal einen einwandfreien zustand hat.
mfg pebisoft

Murus
10.09.2005, 17:27
Aha, so ist das!
Vielen Dank!
Alles klar!

pebisoft
11.09.2005, 14:35
hallo, murus viele hier im forum können die pullups nicht genau deuten auch teilweise nicht die sogenanten fachleute. es ist keine schande. es wird soviel verkehrtes darüber geschrieben, das der user richtig verunsichert wird.
mfg pebisoft

Millenniumpilot
11.09.2005, 15:03
Hallo pebisoft,

ganz so sauber ist IMHO Deine Erklärung aber auch nicht.
Einen Pullup braucht man dann, wenn der Eingang einfach so in der Luft hängt, also keinen definierten Pegel angeboten bekommt - er sich also selber etwas "raussuchen" kann. Das ist z.B. der Fall bei der typischen Verdrahtung eines Tasters nach Masse. Gibt ein Sensor selber die Pegel raus (der Eingang bekommt dadurch etwas definiertes angeboten, auf das er reagieren kann), wird kein Pullup benötigt
Zusätzlich kann man bei langen Leitungen den Pegel durch einen Pullup wieder etwas "hochziehen", falls man durch Störungen und Spannungsabfälle in einen Grenzbereich zw. LO und HI geraten ist.

Gruß Dirk

pebisoft
11.09.2005, 15:30
hatte ich schon 6 etagen höher dargestellt/erklärt.
mfg pebisoft

darwin.nuernberg
11.09.2005, 17:10
Nochmal von Anfang an:

Ein PullUp Widerstand legt z.B. einen Port auf einen definierten Pegel (HI)
Wird das Gatter (Transistor) geschaltet (LOW) verhindert dieser Widerstand, dass der gesamte Strom nach Masse geschaltet wird (Kurzschluss).
Der Pegel am Gatter ist hingegen absolut auf Null (LOW)

Soll ein Verbraucher (LED) am Ausgang angeschlossen werden so kann dieser ohne PullUp NIE arbeiten, da nur zwischen nichts und Masse geschaltet wird.


EDIT:
Einen Pullup sollte man auf jeden Fall bei allen Eingängen verwenden...,
manche IC's könnten sonst wild zum Schwingen anfangen,
um unerwünschte Nebeneffekte zu vermeiden und seine Gatter auf einen definitiv sicheren Pegel (LO oder HI) zu legen.

Tatache ist (Physikalisch bedingt) dass ein unbeaschalteter Digitaleingang eines Gatters (Prozessors) als HI interpretiert wird,
aber Aufgrund von Übergangswiderstanden und der relativen hohen Eingangswiderständen der Gatter (Spannungsteilerprinzip) der Pegel schnell kippen kann (Sensorschalter/Berührungstaster).

So kann man schnell ganze Bücher füllen.... (wurde auch schon getan) ;-)

Also um Problemen im Vorfeld gleich aus dem Wege zu gehen...
(außer man weiß genau was man da macht)
immer darauf achten, dass ein definierter Pegel (z.B. über 10k Ohm nach VCC (oder Masse)) an allen Eingängen anliegt.
Ausgänge sind da nicht so kritisch, aber eben nicht wundern, wenn dann nichts raus kommt.

Werden Gatter direkt verbunden kommt es darauf an ob diese aktiv arbeiten (Ausgangsseitig) oder über externe Beschaltung (OC = open Collektor) versogt werden müssen.

Also immer die Datenblätter der verwendeten Bausteine heranziehen.

Siehe... Prinzip

Wer seine Ports nicht zu stark belasten will, sollte einen Schalttransistor verwenden....

pebisoft
11.09.2005, 17:43
beim verbraucher schaltest du ja mit z.b. ddrc.1 den pin c1 als ausgang.
und wenn du jetzt pinc.1=1 setzt hast du eine ausgangsspannung von 5v und ca höchstens 20ma. fliesst jetzt ein höherer strom durch deine led ( ohne widerstand), brennt der port c1 durch und er ist hi.
mfg pebisoft

PicNick
11.09.2005, 18:54
@Darwin: Im Text hast du, und dem würd' ich mich anschließen, "Pullups" als Beschaltung eines INPUTs beschrieben. Da passen aber deine Schalt-beispiele nicht wirklich dazu, auch wenn sie für sich natürlich stimmen.
Ein Unbefangener könnte meinen, jeder Widerstand gegen + ist ein Pullup.

Machmal denk ich, "Pullup" ist so wie Radfahren: Irgendwann hat man's kapiert, aber man kann's einem anderen schwer erklären.

bluebrother
12.09.2005, 12:16
Nochmal von Anfang an:
Soll ein Verbraucher (LED) am Ausgang angeschlossen werden so kann dieser ohne PullUp NIE arbeiten, da nur zwischen nichts und Masse geschaltet wird.

Das ist so nicht richtig -- es hängt vom Controller ab. Manche können LEDs direkt treiben, andere wieder nicht. Die Version mit dem Schalttransistor ist allerdings die sicherste, weil dann egal ist wie viel Strom der Controller treiben kann.

felack
12.09.2005, 19:26
Hallo Mario,
Hallo an alle

in noch keinem Thread habe ich so viele richtige aber unverständliche Antworten gesehen.

Auszug aus dem Datenblatt:
The simpliest method to ensure a defined level of an unused pin is to enable the internal pull-up.
auf deutsch:
Die einfachste Methode um einen definierten Pegel an einen unbenutzten Eingang zu legen ist den internen Pull-up-Widerstand zu aktivieren.

Hier die (vereinfachte) Schaltung aus dem Datenblatt:
(Die genaue Schaltung steht im ATmega8-Datenblatt auf Seite 50)

http://www.file-space.net/files/pullup.gif


1.) Der Pull-up-Widerstand (kurz:Pull-up) kann zwischen einen Eingang und die Betriebsspannung(Vcc) geschaltet werden.
2.) Der Pull-up hat laut Datenblatt zwischen 20 und 50 KOhm. Man sollte also mit etwa 33 KOhm rechnen.
3.) Der Pull-up kann nur aktiviert werden, wenn der Port als Eingang definiert ist.
4.) Ist der Port als Ausgang definiert, ist der Pull-up abgeschaltet.
5.) Nach einem Reset sind alle Pull-ups abgeschaltet.
6.) Mit dem Bit PUD im Spezial-Function-IO-Register SFIOR können alle Pull-ups abgeschaltet werden.
7.) Der FET im Schaltbild ist dann und nur dann durchgeschaltet wenn
a) der Pin als Eingang definiert ist und
b) das Port-Bit auf 1 gesetzt ist und
c) das PUD-Bit 0 ist (Standard)

Wenn der Pull-up aktiviert ist und man einen Schalter nach Masse anschließt ergibt sich folgende Situation:
Ist der Schalter offen, hat man dank des Pull-ups eine 1 am Pin liegen.
Ist der Schalter geschlossen, liegt eine 0 am Pin an.
Ohne Pull-up würde bei offenem Schalter ein undefinierter Pegel anliegen. Was dann passiert steht im Buch von Roland Walter auf Seite 45 im Kapitel "Das zweite Programm" ganz genau beschrieben und kann auch im Demoprogramm ausprobiert werden.

@darwin:
Was du da als Schaltbild angehängt hast ist kein Pull-up, sondern ein Lastwiderstand oder LED-Vorwiderstand, geht also leider am Thema völlig vorbei und hat mit den internen Pull-ups der Atmel-Mikrocontroller nix zu tun.

felack

Murus
12.09.2005, 21:18
Ok, ich bedanke mich für die Antworten!
Alles klar!
Greets und Danke
Mario

pebisoft
12.09.2005, 22:32
hallo felack, für einen anfänger ist deine beschreibung "0". ausserdem haben nicht alles das buch von roland walter. da ich es teilweise kenne, kann ich nur sagen, umständlicher buchautor.
du solltest mal von oben anfangen. deine beschreibung stimmt auch nicht komplett. überarbeite die mal.
mfg pebisoft