0% ont trouvé ce document utile (0 vote)
63 vues3 pages

Interruptions EXTI et NVIC en GPIO

Le document présente les notions d'interruptions externes EXTI et du contrôleur d'interruptions vectorielles imbriquées NVIC. Il décrit la configuration des interruptions externes associées aux broches du microcontrôleur et le traitement des interruptions par le NVIC, y compris la préemption.

Transféré par

adil bakkari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
63 vues3 pages

Interruptions EXTI et NVIC en GPIO

Le document présente les notions d'interruptions externes EXTI et du contrôleur d'interruptions vectorielles imbriquées NVIC. Il décrit la configuration des interruptions externes associées aux broches du microcontrôleur et le traitement des interruptions par le NVIC, y compris la préemption.

Transféré par

adil bakkari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Slide 1 :

Notre présentation repose sur l’introduction des notions de routines d’interruptions en


évoquant les interruptions externes EXTI et le Nested Vectored Interrupt Controller NVIC

Slide 3 :
Chacune de ces interruptions est uniquement associée à une broche spécifique. Or la carte
du microcontrôleur a beaucoup plus que 16 pins, donc toutes les broches avec le même
nombre de pin sont reliées à la même interruption externe. Et donc le processeur lie les
broches PA k à l’interruption externe EXTI k. et comme toutes ces broches sont reliées a l
EXTI avec un multiplexeur, alors lorsque l’un des P k (par exemple PA k) et sélectionné toutes
les autres ne peuvent plus nous servir comme source d’interruption

Slide 4 :
La figure représente un exemple dans lequel un bouton poussoir est relié à la broche PA3.
Donc quand le bouton est presse, le voltage à la broche 3 devient élevé. Une partie software
dans le code est spécifié à configurer la broche 3 à être tirée vers le bas en interne pour que
le voltage soit bas lorsque le bouton n’est pas enfoncé.

Slide 5 :
Le contrôleur d'interruption externe dispose d'un module de surveillance de tension qui a un
détecteur de front programmable. Ce module de surveillance matériel peut surveiller le
signal de tension sur les broches.
La partie Software peut sélectionner le front montant, le front descendant ou les deux fronts
du signal de tension sur PA 3 et activer la demande d'interruption en écrivant un '1' sur le bit
correspondant dans le registre de masque d'interruption pour déclencher une demande
d'interruption appelée EXTI3. Le bit en attente correspondant à la ligne d'interruption est
également activé. Cette demande est réinitialisée en écrivant un '1' dans le registre
d'attente.
La demande d'interruption EXTI3 est ensuite envoyée au contrôleur NVIC. Enfin, le
microcontrôleur répond à la demande d'interruption et exécute la routine de service
d'interruption EXTl3_1RQHandler ().

Slide 6 :
Si le processeur reçoit une nouvelle interruption dont le numéro de priorité de préemption
est inférieur au numéro de priorité de préemption de l'interruption en cours, l'interruption
en cours est arrêtée et le processeur commence à servir la nouvelle interruption.

Slide 7 :
Comme on voit sur la figure ci-dessous la comparaison entre les deux nombres
d’interruptions se fait premièrement par la comparaison des deux bits de section de priorité
de préemption, si ceux-ci sont identiques on passe alors à la comparaison des deux bits de la
section sub-priority.

Slide 8 :
Supposons dans cet exemple qu’on a eu dans un premier temps une requête d’interruption
9, le NVIC, après avoir lu le nombre d’interruption de celle-ci, procède donc a l’interruption
du programme courant et commence a exécuter la fonction d’interruption, or quand une
autre interruption arrive pendant l’exécution de la première le NVIC lit immédiatement le
nombre d’interruption de celle-ci et vérifie le nouveau niveau de priorité, si l’ordre de
priorité de la nouvelle interruption est plus petit(cad plus urgent) il stack le code de
l’interruption de la première interruption dans la SRAM de la même façon dans laquelle il a
agi avec le code du programme et fait sauter le pointeur vers l’adresse de la nouvelle
interruption jusqu’à ce qu’elle se résume. L'interruption préemptée est reprise après la fin
de la routine de traitement de la nouvelle interruption.

Slide du code :
1. Activez l'horloge de SYSCFG avec le port GPIO correspondant.
2. Configurer le GPIO comme entrée.
3. Configurer le registre de configuration d'interruption externe de SYSCFG (SYSCFG_EXTICR)
afin de mapper la broche GPIO k à la ligne d'entrée d'interruption externe k.
4. Sélectionnez le front actif qui peut déclencher EXTI k. Le signal peut être un front
montant, un front descendant ou les deux.
Ceci est programmé via le registre de sélection de déclenchement du front
de sélection de déclenchement du front montant (EXTI_RTSRl ou EXTI_RTSR2) et le registre
de sélection de déclenchement du front descendant (EXTI_FTSRl).
(EXTI_FTSRl ou EXTI_FTSR2).
5. Activez EXTI k en mettant le kème bit dans le registre de masque d'interruption EXTI
(EXTI_IMRl ou
EXTI_IMR2). Une interruption ne peut être générée que si le bit correspondant dans le
registre de masque d'interruption est à 1 (ou à 2).
registre de masque d'interruption est à 1 (ou appelé non masqué).
6. Activez l'interruption EXTI k sur le contrôleur NVIC via NVIC_EnableIRQ.
7. Ecrire le gestionnaire d'interruption pour EXTI k. Le registre d'attente d'EXTI (EXTI_PRl ou
EXTI_PR2) enregistre la date et l'heure de l'interruption.
EXTI_PR2) enregistre la source de l'interruption. Le nom de la fonction du gestionnaire
d'interruptions
d'interruption est donné par le fichier d'assemblage de démarrage startup_stm32l476xx.s.
Par exemple,
le gestionnaire de l'EXTI 3 s'appelle EXTI3_IRQHandler().
8. Dans le gestionnaire d'interruption, le logiciel doit effacer le bit en attente correspondant
pour indiquer que la demande actuelle a été traitée. pour indiquer que la demande actuelle
a été traitée. De manière surprenante, l'écrire à 1 efface un bit en attente

1. Enable the clock of SYSCFG and corresponding GPIO port.


2. Configure the GPIO pink as input.
3. Set up the SYSCFG external interrupt configuration register (SYSCFG_EXTICR) to map the
GPIO pin k to the external interrupt input line k.
4. Select the active edge that can trigger EXTI k. The signal can be a rising edge, a falling edge
or both. This is programmed via the rising edge trigger selection register (EXTI_RTSRl or
EXTI_RTSR2) and the falling edge trigger selection register (EXTI_FTSRl or EXTI_FTSR2).
5. Enable EXTI k by setting the kth bit in EXTI interrupt mask register (EXTI_IMRl or
EXTI_IMR2). An interrupt can only be generated if the corresponding bit in the interrupt
mask register is 1 (or called unmasked).
6. Enable interrupt EXTI k on NVIC controller via NVIC_EnableIRQ.
7. Write the interrupt handler for EXTI k. The EXTI pending register (EXTI_PRl or EXTI_PR2)
records the source of the interrupt. The function name of the interrupt handler is given by
the startup assembly file startup_stm32l476xx.s. For example, the handler for EXTI 3 is called
EXTI3_IRQHandler().
8. In the interrupt handler, software needs to clear the corresponding pending bit to indicate
the current request has been handled. Surprisingly, writing it to 1 clears a pending bit.

Vous aimerez peut-être aussi