¿Deben los pines IO tener cada uno su propia resistencia pull-up/down?

Una pregunta muy básica:

¿Cada pin IO de un microcontrolador que sirve como entrada de un interruptor o puente debe tener su propia resistencia pull-up/down?

Esquema simple de E/S de 3 pines

En este ejemplo, cada pin es bajado por una resistencia, luego levantado por un interruptor 1P3T a VCC.

Parece sencillo, pero a medida que se usan más pines IO, ¿se requieren absolutamente más resistencias? ¿Hay alguna forma inteligente de mantener la cuenta regresiva de la resistencia?

Pregunta relacionada: Compartir una resistencia pull-up

Respuestas (3)

Según el esquema proporcionado, si las 3 entradas compartieran una resistencia, entonces cualquiera de las líneas que se elevan a través del interruptor elevaría las 3 líneas a un nivel alto, contrarrestando el propósito del diseño: la MCU no sabría qué posición del interruptor es seleccionado.

Una forma común de reducir el conteo de piezas , no el conteo de resistencias, para tales diseños es usar una red o matriz de resistencias de bus común:
Conjunto de resistencias de bus común (desde aquí )


Estos están disponibles como SIP/DIP de orificio pasante, así como SMD, en una variedad de recuentos de resistencias, según sus necesidades. El pin del bus está conectado a tierra y los otros pines están conectados a las respectivas entradas de MCU como en su esquema. Matrices de resistencias SIP (desde aquí )

Conjuntos de resistencias SMD (desde aquí )

La mayoría de los MCU tienen resistencias pull-up (no down) opcionales incorporadas para cada pin, por lo que es normal tirar de los pines hacia ABAJO con el interruptor (y lidiar con la inversión de polaridad en el software).

Entonces, no se necesitan resistencias.

En cuanto a por qué pullup, no down, es un hábito que quedó del circuito lógico TTL de la década de 1970, donde se necesitaba mucha menos corriente para subir una entrada que para bajarla: una resistencia pulldown desperdiciaría más energía. Esto ya no se aplica a la lógica CMOS actual, pero la tradición de pull-ups ha persistido, por lo que los primeros chips CMOS de 5 V eran compatibles con la lógica TTL más antigua.

Pensé que el motivo del pull-up era que su uso común era con salidas de colector abierto, y una vez que tienes el hábito de ir en una dirección, seguirás yendo en esa dirección sin una buena razón.
Además, las salidas TTL pueden hundir 16 mA pero generar solo 800 uA, por lo que se puede usar un pull-up para agregar fuerza a una salida. Una entrada TTL se levantaría sola si no la conectara, por lo que un pull-up por razones de entrada me parece un poco extraño. (Lo siento, esperé demasiado para editar el comentario anterior...)
"una entrada TTL se levantaría sola" ... hasta cierto punto, sí, pero no de manera confiable: el gran libro naranja especifica un Ih de 40 microamperios para garantizar Vin> 2.4V (para 7400; 20ua para 74LS) Dejando las entradas TTL abiertas definitivamente fue no recomendado en ningún lugar donde trabajé...
Pulldowns versus pullups no es simplemente histórico. Con una resistencia pull-up, el otro lado del interruptor se puede conectar a tierra, lo que suele ser conveniente.
La familia de microcontroladores TI MSP430 tiene pull-ups y pull-downs internos.

Nunca querrás dejar abierta una entrada a la lógica suponiendo que subiría o bajaría por sí misma. si una entrada se deja abierta, es una pequeña antena y también está sujeta a las corrientes dentro del dispositivo lógico. Así que tira hacia arriba o hacia abajo para asegurarse de tener una entrada limpia y predecible. Aprendí esta regla mientras trabajaba en Fairchild Semiconductor en la década de 1980.

Esto no responde a la pregunta que se hizo.
Creo que el contexto de la pregunta original es que hay botones y conmutadores que son entradas para una MCU. Si un pin de E/S no se usa, se puede convertir en una salida y luego controlarse a nivel bajo (o alto) desde el firmware. Eso debería abordar los problemas de EMI al acecho, y no requiere una resistencia externa.