Académique Documents
Professionnel Documents
Culture Documents
Les interruptions
Objectif :
Mise en œuvre des interruptions générées par les boutons et les timers.
I. Introduction
Le processeur Cortex-M4 sur les MCU MSP432P401x implémente un contrôleur
d’interruptions (NVIC : Nested Vectored Interrupt Controller) avec 64 lignes d’interruption
externes et 8 niveaux de priorité (Voir MSP432 Technical Reference Manual).
1
Figure 2 : Principe général simplifié des interruptions.
2
II. Interruption sur P1
Il existe de nombreuses sources d’interruptions dans le MSP432, mais dans cette partie, nous allons
nous concentrer sur l’entrée générale sur P1. La figure suivante montre les GPIO sur P1.
Registre PxIE
Registre PxIES
3
Description du registre PxIES
Remarque : Ecrire dans PxIES pour chaque I/O peut modifier le flag de l’interruption
correspondante.
Registre PxIFG
4
Registre PxREN
Registre ISER0
Registre ISER1
5
Description du registre ISER1
Travail demandé
Changer l’état de la LED1 lorsque le bouton S2 est appuyé en utilisant les interruptions. Pour
ce faire, vous allez suivre les étapes ci-dessous :
6
Les registres CS sont protégés par un mot de passe pour éviter les écrasements défectueux.
Les bits corrects doivent être écrits dans le registre KEY avant toute modification des autres
registres CS. Il est également recommandé d’écrire n’importe quelle valeur dans le registre
KEY lorsque le système d’horloge est correctement configuré pour protéger le système. La
logique de sélection de l’horloge est est détaillée dans le guide de l’utilisateur MSP432P401R.
La valeur de la clé est 0x0000695A.
III.2 Timer A
7
• Timer_Ax Control Register (TAxCTL)
Registre TAxR
8
• Timer_Ax Expansion 0 Register
TAIDEX Prescale
000b /1
001b /2
010b /3
011b /4
100b /5
101b /6
110b /7
111b /8
9
Travail demandé
Changer l’état de la LED1 en utilisant l’interruption de Timer A0. Pour ce faire, vous allez suivre
les étapes ci-dessous :
4. Configurer le Timer A :
5. Activer l’interruption
- Activer l’interruption 9 (il faut mettre à 1 le bit correspondant dans le registre ISER).
- Activer les interruptions globales en faisant appel à la fonction __enable_irq().
6. Ajouter le code qui sera exécuté pendant cette interruption. Le prototype de la fonction
d’interruption est le suivant :
void TA0_N_IRQHandler(void)
10