Forum: Mikrocontroller und Digitale Elektronik Warum interne pull ups und keine internen pull downs?


von Andre G. (andgst01)


Lesenswert?

Schönen Montag Morgen,

wieder mal so eine Thematik die mich schon seit Ewigkeiten irritiert:

Warum haben µCs interne pull-up Widerstände?
Warum nicht pull-down?

Das würde doch von der Logik her mehr Sinn machen?
(Taster wird gedrückt -> logisches HIGH Signal am Pin des µCs)


Hat das irgendwelche schaltungstechnischen Gründe?
Oder ist das einfach vor langer Zeit mal willkürlich gewählt worden und 
hat sich dann mit der Zeit zum "Standard" entwickelt?

von Johannes K. (krjdev)


Lesenswert?

Finde diese Erklärung nicht schlecht auf der StackExchange Seite 
Electrical Engineering:
https://electronics.stackexchange.com/questions/361767/pull-down-resistor-confusion?answertab=active#tab-top

von Christian M. (christian_m280)


Lesenswert?

1. Ist es völlig egal, ob Du jetzt auf H oder L testest

2. Werden nicht nur Taster an Eingänge angeschlossen

3. Sind Ausgänge entweder Push/Pull oder Open-collector/drain. Das ist 
eine Vereinbarung für z.B. kombinatorische Logik und andere Anwendungen, 
wo gegen VCC/VDD geschaltet werden soll

Es ginge auch umgekehrt, und ist sogar manchmal nötig, aber weit 
seltener. Siehe auch die sogenannten NPN oder PNP Sensorausgänge in der 
Industrie.

Gruss Chregu

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Angehängte Dateien:

Lesenswert?

Andre G. schrieb:
> Warum haben µCs interne pull-up Widerstände?
> Warum nicht pull-down?

Das kommt auf den µC an.
Erklärungen warum das bei den Meisten so ist stehen ja schon und muss 
ich nicht wiederhohlen.
Bei den MSP430 als Beispiel (Siehe Bild), sind es sowohl als auch.
Soll heißen man kann sie als PullUp oder PullDown Konfigurieren, was so 
Quasi jedes PIO zu einem 5 Zustandspinn macht. In Gewissen Situationen, 
kann man damit eine LED in 5 Helligkeitsstufen leuchten lassen. Habe 
dieses Future auch schon oft dazu Missbraucht.

Da aber meistens nicht für LED sondern um Rel. Zuerst mit Maximal 
Leistung anziehen und dann mit Haltestrom zu halten. Oder als Beeper 
Lautstärke usw.
Also quasi ein 2Bit DA Wandler mit On/Off Zusatz.

Oder das Abfragen von Schalter/Taster mit minimalem Stromverbrauch 
(unter 10nA im Schnitt pro Schalter/Taster, bei 10 Änderungen pro Tag) 
usw.
1
 {
2
    IF PxIN = VCC THEN PullUp ELSE PullDown //Interrupt switch to Powersave
3
 }

: Bearbeitet durch User
von Olaf (Gast)


Lesenswert?

Es gibt durchaus auch Mikrocontroller die interne Pulldowns haben!
Ist aber eher eine neuere Erscheinung.

Urspruenglich geht das ganze auf die guten alten MCS48 oder MCS51 
zurueck
die nur Ausgaenge hatten die stark nach unten ziehen konnten und nach 
oben nur wenig Muskeln hatten. Das seht ihr heute noch am PCF8574.


Olaf

von Wolfgang (Gast)


Lesenswert?

Andre G. schrieb:
> Warum haben µCs interne pull-up Widerstände?
> Warum nicht pull-down?

Dadurch ist es möglich, Schalter anzuschließen, die einfach nach Masse 
schalten. Andernfalls müsstest du die Versorgungsspannung zum Schalter 
führen und müsstest sie gegen Kurzschluss schützen (Zusatzaufwand). Die 
Verwendung der internen Widerstände setzt allerdings sowieso immer 
Kontakte voraus, die trotz des geringen Stromes sauber bleiben.

> Das würde doch von der Logik her mehr Sinn machen?
> (Taster wird gedrückt -> logisches HIGH Signal am Pin des µCs)

Es ist völlig egal, wie du TASTER_GEDRUECKT definierst. In einem sauber 
formulierten Programm siehst du das im Code gar nicht. Es gibt nur 
einmal die Zustandsdefinitionen, die jederzeit geändert werden können 
und die alternative Initialisierung.

von (prx) A. K. (prx)


Lesenswert?

Olaf schrieb:
> Urspruenglich geht das ganze auf die guten alten MCS48 oder MCS51
> zurueck

Das ist schon in der Charakteristik von TTL angelegt, davor bereits in 
anderen auf NPN Transistoren basierenden RTL/DTL Logiken. Da ist die 
vorherrschende Denkweise, dass Eingänge low-level aktiv sind.

Bei der ähnlich alten CMOS Logik mit symmetrischer Charakteristik findet 
sich häufiger auch high-aktiv.

von (prx) A. K. (prx)


Lesenswert?

Andre G. schrieb:
> Das würde doch von der Logik her mehr Sinn machen?
> (Taster wird gedrückt -> logisches HIGH Signal am Pin des µCs)

Das ist einerseits reine Konvention, Denkweise. Andererseits birgt eine 
Verkabelung von Tastern mit Signal und GND weniger Gefahr von 
Kurzschlüssen der Versorgungsspannung.

von Walter L. (Gast)


Lesenswert?

Richtig Olaf Gast, das kommt noch aus der TTL-Zeit.

von (prx) A. K. (prx)


Lesenswert?

Obendrein kann man Eingänge stets nebenwirkungsfrei auf GND schalten, 
auch wenn die Baugruppe stromlos ist. Sie über den Eingang mit Strom zu 
versorgen, kann recht seltsame Effekte bewirken.

: Bearbeitet durch User
von Teo D. (teoderix)


Lesenswert?

Für Taster waren die doch eh nie wirklich gedacht. Viel zu schwach, um 
die am Leben zu halten oder die Taster zu teuer.
Simple, platzsparende Dies, da sind halt "gute" N-Channel einfacher zu 
verwirklichen. Die eh wesentlich schlechteren P-Channel, taugen dann gut 
als Pul-Ups. Da lässt es sich halt einfacher, gegen mehrere (FanOut) 
Pull-Ups an stinken.

von Olaf (Gast)


Lesenswert?

> Für Taster waren die doch eh nie wirklich gedacht. Viel zu schwach, um
> die am Leben zu halten oder die Taster zu teuer.

Dazu muesste man aber wissen das Taster einen Mindeststrom brauchen, das 
weiss heute aber kaum noch einer. :-)

Olaf

von Ausbilder Schmidt (Gast)


Lesenswert?

Ist das nicht bei STM32 beispielsweise Standard, dass es dort auch 
Pulldowns gibt? Mir ist glaube ich noch keiner ohne begegnet.

von Peter D. (peda)


Lesenswert?

Olaf schrieb:
> Dazu muesste man aber wissen das Taster einen Mindeststrom brauchen, das
> weiss heute aber kaum noch einer. :-)

So pauschal gesagt ist das falsch.
Taster in Tastaturen und FBs kommen sehr wohl mit 3V und dem Strom der 
Pullups aus.
Nur die alten groben Taster aus Schaltschränken wollen mindestens 24V 
sehen. Aber auch da gibt es inzwischen Ausführungen, die µC geeignet 
sind.

von Klaus S. (kseege)


Lesenswert?

Olaf schrieb:
> Urspruenglich geht das ganze auf die guten alten MCS48 oder MCS51
> zurueck

Nein, noch etliche Jahre weiter zurück. Schon die PDP11 aus den 60er 
Jahren des vorigen Jahrhunderts hatte einen Backplane-Bus aus 
OpenCollectorTreibern mit Pullup-Widerständen.

Ich vermute aber auch (wie einige Andere hier), daß der 
Low-Side-Schalter damals einfach billiger herzustellen war. Das müßte 
aber eher in einem internationalen Forum zu klären sein, da gibts 
manchmal noch Entwickler aus der Zeit.

von (prx) A. K. (prx)


Lesenswert?

Klaus S. schrieb:
> Ich vermute aber auch (wie einige Andere hier), daß der
> Low-Side-Schalter damals einfach billiger herzustellen war.

Ich hatte ja schon TTL wie 7400 angeführt:
Vih 2,4v @ 40 µA   = Pullup-R   <= 50 kOhm.
Vil 0,8V @ 1,6 mA  = Pulldown-R <= 500 Ohm.

von Andre G. (andgst01)


Lesenswert?

Danke für die vielen Antworten!

Also hat das mehrere Gründe und ist auch nicht bei allen µCs so.
Ich persönlich habe eben nur mit den AtMegas zu tun und die haben alle 
nur pullups.

Ja, Open Collector Anwendungen habe ich vollkommen vergessen.
Da machen pullups mehr Sinn.

Und auch die Sache mit den Widerstandswerten die man benötigt um die 
gewünschten Logik-Level zu erzeugen ist einleuchtend.

von Olaf (Gast)


Lesenswert?

> So pauschal gesagt ist das falsch.
> Taster in Tastaturen und FBs kommen sehr wohl mit 3V und dem Strom der
> Pullups aus.

Nein, ich hab schon Datenblaetter fuer diese kleinen Minitaster gesehen 
wie sie bei Discmans, Walkman, Autoradios usw, eingesetzt werden wo ein 
Mindeststrom drin stand.

Man muss immer das Datenblatt zum jeweiligen Taster lesen und sich bei 
billigen Chinatastern fragen ob der Hersteller das auch weiss.

Das Problem bei solchen Dingen ist aber das man auch mit falschen 
Widerstaenden durch die Garantiezeit kommt. Erst ob die Frage aufkommt 
ob das Geraet nur 5Jahre oder doch 10 oder laenger halten soll wird das 
relevant. Taster haben ja oft nicht die Schalthaeufigkeit.

Bei Relais wird das dann noch interessanter weil es da ja 
unterschiedliche Kontaktmaterialien gibt und es auch einen Unterschied 
macht welche Spannung man schaltet. Das wuerde im uebrigen fuer diese 
kleinen Taster/Schalter auch gelten, aber ueblicherweise werden damit ja 
nur 3.3V geschaltet und nicht 24 oder 60V auch wenn die oft dafuer 
zugelassen sind.

Olaf

von Cyblord -. (cyblord)


Lesenswert?

Solche Fragen tauchen auf, wenn die eigene kleine Welt sich nur um AVRs 
dreht. Meistens dann noch um welche der Marke Asbach Uralt.
Eine komplett von der Realität abgekoppelte kleine Arduino Welt. Eine 
Blase der Inkompetenz und Unwissenheit.

von Andre G. (andgst01)


Lesenswert?

Cyblord -. schrieb:
> Solche Fragen tauchen auf, wenn die eigene kleine Welt sich nur um AVRs
> dreht. Meistens dann noch um welche der Marke Asbach Uralt.
> Eine komplett von der Realität abgekoppelte kleine Arduino Welt. Eine
> Blase der Inkompetenz und Unwissenheit.

Ich verwende meist AtMega2560 auf eigenen Boards.
Die 2560er sind sicher nicht die neuesten µCs aber auch nicht sooo alt 
...

Von Arduino halte ich nicht viel.

Aber ja, ich schaue nur selten über meinen Tellerrand hinaus ...

: Bearbeitet durch User
von Cyblord (Gast)


Lesenswert?

Cyblord -. schrieb:
> Solche Fragen tauchen auf, wenn die eigene kleine Welt sich nur um AVRs
> dreht. Meistens dann noch um welche der Marke Asbach Uralt.
> Eine komplett von der Realität abgekoppelte kleine Arduino Welt. Eine
> Blase der Inkompetenz und Unwissenheit.

Solche Beiträge tauchen auf, wenn nichtmal Hand anlegen mehr 
befriedigend funktioniert und der Geist das nicht verarbeiten kann.

von Cyblord -. (cyblord)


Lesenswert?

Andre G. schrieb:
> Aber ja, ich schaue nur selten über meinen Tellerrand hinaus ...

Merkt man gar nicht....

von M. K. (sylaina)


Lesenswert?

Cyblord -. schrieb:
> Solche Fragen tauchen auf, wenn die eigene kleine Welt sich nur um AVRs
> dreht. Meistens dann noch um welche der Marke Asbach Uralt.
> Eine komplett von der Realität abgekoppelte kleine Arduino Welt. Eine
> Blase der Inkompetenz und Unwissenheit.

Und leider trägt dein Beitrag nicht dazu beim mehr Wissen zu generieren. 
:(

von Cyblord -. (cyblord)


Lesenswert?

M. K. schrieb:
> Cyblord -. schrieb:
>> Solche Fragen tauchen auf, wenn die eigene kleine Welt sich nur um AVRs
>> dreht. Meistens dann noch um welche der Marke Asbach Uralt.
>> Eine komplett von der Realität abgekoppelte kleine Arduino Welt. Eine
>> Blase der Inkompetenz und Unwissenheit.
>
> Und leider trägt dein Beitrag nicht dazu beim mehr Wissen zu generieren.
> :(

Es muss auch jemanden geben der den Status quo zusammenfasst und das 
Problem benennt. Bevor man ein Problem lösen kann, muss es erst mal 
bekannt sein.

von Peter D. (peda)


Lesenswert?

Olaf schrieb:
> Nein, ich hab schon Datenblaetter fuer diese kleinen Minitaster gesehen
> wie sie bei Discmans, Walkman, Autoradios usw, eingesetzt werden wo ein
> Mindeststrom drin stand.

Ich habe noch keine PC-Tastatur oder FB gesehen, wo zusätzliche Pullups 
verbaut sind. Üblich sind ja in PC-Tastaturen Folien, die 
zusammengedrückt werden und in FBs Gummimatten.

Und hier mal ein Taster ohne Mindeststrom, der für CMOS und digital 
empfohlen wird (max 10mA):

https://de.farnell.com/nsf-controls/623300-001-060-010/schalter-spdt-gr-ne-led/dp/1165219

von Bauform B. (bauformb)


Lesenswert?

Ausbilder Schmidt schrieb:
> Ist das nicht bei STM32 beispielsweise Standard, dass es dort auch
> Pulldowns gibt? Mir ist glaube ich noch keiner ohne begegnet.

Ist es. Aber nur die am JTAG/SWD-Port sind nach einem Reset oder im 
Standby eingeschaltet, alle anderen Pins floaten. Man braucht also an 
vielen Pins trotzdem externe Widerstände.

Erst bei den neueren L4, G0, G4 (nicht L0) kann man sie auch im Standby 
einschalten. Dann floaten die Pins (hoffentlich) nur noch direkt nach 
dem Einschalten.  Witzigerweise bekommt man bei einer Fehlkonfiguration 
Pull-Down.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Bauform B. schrieb:
> Witzigerweise bekommt man bei einer Fehlkonfiguration
> Pull-Down.

Hängt damit zusammen dass die Register üblicherweise eine "0" haben, was 
dann eben als PullDown geschaltet wird. ;-)

Erkennt man bei meinem Bild, das ist bei verschiedenen µC so, die beides 
unterstützen.
EWobei ich gerade sehe dass ich auf dem Bild Pull-Up und Pull-Down 
Vertauscht habe SORRY
0=PullDown 1= PullUp
Beitrag: 
Beitrag "Re: Warum interne pull ups und keine internen pull downs?"

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Olaf schrieb:
>> Taster in Tastaturen und FBs kommen sehr wohl mit 3V und dem Strom der
>> Pullups aus.
>
> Nein, ich hab schon Datenblaetter fuer diese kleinen Minitaster gesehen
> wie sie bei Discmans, Walkman, Autoradios usw, eingesetzt werden wo ein
> Mindeststrom drin stand.

Der liegt typischerweise bei 10µA, die minimale Spannung bei 1 bis 2V.
Diese Taster passen sehr gut zu Mikrocontrollereingängen mit internen
Pullup-Widerständen. Sie werden ja auch primär für solche Anwendungen
hergestellt. Tastertypen, für die der spezifizierte Mindeststrom höher
liegt oder für die das Datenblatt keine entsprechenden Angaben enthält,
gibt es natürlich auch, aber niemand ist gezwungen, diese zu verwenden.

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.