0% ont trouvé ce document utile (0 vote)
297 vues11 pages

Exercices Sur Msp430

Le document présente des exercices sur les interruptions du microcontrôleur MSP430, incluant un programme pour allumer une LED via un bouton avec gestion des rebonds. Il contient également un QCM de 20 questions sur les concepts d'interruptions, leur configuration et leur gestion. Les réponses aux questions sont fournies pour aider à la compréhension des interruptions dans le contexte du MSP430.

Transféré par

Somda Aristide
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)
297 vues11 pages

Exercices Sur Msp430

Le document présente des exercices sur les interruptions du microcontrôleur MSP430, incluant un programme pour allumer une LED via un bouton avec gestion des rebonds. Il contient également un QCM de 20 questions sur les concepts d'interruptions, leur configuration et leur gestion. Les réponses aux questions sont fournies pour aider à la compréhension des interruptions dans le contexte du MSP430.

Transféré par

Somda Aristide
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

### Exercices sur les interruptions du MSP430

---

#### **Exercice 1 : Programme avec interruptions**

Écrivez un programme qui allume une LED connectée à P1.4 lors d’un appui sur un bouton branché sur
P2.3 (front montant). Le microcontrôleur doit être en mode LPM3 entre les interruptions. Assumez une
résistance pull-down externe sur P2.3.

<details>

<summary>Correction</summary>

```c

#include <msp430g2553.h>

void main(void) {

WDTCTL = WDTPW + WDTHOLD; // Désactiver le watchdog

P1DIR |= BIT4; // P1.4 en sortie (LED)

P2DIR &= ~BIT3; // P2.3 en entrée (bouton)

P2IE |= BIT3; // Activer les interruptions sur P2.3

P2IES &= ~BIT3; // Interruption sur front montant (pull-down)

P2IFG &= ~BIT3; // Effacer le drapeau de P2.3

__BIS_SR(GIE | LPM3_bits); // Activer les interruptions + mode LPM3

#pragma vector = PORT2_VECTOR


__interrupt void bouton_ISR(void) {

P1OUT ^= BIT4; // Inverser l'état de la LED

P2IFG &= ~BIT3; // Effacer le drapeau de P2.3

```

</details>

---

#### **Exercice 2 : Gestion des rebonds**

Modifiez la routine d’interruption de l’exercice 1 pour gérer les rebonds du bouton avec une
temporisation de 10 ms.

<details>

<summary>Correction</summary>

```c

#pragma vector = PORT2_VECTOR

__interrupt void bouton_ISR(void) {

volatile int i;

for (i = 0; i < 10000; i++); // Temporisation anti-rebonds (~10 ms)

if (P2IN & BIT3) { // Vérifier si le bouton est toujours pressé

P1OUT ^= BIT4; // Inverser la LED

P2IFG &= ~BIT3; // Effacer le drapeau

}
```

</details>

---

### QCM sur les interruptions du MSP430 (20 questions)

---

**1. Quel est l’avage principal des interruptions par rapport au polling ?**

A) Réduction de la consommation d’énergie

B) Meilleure gestion des entrées analogiques

C) Simplification du matériel

D) Aucun avantage

**Réponse : A**

---

**2. Quel registre active les interruptions pour une broche spécifique (ex. P1.0) ?**

A) P1IFG

B) P1IE

C) P1IES

D) P1DIR
**Réponse : B**

---

**3. Que se passe-t-il si le bit GIE est à 0 ?**

A) Toutes les interruptions sont désactivées

B) Seules les interruptions non masquables sont activées

C) Le microcontrôleur passe en mode LPM3

D) Les drapeaux d’interruption sont effacés

**Réponse : A**

---

**4. Comment configurer une interruption sur front descendant pour P1.2 ?**

A) P1IES |= BIT2

B) P1IES &= ~BIT2

C) P1IE |= BIT2

D) P1IFG |= BIT2

**Réponse : A**

---

**5. Quel vecteur d’interruption est associé au Port 1 ?**


A) FFE4h

B) FFE6h

C) FFF2h

D) FFEAh

**Réponse : A**

---

**6. Que contient un vecteur d’interruption ?**

A) La valeur du drapeau d’interruption

B) L’adresse de la routine d’interruption

C) Le numéro de la broche concernée

D) Le registre de configuration

**Réponse : B**

---

**7. Quel mode LPM désactive le DCO ?**

A) LPM0

B) LPM1

C) LPM3

D) LPM4
**Réponse : C**

---

**8. Pourquoi faut-il éviter les boucles dans les routines d’interruption ?**

A) Pour économiser la mémoire

B) Pour ne pas retarder d’autres interruptions

C) Pour éviter les conflits de registres

D) Pour réduire la fréquence d’horloge

**Réponse : B**

---

**9. Comment effacer manuellement le drapeau d’interruption de P1.0 ?**

A) P1IFG |= BIT0

B) P1IFG &= ~BIT0

C) P1IE &= ~BIT0

D) P1IES &= ~BIT0

**Réponse : B**

---

**10. Que fait l’instruction `__BIS_SR(LPM3_bits)` ?**


A) Active le mode basse consommation LPM3

B) Désactive les interruptions

C) Réinitialise le microcontrôleur

D) Active le watchdog timer

**Réponse : A**

---

**11. Que se passe-t-il si deux interruptions surviennent simultanément ?**

A) Elles sont traitées par ordre de priorité

B) Elles sont ignorées

C) Le microcontrôleur redémarre

D) Seule la première est traitée

**Réponse : A**

---

**12. Quel périphérique permet de réveiller le MSP430 depuis un mode LPM ?**

A) Le watchdog timer

B) Un timer configuré

C) Une interruption GPIO

D) Toutes ces réponses


**Réponse : D**

---

**13. Quelle directive associe une routine à un vecteur d’interruption ?**

A) `#include <vector>`

B) `#pragma vector=PORT1_VECTOR`

C) `__interrupt void`

D) `#define VECTOR`

**Réponse : B**

---

**14. Quel est le rôle de P1REN ?**

A) Activer les résistances internes

B) Configurer les entrées/sorties

C) Activer les interruptions

D) Définir le sens du front

**Réponse : A**

---

**15. Que signifie un drapeau IFG à 1 ?**


A) L’interruption est activée

B) Un événement a été détecté

C) Le microcontrôleur est en mode LPM

D) La routine d’interruption est en cours

**Réponse : B**

---

**16. Comment désactiver une interruption sur P1.3 ?**

A) P1IE &= ~BIT3

B) P1IFG &= ~BIT3

C) P1DIR &= ~BIT3

D) P1IES &= ~BIT3

**Réponse : A**

---

**17. Quelle instruction permet de quitter le mode LPM3 dans une ISR ?**

A) `__BIC_SR(LPM3_bits)`

B) `__BIS_SR(GIE)`

C) `__BIC_SR_IRQ(LPM3_bits)`

D) `__BIS_SR_IRQ(LPM3_bits)`
**Réponse : C**

---

**18. Quel registre contrôle le sens des fronts pour les interruptions GPIO ?**

A) P1IE

B) P1IES

C) P1IFG

D) P1REN

**Réponse : B**

---

**19. Quel est l’inconvénient du polling ?**

A) Consommation élevée

B) Réponse lente aux événements

C) Nécessite plus de mémoire

D) A et B

**Réponse : D**

---

**20. Que fait `P1OUT ^= BIT6` dans une ISR ?**


A) Allume la LED

B) Éteint la LED

C) Inverse l’état de la LED

D) Lit l’état de la LED

**Réponse : C**

---

**Fin des QCM**

Vous aimerez peut-être aussi