Uso de resistencia pull-up y pull-down en pines MCU de entrada o salida

18

¿Las resistencias pull-up / down (ya sean internas o externas) solo son necesarias para los pines MCU INPUT? Por el contrario, un pin MCU configurado como OUTPUT "sabe a qué nivel está" porque conduce; un pin OUTPUT MCU "flotante" conectado a alguna entrada de otro circuito no tiene sentido, porque el estado del pin MCU solo puede ser alto o bajo ... ¿tengo este derecho? Ahora, después de un arranque o falla de MCU, puede ser beneficioso tener un pull-up / down atado a esta línea "MCU output to IC input" para asegurar que la entrada a algún IC nunca esté flotando.

Tal vez acabo de responder mi propia pregunta aquí ... ¿se pueden usar resistencias pull-up / down en los pines de entrada y salida, dependiendo de la aplicación?

The_Ders
fuente

Respuestas:

21

Las opciones Pull-up y Pull-down se usan normalmente para garantizar que una línea tenga un estado definido mientras no se maneja activamente. Se usan en entradas para evitar líneas flotantes, cambiando rápidamente entre alta y baja y una región "indefinida" media. Las salidas normalmente no las necesitan.

Pero la mayoría de los pines mcu son GPIO, y a veces en el inicio se definen como entradas en lugar de salidas. Como dijiste, a veces no quieres una entrada de pin IC flotante en el inicio, especialmente como un pin de reinicio que normalmente manejarías con el GPIO de tu microcontrolador.

Esto es cuando utiliza un pull-up o pull-down débil en la línea. Debido a que son débiles y usted elige el estado predeterminado, no proporcionan interferencia con su circuito (si se supone que la entrada es baja en todo momento, luego se coloca en alto, elige un menú desplegable débil y viceversa), pero consumen un poco de corriente. Es por eso que elige una resistencia débil (cuanto mayor sea el valor, más débil) lo suficiente para el trabajo.

Otra configuración de salida normal que utiliza pull-ups (o pull-down, más raros) es la conexión Open Drain o Open Collector . Estos solo conducen a una conexión baja o liberan la línea, dejándola flotando. Los pull-ups se usan para llevar la línea a un estado lógico alto.

Transeúnte
fuente
Mencionas las conexiones Open Drain y Open Collector, ¿no se aplican a los microcontroladores? ¿Simplemente Mosfets se utilizan para establecer un nivel lógico? Quería aclarar si un microcontrolador puede o no conducir una línea que tiene una resistencia de extracción alta.
genericpurpleturtle
9

Lo tienes bien; normalmente no necesita pullups en las salidas, pero pueden ser útiles para mantener la seguridad durante el tiempo de arranque, etc.

Otra razón para usar un pull-up en una salida: si varias salidas de varias MPU están conectadas entre sí, ¡ realmente no querrá una unidad VCC y otra unidad 0V en el mismo cable! Entonces, usted conduce 0V en la salida o apaga la salida (quizás configurándola como entrada). Cuando todas las salidas están apagadas, el cable se tira a '1' (Vcc) por el pullup. Esto se llama señal "cableada Y". (Puede hacer lo mismo conduciendo '1' o apagado, con un R desplegable, luego se llama OR conectado).

Este patrón tiene varios usos, incluido permitir que cualquier MPU señale un error o encienda un LED, o que se turnen para enviarse mensajes entre sí en un solo cable.

Brian Drummond
fuente
4

Como indicó, el uso de resistencias pullup / pulldown en los pines que se espera que sean pines de salida puede estar allí para garantizar un estado de entrada.

Esto se hace para mitigar la falla del firmware / MCU, pero solo funcionará para proteger contra el estado de alta impedancia (básicamente el pin está configurado como entrada por accidente).

La mayoría de las MCU estoy familiarizado con los pines de E / S predeterminados para el estado de entrada de alta impedancia en el arranque (pero no tengo garantía, y no tengo experiencia en ninguna parte cerca de todas las familias de MCU), lo que significa que puede tomar un tiempo antes de que el código inicialice el pin Se ejecuta el estado.

A veces esto no importa, otras veces sí.

helloworld922
fuente
¡Gracias por la respuesta, que complementa las otras respuestas también! Para su información, la serie PIC24F predetermina los pines GPIO a alta impedancia (entrada) al restablecer (hoja de datos de pines de E / S).
The_Ders
3

La respuesta es que depende de la familia de microcontroladores, y cuál es su comportamiento predeterminado es en el reinicio de encendido. Si el microcontrolador solo se puede configurar para "salida" o "entrada" en un pin, esto generalmente significa que está utilizando un controlador Totem-Pole para la salida, lo que significa que es esencialmente la salida de una puerta CMOS, en cuyo caso el la salida siempre se dirige a un riel, por lo que no hay razón para influir pasivamente en ella. El único caso en el que tiene sentido usar pull-ups / pull-down en una salida es cuando está configurado como topología Open Collector / Open Drain. Es mucho más común ver las opciones internas de pull-up / pull-down que solo son aplicables cuando un pin está configurado como entrada. Si puede garantizar que en su sistema la entrada siempre esté impulsada por algo, esto desperdicia un poco de energía.

vicatcu
fuente
Gran explicación a nivel de hardware. ¡Gracias!
The_Ders
2

Puede tener un pin que es una salida algunas veces , como para hacer I2C.

pjc50
fuente
Tendré esto en cuenta cuando trabaje con I2C en el futuro. Creo que con la serie PIC24F, el módulo I2C asume el control total sobre los pines y las líneas requieren pull-ups externos. Ahora sé por qué es esto: el módulo I2C está configurando esencialmente el pin de datos como salida de drenaje abierto / colector (que requiere una resistencia pull-up) o entrada de alta impedancia, dependiendo de si los datos se emiten / ingresan desde / hacia el Módulo I2C ... ¿tengo este derecho? No estoy tan familiarizado con I2C.
The_Ders
Eso es exactamente correcto.
pjc50
I2C es una instancia del patrón AND cableado. El colector abierto lo hace tan simple como podrías con un pin GPIO.
Brian Drummond