¿Cuál es la salida de IRQ en I2C? [cerrado]

-1

En este teclado capacitivo MPR121 ( enlace ), ¿cuál es el propósito de la IRQ?

    
pregunta Arjun Naha

4 respuestas

7
  

¿Qué es el IRQ en I2C?

Daré un enfoque ligeramente diferente de algunas otras respuestas.

Recuerde que I 2 C Slaves no puede iniciar una transacción I 2 C bus. Por lo tanto, si tiene un teclado I 2 C o un controlador de pantalla táctil (u otra HMI), ¿cómo sabría el I 2 C Master cuándo solicitar datos a I 2 controlador de teclado C, para preguntar si ha habido un toque o liberación?

Tres posibilidades incluyen:

  • I 2 C Master a veces sondea el controlador de teclado I 2 C, pero no como una prioridad alta.

    Problema: el retardo potencial entre el toque / liberación y el I 2 C El sondeo maestro del controlador del teclado I2C conduce a una experiencia de usuario pobre, debido al "retraso" (retardo) percibido entre un toque / Liberación y respuesta de la máquina.

o

  • I 2 C Master pasa mucho tiempo encuestando el controlador del teclado I 2 C, para minimizar cualquier retraso entre un toque / liberación y el I 2 C Master en realidad detectando que esto ha ocurrido.

    Problema: I 2 C Master tiene menos ciclos de CPU para hacer cualquier otra cosa, ya que está invirtiendo gran parte de su tiempo en sondear el controlador de teclado I 2 . El bus I 2 C también ha reducido el ancho de banda para las transacciones de bus a cualquier otro I 2 dispositivos C, debido a tantas encuestas al I < sup> 2 controlador del teclado C

o

  • I 2 C El esclavo tiene una señal de "interrupción" adicional conectada al I 2 C Master (no es parte de I 2 C especificación, pero esto fue introducido en SMBus). Esto permite al I 2 C Slave alertar al I 2 C Master y decir "encuestarme ahora".

    Problema: requiere una línea de señal adicional entre el I 2 C Master y el I 2 C Slave.

Como ve, su controlador de teclado I 2 C eligió la última opción (algunos controladores de pantalla táctil I 2 hacen lo mismo). Este es un ejemplo de La elección de la encuesta frente a la opción de interrupción, que ocurre en la informática y en otras partes de la vida, por ejemplo. puede permanecer despierto y revisar continuamente el reloj para ver cuándo levantarse por la mañana (sondeo), o puede programar una alarma y dejar que eso lo despierte (interrumpir).

    
respondido por el SamGibson
2

De la hoja de datos:

  

El MPR121 es un dispositivo compatible con circuito inter-integrado (I 2 C) con una interrupción adicional que se activa cada vez que se toca o   Se detecta la liberación de un botón.

Por lo tanto, la salida nIRQ cambia de estado cada vez que se detecta un toque o la liberación de un botón.

    
respondido por el Ignacio Vazquez-Abrams
0

Por la parte utilizada en la hoja de datos de esa placa aquí , "Este pin se dispara tiempo un toque o se detecta la liberación. "

    
respondido por el Brian Carlton
0

Aunque el I2C es un bus de múltiples maestros que, en teoría, permitiría que un dispositivo como un teclado envíe datos al controlador principal cada vez que se presionó una tecla y el bus está inactivo, la vida útil de un maestro I2C es mucho más fácil si es el único maestro en el bus. A menos que (cada) bus master esté preparado para la posibilidad de que otro dispositivo solicite atención en momentos arbitrarios, no habrá ninguna manera para que un dispositivo como un teclado permita que alguien sepa cuándo sucede algo, a menos que se le pregunte de manera continua y repetida. Si el consumo de energía no es un problema, un sistema podría simplemente preguntar a tales dispositivos sobre su estado en cualquier momento en que no haya nada mejor que hacer. Sin embargo, tal enfoque consumiría energía continuamente, incluso cuando no está sucediendo nada de interés.

En muchos casos, la forma más sencilla de lidiar con esto es hacer que dichos dispositivos incluyan un pin separado de "solicitud de interrupción" que esencialmente significa "Tengo algo interesante que decir: pregúntame y te lo diré" . Si varios dispositivos comparten el mismo pin de salida, el maestro podrá irse a dormir cuando nadie tenga nada interesante que decir (y no suceda nada interesante en ningún otro lugar). Tan pronto como ocurra algo interesante, alguien afirmará el pin / IRQ, con lo cual el maestro puede comenzar a preguntar a los dispositivos qué tienen que decir.

Es posible que el maestro use una entrada / IRQ separada para cada dispositivo, y luego los use para determinar con qué dispositivo debería hablar, pero en muchos casos eso no es realmente necesario. Si un dispositivo no tiene nada que decir, pedirlo generalmente no tomará mucho tiempo. Lo importante es reconocer los momentos en que nadie tiene algo interesante que decir, y minimizar el consumo de energía durante esos tiempos.

    
respondido por el supercat

Lea otras preguntas en las etiquetas