Hi, kann mir jemand erklären was es genau mit Pullup und PullDown Widerständen aufsich hat? Bisher denke ich, daß es sich so verhält: Ein Pullup Widerstand wird dann benötigt, wenn ein I/O Port als Eingang geschaltet ist. Wenn nun das Signal High, dh. eine Spannung, angelegt wird muss diese irgendwo abfallen, am Pullup, da es sonst zu einem Kurzschluss kommt. Ein Pullup ist immer sehr groß. Sind die I/O Ports also standardmässig mit Masse verbunden, und wenn ich einen PullDown brauche andersherum? Dankend klärende Worte :-)
Bei den Eingängen geht es darum, daß ein definierter Pegel anliegt. Ohne Pullup/down wirkt die Leitung am Eingang als Antenne und Du fängst Dir z.B. das Netzbrummen ein. Damit bekommst Du dann 50 oder 100 Impulse pro Sekunde am Eingang. Markus
PullUps brauchst du, wenn dein Signalgeber den Pegel nur auf Low, nicht aber selbstständig auf High ziehen kann (bei Optokopplern brauchst du das beispielsweise). PullDowns musst du dementsprechend einsetzen, wenn der Signalgeber nur auf High ziehen kann, sonst aber der Ausgang undefiniert ist (z.B. auch bei Optokopplern möglich). Aber auch, wenn du einen Pin als Ausgang verwendest, solltest du je nach Ruhepegel PullUps oder PullDowns einsetzen. Sonst kann auch der undefinierte Zustand eintreten, wenn der Pin noch nicht als Ausgang definiert wurde. Wenn das nicht so stimmt, korrigiert mich bitte. gruß see4far
Nein, ganz so ist es nicht. Es gibt mehrere Anwendungen für Pullup oder Pulldown. Allen gemeinsam ist, das irgendwoher ein Signal kommt das zwei Zustände annehmen kann. Zustand A: Das Signal ist z.B. über einen Bipolaren Transistor oder FET mit der positiven Spannungsversorgung oder Masse verbunden. Beispielsweise eine aktiver Open-Collector-Ausgang Zustand B: Das Signal ist mit "nichts" verbunden, also weder mit der positiven Spannungsversorgung noch mit der Masse. Das Signal "floatet", z.B. ein inaktiver Open-Collector-Ausgang. Und um genau den Zustand B zu vermeiden, verwendet man ein Pullup oder ein Pulldown. Ähnlich wie der Zustand B ist die Anwendung, bei der man einen hochohmigen Signaleingang niederohmiger machen möchte. Das macht man, um den Eingang unempfindlicher gegenüber Störungen zu machen, insbesonders wenn der Eingang mit einer längeren Leitung verbunden ist. Also wenn der Eingang nicht mit einem Ausgang eines anderen ICs auf der gleichen Platine verbunden ist, sondern z.B. mit 20cm Kabel mit einem Taster in der Frontplatte oder so.
hmm, bedeutet das dann, dass ich theoretisch drei ausgangszustände habe also an einem out port mit der entsprechenden beschaltung z.b. drei leuchtdioden leuchten lassen kann. also z.b. wenn ausgang mit masse verbunden > led1 mit +5V > led2 und mit keinem von beidem > led3 oder ist das schaltungstechnisch nicht zu realisieren weil der zustand eben "undefiniert" ist ?
Ganz unabhängig von irgendwelchen PullUps/Downs würde ich sagen, dass du an einem PIN nur 2 Zustände hast (0 oder 1 bzw. GND oder VCC). Damit kannst du halt ohne weitere Beschaltung auch erstmal nur 2 LEDs mit unterschiedlichem Zustand haben. Der Zustand der einen ist damit natürlich auch gleich der invertierte der anderen. Du musst natürlich hier auch PIN von PORT unterscheiden. Ein Port ist eigentlich 8 Bit breit (bei einem 8bit-Controller). Jedes Bit ist für einen Pin zuständig (sofern alle herausgeführt sind).
Ein Ausgang kann in der Tat noch einen dritten Zustand einnehmen, er kann hochohmig werden, was auch mit dem Begriff "Tristate" bezeichnet wird.
... was allerdings nicht als Ausgangssignal genutzt werden kann, sondern als Schutz dient, denn wenn du bei einem als Ausgang beschalteten Port eine Spannung anlegst und die nicht mit dem Portzustand übereinstimmt - gibts nen Kurzen!
Tristate kann man sehr wohl als dritten Zustand nutzen. Warum soll das nicht gehen? Nur weil Du Dir dafür keine Beschaltung vorstellen kannst?
Das hab ich nicht gesagt ;) Aber für mich ist es ein Zustand, und kein Signal, welches aus definierten Zuständen besteht... nutzen kann man es sehr wohl...
Hallo, nein man hat nur 2 Zustände, entweder High oder Low. Allerdings gibt es einen Bereich in dem man nicht weiß als was es der AVR erkennt, bzw wechselt erkennt er es in dem Bereich mal als High mal als Low. Hauptsächlich ist das von der Versorgungsspannung und leicht von der Temp. abhängig. Man kann eigentlich ganz grob sagen bei 5V ist Low bis 1,5V und High ab 2,0V dazwischen weiß man halt nicht was der AVR drauß macht, desween benutzt man einen Wiederstand(Pulldown) der entweder das Signal schwach belastet (also auf Masse zieht) oder einen Pullup der das Signal auf der Leitung etwas anhebt. Ich bevorzuge pullwowns denn wenn eine Leitung als Antenne wirkt geht sie eher Richtung 1 also belaste ich die Leitung etwas mit dem Pulldown und man hat auch sicher 0 statt 1. Der Tristate Zustand stellt den Port auf hochohmig so das dieser die restliche Schaltung nicht belastet so kann sich der Port praktisch unsichtbar schalten.
@Thomas O.: Tristate heißt doch soviel wie 3. Zustand. Wenn man will, dann kann man eine Schaltung aufbauen, die z.B. je eine LED bei Low, High und Tristate ansteuert. Normalerweise macht man das natürlich nicht so, aber prinzipiell geht es und in manchen (wenigen) Fällen ist das sogar sinnvoll. Markus
Hallo, klar hei0t das 3ter Zustand, aber den kann man ja praktisch nicht für Schaltaufgaben gebrauchen. Er ist dazu gedacht das sich der AVR praktisch ausklinkt und die restliche Schaltung nicht stört.
Thomas O.: Pulldown kann ich mir vorstellen, ein signal wird durch den widerstand nach ihm eindeutig als low interpretiert. Wie aber wirkt der Pullup? Eine kleine (Zwischen-)Spannung durch einen Widerstand erhöhen, so daß sie eindeutig als High erkannt wird?
Hallo, ja genau. Angenommen es werden 2V an den AVR gegeben was ja High sein soll, durch Leitungswiederstände usw. fällt das z.b. etwas ab und durch den Pullup wird sowas wieder ausgeglichen. Der Wiederstand des Pullup darf nur nicht zu klein sein sonst, tut er sogar 0V auf 2V anheben und der AVR intepretiert das als High. Aber von 0-2V hat man halt weniger Spielraum als von 2-5V, also kann man mit einem Pulldown weniger "kaputtmachen". Also selbst wenn 2 Volt abfallen dann bleiben noch 3 Volt ürig was eindeutig High ist.
Tobias: Lass dich nicht vom Tristate-Gerede verwirren ;) Ein Pullup Widerstand ist einfach ein R irgendwo im Kiloohm-Bereich, welcher zwischen den Pin und VCC geklemmt wird, ein Pulldown im Gegensatz dazu wird zwischen den Pin und GND geklemmt. Also beim Pulldown etwa so: VCC o Taster +-------------+ | _|_ | | \----o o---+---------o Controller | | | | [ ] +-------------+ [R] [ ] | o GND Wenn der Schalter offen ist, liegt am Controller GND an, wenn er geschlossen wird, liegt VCC an. Wenn Du keinen Pullup/-down einsetzt, liegt dann beim drücken zwar auch VCC an, aber wenn er offen ist, wabbelt der Pegel irgendwo rum, und es wird nur irgendwelcher Müll erkannt. Der Widerstand liegt also nicht IM Signalweg, sondern zweigt davon ab. der Flo
Weil wir grad beim Thema sind: Theoretisch wäre es ja praktisch, auch vor dem Schalter noch einen Widerstand reinzuhängen. Denn wenn aus Versehen ein Port als Ausgang beschaltet ist und ich da dann Vcc draufgebe und den Port auf Low schalte, brutzelt der mir fröhlich dahin... Wenn ich aber einen Widerstand reinbaue, habe ich wieder nen Spannungsteiler, also nicht den vollen Pegel. Ich könnte natürlich die Widerstandsverhältnisse sehr groß einstellen, aber hat das einen Sinn? Oder ist es besser zu vertrauen, dass man keinen Fehler macht? Was meint Ihr dazu?
Mach doch den Widerstand nach dem Taster, zwischen Taster und Controller. Dann ist Dein Problem gelöst. Also VCC---Taster---*---Widerstand---Controller | | Widerstand | | GND
Ithamar: Wenn Du auf Nummer Sicher gehen willst, häng doch einen kleinen Widerstand direkt vor den Pin vom µC. Als Eingang ist der hochohmig, d.h. so erhältst Du keinen Spannungsteiler. Oder Du entkoppelst den Pin mit einem Kondensator von jeglichen Gleichspannungsanteilen, wenn Du nur bei Tastern nur die Flanken messen willst. ;) der Flo
Hmm perfekt einfach - hätte ich eigentlich auch drauf kommen sollen... naja manchmal sieht man den Wald vor lauter Bäumen ned ;) Danke für die Tips!
Hi, danke Flo! Das mit dem Pulldown kann ich mir sehr gut vorstellen, allerdings wo es hackt bei mir ist der Pullup. Wenn ich 5V VCC habe und dann einen Spannungteiler vor den Eingang mache mit dem K, was "pull" ich denn dann "up" wenn ich die VCC am Eingang doch verringere. GND o Taster +-------------+ | _|_ | | \----o o---+---------o Controller | | | | [ ] +-------------+ [R] Pullup? [ ] | o VCC Taster gedrückt, Eingang auf GND. Taster nicht gedrückt, Eingang auf VCC-X.
Ist das VCC-X so dimensioniert, dass das Signal immernoch als High erkannt wird (Taster offen), allerdings einen Kurzschluss verhindert, wenn der Taster den Eingang auf GND zieht?
Genau. Das "X" in deiner Schaltung dürften nen paar Mikrovolt sein, stell dir lieber den Controller als ideales Bauelement mit unendlich grossem Innenwiderstand, was nur die Spannung misst, und den Schalter, und die Leitungen als ideale 0-Ohm Leitungen vor, damit bist Du in dem Fall nahe genug an der Realität dran. D.h. wenn Du nen Pullup/-down Widerstand von 1..10k einsetzt hast Du faktisch die beiden Zustände GND bzw. VCC am Eingang anliegen. Ein Kurzschluss tritt auch nicht auf, denn wenn Du - sagen wir mal - einen 5k Widerstand nimmst, fliessen da grad mal I = U/R = 1mA, da kann man wirklich nicht von Kurzschluss reden. In der Praxis könntest Du Probleme bekommen, wenn z.B. der Pull-Widerstand zu gross ist. Die Eingänge sind im Allgemeinen mit einer kleinen Kapazität versehen, und die muss beim Schaltvorgang mit umgeladen werden. Wenn der Widerstand zu gross ist, wird die elektrische Ladung nur langsam aus dem Kondensator abgesaugt (oder reingeschoben, je nachdem ob Pullup oder -down). Von daher fährt man mit nem Pullwiderstand von 1-5k meiner Erfahrung nach ganz gut. Soviel dazu. der Flo
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.