Wykorzystanie rezystora pull-up i pull-down na wejściowych lub wyjściowych pinach MCU

18

Czy rezystory podwyższające / obniżające (wewnętrzne lub zewnętrzne) są potrzebne tylko dla pinów MCU INPUT? W przeciwieństwie do tego, pin MCU skonfigurowany jako OUTPUT „wie, na jakim poziomie jest”, ponieważ wykonuje sterowanie - „pływający” pin MCU OUTPUT powiązany z wejściem innego obwodu nie ma sensu, ponieważ stan pinu MCU może być tylko wysoka lub niska ... czy mam to prawo? Teraz, po uruchomieniu lub awarii MCU, może być korzystne połączenie pull-up / down z linią „Wyjście MCU na wejście IC”, aby mieć pewność, że wejście do niektórych układów scalonych nigdy się nie unosi.

Może właśnie odpowiedziałem tutaj na moje pytanie ... w zależności od zastosowania można zastosować rezystory podwyższające / zmniejszające na pinach wejściowych i wyjściowych?

The_Ders
źródło

Odpowiedzi:

21

Pull-up i Pull-down są zwykle używane, aby upewnić się, że linia ma określony stan, ale nie jest aktywnie napędzana. Są one stosowane na wejściach w celu zapobiegania ruchomym liniom, szybkiemu przełączaniu między wysokim i niskim a środkowym „niezdefiniowanym” obszarem. Wyjścia zwykle ich nie potrzebują.

Ale większość pinów mcu to GPIO, a czasem przy uruchomieniu są definiowane jako wejścia zamiast wyjść. Jak powiedziałeś, czasami nie chcesz, aby wejście pinowe IC działało przy starcie, szczególnie jak pin resetowany, który normalnie prowadziłbyś GPIO mikrokontrolera.

Dzieje się tak, gdy używasz Słabego podciągania lub podciągania na linii. Ponieważ są one słabe, a ty wybierasz stan domyślny, nie powodują one zakłóceń w obwodzie (jeśli wejście ma być przez cały czas niskie, a następnie podniesione do góry, wybierasz słabe rozwijanie i odwrotnie), ale zużywają trochę prądu. Właśnie dlatego wybrałeś wystarczająco słaby rezystor (im wyższa wartość, tym słabszy) do pracy.

Inną normalną konfiguracją wyjściową, która wykorzystuje pull-upy (lub pull-upy, rzadziej) są połączenia Open Drain lub Open Collector . To tylko doprowadza połączenie do stanu niskiego lub zwalnia linię, pozostawiając ją swobodną. Podciągnięcia służą do doprowadzenia linii do wysokiego stanu logicznego.

Przechodzień
źródło
Wspominasz o połączeniach Open Drain i Open Collector, nie dotyczą one mikrokontrolerów, prawda? Czy tylko Mosfety są używane do ustawiania poziomu logicznego? Chciałem wyjaśnić, czy mikrokontroler może prowadzić linię, która ma wysoki rezystor obniżający.
genericpurpleturtle
9

Masz rację; normalnie nie potrzebujesz podciągnięć na wyjściach, ale mogą one być przydatne do zachowania bezpieczeństwa podczas rozruchu itp.

Jest jeszcze jeden powód, dla którego stosuje się pull-up na wyjściu: jeśli kilka wyjść z kilku MPU jest ze sobą połączonych, tak naprawdę nie chcesz jednego napędzającego VCC i drugiego napędzającego 0V tym samym przewodem! Więc albo napędzasz 0V na wyjściu, albo wyłączasz wyjście (być może poprzez skonfigurowanie go jako wejścia). Gdy wszystkie wyjścia są wyłączone, drut jest ciągnięty do '1' (Vcc) przez pullup. Nazywa się to sygnałem „przewodowym AND”. (Możesz wykonać tę samą jazdę „1” lub wyłączyć, z rozwijanym menu R, wtedy nazywa się to przewodowym LUB).

Ten wzorzec ma kilka zastosowań, w tym zezwalanie jednemu MPU na sygnalizowanie błędu lub włączanie diody LED, lub zezwalanie im wszystkim na zmianę wysyłania wiadomości do siebie jednym przewodem.

Brian Drummond
źródło
4

Jak już wspomniałeś, użycie rezystorów pullup / pulldown na pinach, które mają być wyjściowymi pinami, może być tam, aby zagwarantować stan wejściowy.

Ma to na celu złagodzenie awarii oprogramowania układowego / MCU, ale będzie działać tylko w celu ochrony przed stanem wysokiej impedancji (w zasadzie pin jest skonfigurowany jako wejście przypadkowo).

Większość MCU Jestem zaznajomiony z domyślnymi pinami IO do stanu wejścia o wysokiej impedancji podczas rozruchu (ale nie ma gwarancji i nie mam doświadczenia z żadnym z pobliskich rodzin MCU), co oznacza, że ​​inicjalizacja kodu może zająć trochę czasu stan jest wykonywany.

Czasami to nie ma znaczenia, innym razem ma to znaczenie.

helloworld922
źródło
Dzięki za odpowiedź, która uzupełnia również inne odpowiedzi! FYI, seria PIC24F domyślnie wyprowadza styki GPIO na wysoką impedancję (wejście) po resecie (arkusz danych styków I / O).
The_Ders
3

Odpowiedź brzmi: zależy to od rodziny mikrokontrolerów, a domyślnym zachowaniem jest Power On Reset. Jeśli mikrokontroler może być skonfigurowany tylko do „wyjścia” lub „wejścia” na pinie, oznacza to zwykle, że używa sterownika Totem-Pole do wyjścia - to znaczy zasadniczo jest to wyjście bramki CMOS, w którym to przypadku wyjście jest zawsze doprowadzane do szyny, więc nie ma powodu, aby pasywnie na nią wpływać. Jedynym przypadkiem, w którym sensowne jest użycie podciągania / rozwijania na wyjściu, jest skonfigurowanie go jako topologia Open Collector / Open Drain. O wiele bardziej powszechne są wewnętrzne opcje podciągania / opuszczania, które mają zastosowanie tylko wtedy, gdy pin jest skonfigurowany jako wejście. Jeśli możesz zagwarantować, że w twoim systemie wejście zawsze jest napędzane przez coś, to marnuje trochę energii.

vicatcu
źródło
Świetne wyjaśnienie na poziomie sprzętowym. Dziękuję Ci!
The_Ders
2

Możesz mieć pin, który jest czasem wyjściowy , na przykład do robienia I2C.

pjc50
źródło
Będę o tym pamiętać podczas pracy z I2C w przyszłości. Wierzę, że w przypadku serii PIC24F moduł I2C przejmuje pełną kontrolę nad pinami, a linie wymagają zewnętrznych podciągnięć. Teraz wiem, dlaczego tak jest - moduł I2C zasadniczo konfiguruje pin danych jako wyjście typu otwarty-odpływ / kolektor (wymagający rezystora podciągającego) lub wejście o wysokiej impedancji, w zależności od tego, czy dane są wysyłane / wprowadzane z / do Moduł I2C ... czy mam to prawo? Nie znam się na I2C.
The_Ders
Dokładnie tak.
pjc50
I2C jest jednym z przykładów przewodowego wzorca AND. Otwarty kolektor sprawia, że ​​jest to tak proste, jak to możliwe dzięki pinowi GPIO.
Brian Drummond,