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

¿Las resistencias pull-up/down (ya sean internas o externas) solo se necesitan para los pines MCU INPUT? Por el contrario, un pin de MCU configurado como SALIDA "sabe en qué nivel está" porque conduce: un pin de SALIDA de MCU "flotante" vinculado a alguna entrada de otro circuito no tiene sentido, porque el estado del pin de MCU solo puede ser alto o bajo... tengo esto verdad? Ahora, tras el arranque o la falla de la MCU, puede ser beneficioso tener un pull-up/down vinculado a esta línea de "salida de la MCU a la entrada del IC" para garantizar 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, según la aplicación?

Respuestas (5)

Los pull-up y pull-down se utilizan normalmente para garantizar que una línea tenga un estado definido mientras no se conduce de forma activa. Se utilizan en las entradas para evitar líneas flotantes, cambiando rápidamente entre alta y baja y una región media "indefinida". 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 que una entrada de pin IC flote en el inicio, especialmente como un pin de reinicio que normalmente manejarías con el GPIO de tu microcontrolador.

Esto es cuando usa 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 eleva, 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 suficientemente para el trabajo.

Otra configuración de salida normal que utiliza pull-ups (o pull-downs, más raramente) son las conexiones Open Drain o Open Collector . Estos solo hacen que una conexión sea baja o liberan la línea, dejándola flotando. Los pull-ups se utilizan para llevar la línea a un estado lógico alto.

Usted menciona las conexiones Open Drain y Open Collector, estas no se aplican a los microcontroladores, ¿verdad? ¿Simplemente se utilizan Mosfets para establecer un nivel lógico? Quería aclarar si un microcontrolador puede o no controlar una línea que tiene una resistencia desplegable alta.

Lo tienes sobre la derecha; 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 desea que una conduzca VCC y otra con 0V en el mismo cable! Entonces, maneja 0V en la salida o apaga la salida (quizás configurándola como una entrada). Cuando todas las salidas están apagadas, el pullup tira del cable a '1' (Vcc). Esto se denomina señal "Y cableada". (Puede hacer lo mismo conduciendo '1' o apagado, con una R desplegable, luego se llama OR cableado).

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

Como usted 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 se configura como entrada por accidente).

La mayoría de MCU Estoy familiarizado con los pines IO predeterminados para el estado de entrada de alta impedancia en el arranque (pero no hay garantía, y no tengo experiencia con todas las familias de MCU), lo que significa que puede tomar algún tiempo antes de que el código inicialice el pin se ejecuta el estado.

A veces esto no importa, otras veces sí.

¡Gracias por la respuesta, que también complementa las otras respuestas! FYI, la serie PIC24F establece por defecto los pines GPIO en alta impedancia (entrada) al reiniciar (hoja de datos de pines de E/S).

La respuesta es que depende de la familia de microcontroladores y cuál es su comportamiento predeterminado en Power On Reset. Si el microcontrolador solo se puede configurar para "salida" o "entrada" en un pin, esto generalmente significa que está usando 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 utilizar pull-ups/pull-downs en una salida es cuando está configurada como topología Open Collector/Open Drain. Es mucho más común ver opciones pull-up/pull-down internas que solo se aplican 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.

Gran explicación a nivel de hardware. ¡Gracias!

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

Lo tendré 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 esencialmente está configurando el pin de datos como salida de colector/drenaje abierto (que requiere una resistencia pull-up) o entrada de alta impedancia, dependiendo de si los datos se envían/ingresan desde/hacia el Módulo I2C... ¿Tengo este derecho? No estoy tan familiarizado con I2C.
Eso es exactamente correcto.
I2C es una instancia del patrón AND cableado. El colector abierto lo simplifica al máximo con un pin GPIO.