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

18

Werden Pull-Up / Down-Widerstände (ob intern oder extern) nur für MCU INPUT-Pins benötigt? Im Gegensatz dazu weiß ein MCU-Pin, der als AUSGANG konfiguriert ist, "auf welchem ​​Pegel es sich befindet", weil er die Ansteuerung vornimmt - ein "schwebender" MCU-OUTPUT-Pin, der mit einem Eingang eines anderen Schaltkreises verbunden ist, macht keinen Sinn, weil der Zustand des MCU-Pins kann nur hoch oder niedrig sein ... habe ich das richtig? Jetzt kann es beim Hochfahren oder Fehlschlagen der MCU von Vorteil sein, ein Pull-Up / Down an diese Leitung "MCU-Ausgang zu IC-Eingang" anzuschließen, um sicherzustellen, dass der Eingang zu einem IC niemals potentialfrei ist.

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

The_Ders
quelle

Antworten:

21

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

Die meisten mcu-Pins sind jedoch GPIO-Pins und werden beim Start manchmal als Eingänge anstelle von Ausgängen definiert. Wie Sie sagten, möchten Sie manchmal keinen potentialfreien IC-Pin-Eingang beim Start haben, insbesondere keinen Reset-Pin, den Sie normalerweise mit dem GPIO Ihres Mikrocontrollers steuern würden.

Dies ist der Fall, wenn Sie ein schwaches Pull-up oder Pull-down in der Leitung verwenden. Da sie schwach sind und Sie den Standardzustand auswählen, wirken sie sich nicht störend auf Ihre Schaltung aus Sie verbrauchen ein bisschen Strom. Aus diesem Grund wählen Sie einen Widerstand, der schwach genug für den Job ist (je höher der Wert, desto schwächer).

Ein weiteres normales Ausgabe-Setup, das Pullups (oder Pulldowns, seltener) verwendet, sind Open Drain- oder Open Collector- Verbindungen. Diese führen nur zu einem niedrigen Verbindungspegel oder geben die Leitung frei und lassen sie frei. Die Klimmzüge werden verwendet, um die Leitung auf einen hohen Logikzustand zu bringen.

Passant
quelle
Sie erwähnen Open Drain- und Open Collector-Verbindungen, diese gelten nicht für Mikrocontroller, oder? Lediglich Mosfets, um eine logische Ebene zu setzen? Ich wollte klären, ob ein Mikrocontroller eine Leitung mit einem hohen Pulldown-Widerstand ansteuern kann oder nicht.
genericpurpleturtle
9

Sie haben es ungefähr richtig; Normalerweise benötigen Sie keine Pullups an den Ausgängen, aber diese können nützlich sein, um die Sicherheit während des Startvorgangs usw. zu gewährleisten.

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

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

Brian Drummond
quelle
4

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

Dies wird durchgeführt, um den Ausfall von Firmware / MCU zu verringern, dient jedoch nur dem Schutz vor dem Hochimpedanzzustand (im Grunde ist der Pin versehentlich als Eingang konfiguriert).

Die meisten MCUs Ich kenne die Standard-E / A-Pins für den hochohmigen Eingangszustand beim Booten (aber keine Garantie, und ich habe keine Erfahrung mit nahezu allen MCU-Familien), was bedeutet, dass es einige Zeit dauern kann, bis der Code den Pin initialisiert Zustand wird ausgeführt.

Manchmal spielt das keine Rolle, manchmal auch.

helloworld922
quelle
Vielen Dank 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) (E / A-Pin-Datenblatt).
The_Ders
3

Die Antwort ist, dass es von der Mikrocontroller-Familie abhängt und das Standardverhalten auf Power On Reset beruht. Wenn der Mikrocontroller nur für "Output" oder "Input" an einem Pin konfiguriert werden kann, bedeutet dies normalerweise, dass er einen Totem-Pole-Treiber für die Ausgabe verwendet - das heißt, es handelt sich im Wesentlichen um den Ausgang eines CMOS-Gatters Die Ausgabe wird immer auf eine Schiene gefahren, daher gibt es keinen Grund, sie passiv zu beeinflussen. Der einzige Fall, in dem die Verwendung von Pullups / Pulldowns für einen Ausgang sinnvoll ist, ist die Konfiguration als Open Collector / Open Drain-Topologie. Interne Pull-up / Pull-down-Optionen sind weitaus häufiger anzutreffen, wenn ein Pin als Eingang konfiguriert ist. Wenn Sie sicherstellen können, dass in Ihrem System der Eingang immer von etwas gesteuert wird, verschwendet dies etwas Energie.

vicatcu
quelle
Tolle Erklärung auf Hardware-Ebene. Vielen Dank!
The_Ders
2

Sie können einen Stift haben, der eine Ausgabe ist etwas von der Zeit , wie I2C tun.

pjc50
quelle
Ich werde dies berücksichtigen, wenn ich in Zukunft mit I2C arbeite. Ich glaube, mit der PIC24F-Serie übernimmt das I2C-Modul die volle Kontrolle über die Pins und die Leitungen erfordern externe Klimmzüge. Jetzt weiß ich, warum das so ist - das I2C-Modul konfiguriert den Daten-Pin im Wesentlichen als Open-Drain- / Kollektor-Ausgang (für den ein Pull-Up-Widerstand erforderlich ist) oder als hochohmigen Eingang, je nachdem, ob Daten vom / zum ausgegeben / eingegeben werden I2C-Modul ... habe ich das richtig? Ich bin nicht so vertraut mit I2C.
The_Ders
Das ist genau richtig
pjc50
I2C ist eine Instanz des verdrahteten UND-Musters. Open Collector macht es Ihnen so einfach wie mit einem GPIO-Pin.
Brian Drummond