Partager via


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 démasquées en plus d’être activées et désactivées.

Si une interruption déclenchée au niveau d’un périphérique est activée, mais que le gestionnaire de piège du noyau ne peut pas exécuter immédiatement la routine de service d’interruption du périphérique (ISR) pour effacer l’interruption, le gestionnaire masque l’interruption au niveau de la broche GPIO pour empêcher la broche de générer continuellement de nouvelles interruptions. Plus tard, une fois que l’ISR s’exécute et efface 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 contrôleur GPIO à signaler une demande d'interruption au processeur.

Un bit de masque d’interruption GPIO n’a aucun effet pendant que l’interruption GPIO est désactivée. La fonction de rappel CLIENT_EnableInterrupt définit le bit de masque pour l’interruption sur zéro ; autrement dit, l’interruption est initialement masquée après son activation.

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 des interruptions de la broche, tandis que la désactivation de la broche ne le fait pas. Alors qu’une broche d’interruption GPIO est masquée, elle conserve son mode d’interruption précédemment programmé (déclenchement par front ou déclenchement par niveau), la polarité (actif haut, actif bas, ou actif des deux) et les paramètres d’antirebond. Ces paramètres prennent effet de nouveau dès que l'interruption est dé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 la broche activée, elle doit être programmée à nouveau avec les paramètres de configuration d’interruption requis.

Certains contrôleurs GPIO implémentent matériellement des registres de masque d’interruption séparés et distincts des registres de validation d’interruption.

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