Müssen IO-Pins jeweils einen eigenen Pull-Up/Down-Widerstand haben?

Eine ganz grundsätzliche Frage:

Muss jeder IO-Pin eines Mikrocontrollers, der als Eingang von einem Schalter oder Jumper dient, einen eigenen Pull-Up/Down-Widerstand haben?

Einfaches 3-Pin-IO-Schema

In diesem Beispiel wird jeder Pin von einem Widerstand heruntergezogen und dann von einem 1P3T-Schalter auf VCC hochgezogen.

Es scheint einfach, aber sind mehr Widerstände unbedingt erforderlich, wenn mehr IO-Pins verwendet werden? Gibt es eine clevere Möglichkeit, den Widerstandscountdown zu halten?

Verwandte Frage: Teilen eines Pullup-Widerstands

Antworten (3)

Wenn sich alle 3 Eingänge einen Widerstand teilen würden, würde gemäß dem bereitgestellten Schema jede der Leitungen, die über den Schalter hochgezogen werden, alle 3 Leitungen auf hoch heben, was dem Zweck des Designs zuwiderläuft - die MCU würde nicht wissen, welche Schalterposition ist ausgewählt.

Eine übliche Möglichkeit, die Anzahl der Teile und nicht die Anzahl der Widerstände für solche Designs zu reduzieren, besteht darin, ein gemeinsames Buswiderstandsnetzwerk oder -array zu verwenden:
Gemeinsames Bus-Widerstandsarray (von hier aus )


Diese sind je nach Bedarf als Durchsteck-SIP/DIP sowie als SMD in einer Vielzahl von Widerstandszahlen erhältlich. Der Bus-Pin ist mit Masse verbunden, und die anderen Pins sind wie in Ihrem Schaltplan mit den jeweiligen MCU-Eingängen verbunden. SIP-Widerstandsarrays (von hier )

SMD-Widerstandsarrays (von hier )

Die meisten MCUs haben optionale Pull-Up-Widerstände (nicht Down-Widerstände) für jeden Pin eingebaut, daher ist es normal, die Pins mit dem Schalter nach unten zu ziehen (und die Polaritätsumkehrung in der Software zu behandeln).

Also - keine Widerstände notwendig.

Warum Pullup, nicht Down, ist eine Gewohnheit, die von der TTL-Logikschaltung der 1970er Jahre übrig geblieben ist, wo viel weniger Strom benötigt wurde, um einen Eingang nach oben als nach unten zu ziehen - ein Pulldown-Widerstand würde mehr Energie verschwenden. Dies gilt nicht mehr für die heutige CMOS-Logik, aber die Tradition der Pull-Ups hat sich fortgesetzt, sodass frühe 5-V-CMOS-Chips mit älterer TTL-Logik kompatibel waren.

Ich dachte, der Grund für Pull-up sei, dass sie häufig mit Open-Collector-Ausgängen verwendet werden, und wenn Sie es sich einmal angewöhnt haben, in eine Richtung zu gehen, werden Sie diesen Weg ohne guten Grund fortsetzen.
Darüber hinaus können TTL-Ausgänge 16 mA aufnehmen, aber nur 800 uA liefern, sodass ein Pull-up verwendet werden kann, um einem Ausgang mehr Kraft zu verleihen. Ein TTL-Eingang würde sich selbst hochziehen, wenn Sie ihn nicht anschließen, daher erscheint mir ein Pull-up aus Eingangsgründen etwas seltsam. (Entschuldigung, ich habe mit der Bearbeitung des vorherigen Kommentars zu lange gewartet ...)
"Ein TTL-Eingang würde sich selbst hochziehen" ... bis zu einem gewissen Grad ja, aber nicht zuverlässig - das große orangefarbene Buch gibt einen 40-Mikroampere-Ih an, um Vin> 2,4 V zu garantieren (für 7400; 20 UA für 74LS). TTL-Eingänge offen zu lassen war definitiv nicht empfohlen, wo ich gearbeitet habe ...
Pulldowns versus Klimmzüge sind nicht nur historisch. Mit einem Pullup-Widerstand kann die andere Seite des Schalters geerdet werden, was oft praktisch ist.
Die Mikrocontroller-Familie MSP430 von TI verfügt sowohl über interne Pull-Ups als auch über Pull-Downs.

Sie möchten niemals einen Eingang für die Logik offen lassen, in der Annahme, dass er sich selbst nach oben oder unten ziehen würde. Wenn ein Eingang offen gelassen wird, ist er eine kleine Antenne und auch den Strömen innerhalb des Logikbausteins ausgesetzt. Sie ziehen also nach oben oder unten, um sicherzustellen, dass Sie eine saubere und vorhersehbare Eingabe haben. Ich habe diese Regel gelernt, als ich in den 1980er Jahren bei Fairchild Semiconductor gearbeitet habe.

Damit ist die gestellte Frage nicht beantwortet.
Ich denke, der Kontext der ursprünglichen Frage ist, dass es Tasten und Schalter gibt, die Eingänge für eine MCU sind. Wenn ein I/O-Pin nicht verwendet wird, kann er zu einem Ausgang gemacht und dann von der Firmware auf Low (oder High) getrieben werden. Das sollte die lauernden EMI-Probleme lösen und erfordert keinen externen Widerstand.