Masques d’interruption GPIO

Les broches d’E/S à usage général (GPIO) configurées en tant qu’entrées d’interruption peuvent être masquées et masquées en plus d’être activées et désactivées.

Si une interruption déclenchée par un niveau à partir d’un périphérique est activée et active, mais que le gestionnaire d’interruption du noyau ne peut pas exécuter immédiatement la routine de service d’interruption (ISR) de l’appareil pour effacer l’interruption, le gestionnaire masque l’interruption au niveau de la broche GPIO pour empêcher la broche de provoquer plusieurs interruptions à plusieurs reprises. Plus tard, une fois que l’ISR a exécuté et effacé l’interruption, l’interruption peut être masquée en toute sécurité.

Le masquage d’une interruption n’efface pas ou ne désactive pas l’interruption. Si une interruption GPIO est activée, active et masquée, le démasquage de cette interruption entraîne le signal d’une demande d’interruption au processeur par l’appareil du contrôleur GPIO.

Un bit de masque d’interruption GPIO n’a aucun effet lorsque l’interruption GPIO est désactivée. La fonction de rappel CLIENT_EnableInterrupt définit le bit du masque pour l’interruption sur zéro ; autrement dit, l’interruption est initialement masquée une fois qu’elle est activée.

Une distinction importante entre le masquage et la désactivation d’une broche d’interruption GPIO est que le masquage conserve les paramètres de configuration d’interruption de la broche, contrairement à la désactivation de la broche. Bien qu’une broche d’interruption GPIO soit masquée, elle conserve son mode d’interruption précédemment programmé (déclenché par le bord ou déclenché par un niveau), sa polarité (actif-élevé, actif-faible ou actif-les deux) et ses paramètres de déclenchement. Ces paramètres prennent effet à nouveau dès que l’interruption est masquée. Toutefois, lorsqu’une interruption est désactivée, tous les paramètres de configuration d’interruption de l’épingle sont perdus. Une fois l’épingle activée, elle doit être programmée à nouveau avec les paramètres de configuration d’interruption requis.

Certains contrôleurs GPIO implémentent, dans le matériel, des registres de masque d’interruption qui sont distincts des registres d’activation d’interruption.

Toutefois, d’autres contrôleurs GPIO fournissent un ensemble unique de registres matériels qui combinent les fonctions interrupt-mask et interrupt-enable. Les pilotes de ces contrôleurs émulent des registres d’interruption-masque et d’activation d’interruption distincts dans le logiciel. Pour ce faire, ces pilotes suivent les états logiques des bits interrupt-enable et interrupt-mask bits et manipulent les bits correspondants dans le registre matériel pour refléter avec précision le comportement des bits combinés interruption-enable et interrupt-mask pour chaque interruption GPIO.