¿Es posible leer una matriz de conmutación de 10 por 10 con 8 por 8 pines de E / S?

1

Me hicieron esta pregunta en una entrevista: dados 8 pines de salida y 8 pines de entrada en un microcontrolador, ¿es posible leer una matriz de 10 por 10 sin utilizar chips de multiplexor y demultiplexor? No estoy seguro de que sea posible ...

    
pregunta Gio

2 respuestas

2

Haría algo como esto:

simular este circuito : esquema creado usando CircuitLab

Utilizo 7 de las salidas y 8 de las entradas para crear una matriz de 56 puntos de cruce, y coloco dos interruptores en cada punto de cruce, para un total de 112 interruptores. La octava salida se utiliza para controlar un conjunto de resistencias pullup / pulldown para las entradas.

Escanear la matriz dos veces. La primera vez, establezca Out7 low y pulse las demás salidas high a la vez. Busque cualquier entrada que vaya alto. Esto le indica si el interruptor inferior en cada punto de cruce está cerrado.

La segunda vez, establece Out7 alto y pulsa las otras salidas una por una. Busque cualquier entrada baja. Esto le indica si el interruptor superior en cada punto de cruce está cerrado.

    
respondido por el Dave Tweed
0

Con 8 pines de salida y 8 de entrada, puede crear una matriz de 64 cruces, con un interruptor en cada cruce. Tendría algunos problemas cuando se pueden cerrar varios interruptores al mismo tiempo, por lo que es posible que desee utilizar un diodo en cada interruptor. Y no te olvides de los pull-ups para las entradas. Eso es lo que se puede hacer de manera directa, y mi intuición es que eso es lo que el entrevistador quería escuchar.

Si no hay necesidad de detectar los cierres de múltiples interruptores correctamente, podría usar un diodo matris, por lo que cada interruptor puede poner su código único en las 8 entradas. No se necesitan salidas, se pueden detectar hasta 255 interruptores (un estado de entrada reservado para 'sin interruptor cerrado').

Podrías hacer trampa usando chips que no sean mux / demuxes, como los registros de desplazamiento, los extensores IO o incluso los microcontroladores. Eso le enseñará a su entrevistador a formular su pregunta más precisa :)

Si los pines tienen capacidades digitales y analógicas, puede ser aún más creativo. Una vez diseñé (pero nunca construí realmente) un sistema que pudiera leer una matriz NxN con dos pines GPIO / analógicos y un grupo de resistencias y diodos. El máximo de N estuvo limitado por las caídas de diodo, las precisiones de la resistencia y los bits A / D. (No hay capacidad de impresión múltiple). Probablemente no sea práctico, pero es bueno fantasear con él.

Nedd publicó y eliminó una sugerencia de Charlieplexing, que requiere pines que pueden ser tanto de entrada como de salida. Parece ser excluido por su pregunta, pero si usa algunos pines para hacer un bus SPI o I2C y conecte un extensor de pines GPIO estilo 16 MCP23017 ...

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas