Imagina un chip que detecta alguna condición externa que no sabes cuándo ocurrirá. Digamos, por ejemplo, que el chip IIC realiza alguna comunicación externa a algún otro dispositivo. Ese otro dispositivo envía mensajes ocasionalmente, pero no sabes cuándo.
Dado que IIC es la única interfaz de este chip, la única forma de saber si el dispositivo externo envió un mensaje es sondear el chip. Eso podría consumir una gran cantidad de ancho de banda del bus IIC, especialmente si necesita leer el mensaje con baja latencia.
En casos como este, el chip puede proporcionar una salida adicional que puede utilizar si lo desea . Puede conectarlo a una entrada digital separada del microcontrolador. Ahora no tiene que enviar un mensaje de lectura IIC solo para descubrir que el chip IIC no tiene nada nuevo para usted. En su lugar, simplemente marque la entrada dedicada adicional.
Puedes llevar esto un paso más allá, es usar interrupciones. En el caso anterior, el firmware todavía está revisando regularmente la entrada dedicada del chip IIC. Eso es más simple y más rápido que hacer una lectura IIC para ver si el chip tiene algo para usted, pero aún requiere una verificación activa. La solución es conectar la señal del chip IIC a una entrada de interrupción del micro. Ahora el código de primer plano no tiene que hacer ninguna comprobación en absoluto. La rutina de interrupción se ejecuta solo cuando el chip IIC tiene datos nuevos para usted.
Con algo tan lento como IIC, se vuelve más complicado que eso. Es posible que no desee realizar la transacción IIC completa en la rutina de interrupción para evitar una latencia prolongada en el servicio de otras interrupciones. Ahora también debe considerar cómo tratar con el código de primer plano utilizando el bus IIC cuando se dispara la interrupción. Al final, encuestar la línea dedicada desde el chip IIC en una tarea separada, luego las transferencias IIC cuando hay datos pueden ser la mejor arquitectura de firmware. El bucle de sondeo incluye una forma de permitir que otras tareas se ejecuten cuando no hay datos nuevos antes de volver atrás y verificar nuevamente.