Máscaras de interrupción gpIO
Las patillas de E/S de uso general (GPIO) configuradas como entradas de interrupción se pueden enmascarar y desenmascarar además de habilitarse y deshabilitarse.
Si una interrupción desencadenada por el nivel de un dispositivo periférico está habilitada y activa, pero el controlador de captura de kernel no puede ejecutar inmediatamente la rutina de servicio de interrupción del dispositivo (ISR) para borrar la interrupción, el controlador enmascara la interrupción en el pin GPIO para evitar que la patilla provoque repetidamente más interrupciones. Más adelante, después de que el ISR se ejecute y borre la interrupción, la interrupción se puede desenmascarar de forma segura.
Enmascarar una interrupción no borra ni deshabilita la interrupción. Si una interrupción gpIO está habilitada, activa y enmascarada, al desenmascarar esta interrupción, el dispositivo del controlador GPIO señala una solicitud de interrupción al procesador.
Un bit de máscara de interrupción gpIO no tiene ningún efecto mientras la interrupción gpIO está deshabilitada. La función de devolución de llamada CLIENT_EnableInterrupt establece el bit de máscara para la interrupción en cero; es decir, la interrupción se desenmascara inicialmente después de habilitarla.
Una distinción importante entre enmascaramiento y deshabilitación de un pin de interrupción GPIO es que el enmascaramiento conserva los valores de configuración de interrupción de la patilla, mientras que la deshabilitación de la patilla no. Aunque se enmascara una patilla de interrupción GPIO, conserva su modo de interrupción programado previamente (desencadenado por el borde o desencadenado por el nivel), la polaridad (activo-alto, bajo activo o activo-ambos) y la configuración de desbounce. Esta configuración surte efecto de nuevo en cuanto se desenmascare la interrupción. Sin embargo, cuando se deshabilita una interrupción, se pierden todos los valores de configuración de interrupción de la patilla. Una vez habilitada la patilla, se debe programar de nuevo con los valores de configuración de interrupción necesarios.
Algunos controladores GPIO implementan, en hardware, registros de máscara de interrupción que son independientes y distintos de los registros de habilitación de interrupciones.
Sin embargo, otros controladores GPIO proporcionan un único conjunto de registros de hardware que combinan las funciones interrupt-mask y interrupt-enable. Los controladores de estos controladores emulan la máscara de interrupción independiente y los registros de habilitación de interrupciones en el software. Para ello, estos controladores realizan un seguimiento de los estados lógicos de los bits de habilitación de interrupciones y los bits de la máscara de interrupción y manipulan los bits correspondientes en el registro de hardware para reflejar con precisión el comportamiento de los bits de habilitación de interrupciones lógicas combinadas y máscara de interrupción para cada interrupción GPIO.