¿Es seguro para micro cambiar los pines de entrada a salida en un bucle?

3

Estoy tratando de hacer uso de un teclado que saqué de un teléfono que tiene 3 columnas y 4 filas. He rastreado el esquema en su PCB y he descubierto una manera de manejarlo que creo que podría funcionar, pero no estoy seguro de que sea seguro para el microcontrolador (es un pequeñito ++ 2.0 en este caso, pero creo que la respuesta es sería el mismo para la mayoría de los microcontroladores AVR).

La forma en que funciona el teclado es que tiene 3 pines para la columna 1,2,3 y 4 pines para las filas 1,2,3,4 cuando se presiona un botón para completar un circuito entre la fila y la columna que el botón está en.

Entonces, el circuito que diseñé funcionaría así: tengo 3 pines de salida conectados a las columnas y 4 pines de entrada conectados a las filas. Haría un ciclo a través de las columnas poniendo una señal alta y luego leyendo las filas para ver si se presionó algún botón.

Me di cuenta de un problema de seguridad con este diseño, que es que si mantiene presionados dos botones en la misma fila, habrá un corto entre dos columnas diferentes y dado que uno se configuró en salida alta y la otra salida baja podría crear una condición de sobrecorriente (como se describe en enlace ).

Para resolver eso, tuve la idea de hacer que los pines de salida de la columna realmente ingresen pines cuando no se están utilizando para emitir una señal alta, y agregar resistencias de arrastre hacia abajo a los pines de entrada de mi fila. Sin embargo, lo que esto significaría es que estoy moviendo los pines entre el modo de entrada y salida en un bucle que se repite cada 15 ms (ya que duermo durante 5 ms entre sondear las columnas).

  

¿Es seguro / saludable que el microcontrolador cambie sus pines entre entrada y salida en un bucle de aproximadamente 15 ms? ¿O podría este circuito ser seguro de una manera diferente?

También agradecería cualquier enlace a las páginas que describan qué circuitos básicos con pines de entrada / salida son seguros y cuáles no.

    
pregunta mystic portal

2 respuestas

4

Lo que describe es la forma estándar de escanear un teclado de matriz. Básicamente, estás utilizando las salidas como colector abierto / drenaje abierto (porque cambias entre salida + baja y entrada). Para los chips que no tienen esta posibilidad, se puede poner un diodo en serie.

Cambiar un pin entre entrada y salida es totalmente seguro y válido, se realiza todo el tiempo, cuando se usa un pin estándar (tipo push-pull) para implementar protocolos como I2C y dallas / maxim 1-wire que necesitan una Salida de colector abierto.

Dependiendo del valor de sus resistencias de pull-up, es posible que deba esperar un poco entre cambiar a una nueva salida y leer las entradas. Unos pocos ms serían un punto de partida.

Para suprimir el rebote de clave, puede ser recomendable tener las lecturas de una clave a no más de 50 ms de diferencia. Esto se puede utilizar para derivar su plan de tiempo.

Parecías estar un poco preocupado por hacer las cosas tan rápido como a unos pocos ms de distancia. Para un microcontrolador que se ejecuta a unos pocos MHz, ¡hay miles de instrucciones aparte!

    
respondido por el Wouter van Ooijen
1

No hay ningún problema con el cambio rápido de la dirección de los pines de entrada / salida; no dañará nada.

Si está utilizando desplegables, debe tener en cuenta que la capacitancia parásita tardará un tiempo distinto de cero en descargarse a través del desplegable, por lo que no puede cambiar la salida "strobe" y luego inmediatamente leer la entrada. Unas pocas decenas de microsegundos de retraso es una buena idea.

Creo que ya tienes una buena idea sobre qué es seguro y qué no: dibujar o hundir una gran corriente de una salida no es seguro. La sobretensión (o tensión negativa) en una entrada no es segura. Eso es más o menos.

    
respondido por el pjc50

Lea otras preguntas en las etiquetas