Étape 7: ClearIntFlag() et setIntEnable()
Jusqu'à présent, nous avez parlé d’interruptions étant "déclenchées" et saut directement à leurs rapports de recherche internationale, sans faire beaucoup attention à comment qui saut arrive.
Lorsqu’une interruption est déclenchée, un peu très spécifique dans la mémoire, un associé de cette interruption, est renversé de 0 à 1. Cela indique la puce que cette interruption a été déclenchée et qu’il devra son ISR exécuté. Ce bit est appelé une interruption « drapeau ».
Les drapeaux de l’interruption est qu’ils peuvent être déclenchés indépendamment de savoir si l’interruption est active ou non. En fait, pendant le fonctionnement normal de votre planche, vous mai ont été déclenchement interruption drapeaux sans le savoir. La seule raison pour laquelle que cela n’exécute pas un ISR est parce que l’interruption n’a pas été activé.
Avant de nous permettre une interruption, nous avons toujours l’effacer a flag. Si nous n’avons pas il serait quasiment garanti que l’ISR allait être exécuté immédiatement après l’interruption a été activée. C’est pourquoi clearIntFlag() est toujours * appelé avant setIntEnable().
Enfin, remarquez comment les clearIntFlag() et setIntEnable() utilisent des « _EXTERNAL_2_IRQ » plutôt que "_EXTERNAL_2_VECTOR" ? C’est parce que vous référencez les différents lieux de mémoire. Le « IRQ » signifie « Int demande », qui est une autre façon de se référer à l’indicateur d’interruption.
* Je ne sais pas il y a un scénario de frange où vous ne voulez pas effacer l’indicateur avant d’activer l’interruption, mais nous n’allons pas à vous soucier de qui pour l’instant.