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?
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
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
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
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
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.
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.
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.
Richtig Olaf Gast, das kommt noch aus der TTL-Zeit.
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
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.
> 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
Ist das nicht bei STM32 beispielsweise Standard, dass es dort auch Pulldowns gibt? Mir ist glaube ich noch keiner ohne begegnet.
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.
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.
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.
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.
> 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
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.
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
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.
Andre G. schrieb: > Aber ja, ich schaue nur selten über meinen Tellerrand hinaus ... Merkt man gar nicht....
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. :(
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.
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.