Verwendung von Pull-up- und Pull-down-Widerständen an Eingangs- oder Ausgangs-MCU-Pins

Werden Pull-Up/Down-Widerstände (egal ob intern oder extern) nur für MCU INPUT-Pins benötigt? Im Gegensatz dazu "weiß ein als OUTPUT konfigurierter MCU-Pin, auf welchem ​​​​Pegel er sich befindet", weil er die Ansteuerung übernimmt - ein "schwebender" MCU-OUTPUT-Pin, der mit einem Eingang einer anderen Schaltung verbunden ist, ergibt keinen Sinn, da der Zustand des MCU-Pins kann nur hoch oder niedrig sein ... habe ich das Recht? Nun kann es beim Booten oder Versagen der MCU vorteilhaft sein, einen Pull-Up/Down mit dieser Leitung "MCU-Ausgang zu IC-Eingang" zu verbinden, um sicherzustellen, dass der Eingang zu einem IC niemals schwebend ist.

Vielleicht habe ich hier nur meine eigene Frage beantwortet ... Pull-Up / Down-Widerstände können je nach Anwendung sowohl an Eingangs- als auch an Ausgangspins verwendet werden?

Antworten (5)

Pull-up und Pull-down werden normalerweise verwendet, um sicherzustellen, dass eine Leitung einen definierten Zustand hat, während sie nicht aktiv angesteuert wird. Sie werden an Eingängen verwendet, um schwebende Leitungen zu verhindern, die schnell zwischen hoch und niedrig und einem mittleren "undefinierten" Bereich wechseln. Ausgänge benötigen sie normalerweise nicht.

Die meisten MCU-Pins sind jedoch GPIO und werden manchmal beim Start als Eingänge anstelle von Ausgängen definiert. Wie Sie sagten, möchten Sie manchmal nicht, dass ein IC-Pin-Eingang beim Start schwebt, insbesondere wie ein Reset-Pin, den Sie normalerweise mit dem GPIO Ihres Mikrocontrollers ansteuern würden.

Dies ist, wenn Sie einen schwachen Pull-up oder Pull-down auf der Linie verwenden. Da sie schwach sind und Sie den Standardzustand wählen, stören sie Ihre Schaltung nicht (wenn der Eingang immer niedrig sein soll und dann hochgezogen wird, wählen Sie einen schwachen Pulldown und umgekehrt), aber sie verbrauchen etwas Strom. Aus diesem Grund wählen Sie einen Widerstand, der für den Job schwach genug ist (je höher der Wert, desto schwächer).

Ein weiteres normales Ausgangs-Setup, das Pull-Ups (oder Pull-Downs, seltener) verwendet, sind Open-Drain- oder Open-Collector - Verbindungen. Diese treiben eine Verbindung nur auf Low oder geben die Leitung frei und lassen sie schwebend. Die Pull-Ups werden verwendet, um die Leitung in einen hohen logischen Zustand zu bringen.

Sie erwähnen Open-Drain- und Open-Collector-Verbindungen, diese gelten nicht für Mikrocontroller, oder? Lediglich Mosfets werden verwendet, um einen logischen Pegel einzustellen? Ich wollte klären, ob ein Mikrocontroller eine Leitung mit einem hohen Pulldown-Widerstand ansteuern kann oder nicht.

Sie haben es ungefähr richtig; Normalerweise benötigen Sie keine Pullups an Ausgängen, aber sie können nützlich sein, um die Sicherheit während der Startzeit usw. aufrechtzuerhalten.

Ein weiterer Grund für die Verwendung eines Pull-Ups an einem Ausgang: Wenn mehrere Ausgänge von mehreren MPUs miteinander verbunden sind, möchten Sie wirklich nicht, dass einer VCC und ein anderer 0 V auf demselben Kabel ansteuert! Sie treiben also entweder 0 V am Ausgang an oder schalten den Ausgang aus (möglicherweise indem Sie ihn als Eingang konfigurieren). Wenn alle Ausgänge ausgeschaltet sind, wird der Draht durch den Pullup auf '1' (Vcc) gezogen. Dies wird als "verdrahtetes UND"-Signal bezeichnet. (Sie können dasselbe mit einem Pulldown-R auf '1' oder aus fahren, dann wird es als verdrahtetes ODER bezeichnet).

Dieses Muster hat mehrere Verwendungszwecke, einschließlich der Möglichkeit, dass eine MPU einen Fehler signalisiert oder eine LED einschaltet, oder dass alle abwechselnd Nachrichten über eine einzige Leitung aneinander senden können.

Wie Sie bereits sagten, kann die Verwendung von Pullup- / Pulldown-Widerständen an Pins, von denen erwartet wird, dass sie Ausgangspins sind, einen Eingangszustand garantieren.

Dies geschieht, um Firmware-/MCU-Ausfälle abzumildern, schützt aber nur vor einem Hi-Impedanz-Zustand (im Grunde ist der Pin versehentlich als Eingang konfiguriert).

Bei den meisten MCUs bin ich mit Standard-IO-Pins für den hochohmigen Eingangszustand beim Booten vertraut (aber keine Garantie, und ich habe keine Erfahrung mit annähernd allen MCU-Familien), was bedeutet, dass es einige Zeit dauern kann, bis der Code den Pin initialisiert Zustand ausgeführt wird.

Manchmal spielt das keine Rolle, manchmal schon.

Danke für die Antwort, die auch die anderen Antworten ergänzt! Zu Ihrer Information, die PIC24F-Serie setzt die GPIO-Pins beim Zurücksetzen standardmäßig auf hochohmig (Eingang) (I/O-Pin-Datenblatt).

Die Antwort ist, dass dies von der Mikrocontroller-Familie und dem Standardverhalten beim Power On Reset abhängt. Wenn der Mikrocontroller nur für "Ausgabe" oder "Eingabe" an einem Pin konfiguriert werden kann, bedeutet dies normalerweise, dass er einen Totem-Pole-Treiber für die Ausgabe verwendet - das heißt, es ist im Wesentlichen der Ausgang eines CMOS-Gatters, in diesem Fall der Der Ausgang wird immer auf eine Schiene gefahren, es gibt also keinen Grund, ihn passiv zu beeinflussen. Der einzige Fall, in dem es sinnvoll ist, Pull-Ups/Pull-Downs an einem Ausgang zu verwenden, ist, wenn er als Open-Collector-/Open-Drain-Topologie konfiguriert ist. Weitaus häufiger sieht man interne Pull-up/Pull-down-Optionen, die nur anwendbar sind, wenn ein Pin als Eingang konfiguriert ist. Wenn Sie garantieren können, dass der Eingang in Ihrem System immer von etwas angetrieben wird, verschwendet dies ein wenig Strom.

Tolle Erklärung auf Hardware-Ebene. Danke dir!

Sie können einen Pin haben, der manchmal ein Ausgang ist , z . B. für I2C.

Ich werde dies berücksichtigen, wenn ich in Zukunft mit I2C arbeite. Ich glaube, dass bei der PIC24F-Serie das I2C-Modul die volle Kontrolle über die Pins übernimmt und die Leitungen externe Pull-ups erfordern. Jetzt weiß ich, warum das so ist - das I2C-Modul konfiguriert den Datenpin im Wesentlichen als Open-Drain-/Kollektorausgang (erfordert einen Pull-up-Widerstand) oder als hochohmigen Eingang, je nachdem, ob Daten von/zu ausgegeben/eingegeben werden I2C-Modul ... habe ich das Recht? Ich kenne mich mit I2C nicht so gut aus.
Das ist genau richtig.
I2C ist eine Instanz des Wired-AND-Musters. Open Collector macht es so einfach wie mit einem GPIO-Pin.