Vous êtes sur la page 1sur 6

Cours 4ème année S.

Techniques Génie électrique Mehdi Bouchami

Chapitre A3 : Logique Programmée


Leçon A3-2 : Les microcontrôleurs
Partie 2 : Notion d'Interruption

1- Définition
Une interruption est un événement qui provoque l’arrêt d’un programme en cours d’exécution pour aller
exécuter un autre programme appelé programme ou routine d’interruption.
À la fin d’exécution du programme d’interruption, le microcontrôleur reprend le programme principal
à l’endroit où il s’est arrêté.

On distingue deux types d’interruptions:


- Les interruptions externes, qui sont déclenchées lorsqu’un événement extérieur se produit tels que le
changement d’état d’une entrée destinée à l’interruption.
- Les interruptions internes, qui sont déclenchées par le déroulement du programme tel que le résultat d’un
calcul ou le débordement d’un Timer.

Dans la suite, on s’intéresse uniquement aux interruptions externes.

2- Déroulement d’une interruption


Le programme principal se déroule
1
normalement.
Une interruption survient, le
2
microcontrôleur :
Termine l’instruction en cours de
3 traitement (instruction Xn).
Saute vers la routine d’interruption
4 (début procédure).

Exécute les instructions de la procédure


5 d’interruption (instructions : Y0 ->Yn).

Revient au programme principal et


6 exécute l’instruction Xn+1.

3- Les sources d’interruption


Les sources d’interruption dépendent du microcontrôleur utilisé :

Exemple : Le PIC 16F84A dispose de 4 sources d’interruption :


- L’interruption RB0/INT : L’interruption RB0/INT est provoquée par un changement d’état sur la
broche RB0 du port B quand elle est configurée en entrée.
Cette interruption peut être déclenchée par le front descendant ou bien le front montant de l’impulsion
appliquée sur la broche RB0.
- L’interruption RBI : L’interruption RBI est provoquée par un changement d’état sur au moins l’une
des entrées de RB4 à RB7 du port B. Le front n’a pas d’importance.
- L’interruption T0I : L’interruption TOI est provoquée par le débordement du registre TMR0 (passage
de 255 à 0).
Chapitre A3 : Logique programmé Page 1
Cours 4ème année S.Techniques Génie électrique Mehdi Bouchami

- L’interruption EEI : L’interruption EEI est déclenchée à la fin d’une écriture réussie dans l’EEPROM.

4- Registre de configuration des interruptions


Le registre INTCON (INTerrupt CONtroller) est un registre de contrôle et de gestion des interruptions.
 Pour les PICs 16F628, 16F876 et 16F877 le registre INTCON contient les bits suivants :
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GIE PEIE TOIE INTE RBIE TOIF INTF RBIF

GIE ( Global Interrup Enable bit ) :


- 1 : Autorise toutes les interruptions non masquées par leur bit individuel.
- 0 : Interdit toutes les interruptions.

PEIE ( Peripheral Interrup Enable bit ) :


- 1 : Autorise les interruptions causées par les périphériques.
- 0 : Interdit les interruptions causées par les périphériques.

TOIE ( Timer 0 Overflow Interrup Enable bit ) :


- 1 : Autorise l’interruption générée par le débordement du Timer 0.
- 0 : Interdit l’interruption générée par le débordement du Timer 0.

INTE ( RB0/Int Change Interrup Enable bit) :


- 1 : Autorise l’interruption due au changement d’état de la broche RB0.
- 0 : Interdit l’interruption due au changement d’état de la broche RB0.

RBIE ( RB Port Change Interrup Enable bit) :


- 1 : Autorise l’interruption due au changement d’état de l’une des broches de RB4 à RB7.
- 0 : Interdit l’interruption due au changement d’état de l’une des broches de RB4 à RB7.

TOIF ( Timer 0 Overflow Interrup Enable Flag bit ) :


Ce bit est un indicateur ou drapeau (Flag). Il est mis à 1 si une interruption est générée par le
débordement du Timer 0.
- 1 : Le Timer 0 est débordé.
- 0 : Le Timer 0 n’est pas débordé.
Ce drapeau doit être remis à zéro par le programme de traitement de l’interruption.

INTF ( RB0/Int Interrup Flag bit) :


Ce bit est un indicateur ou drapeau (Flag). Il est mis à 1 si une interruption est générée par le
changement d’état de la broche RB0.
- 1 : Une interruption sur la broche RB0 est survenue.
- 0 : Pas d’interruption sur la broche RB0.
Ce drapeau doit être remis à zéro par le programme de traitement de l’interruption.

RBIF ( RB Port Interrup Flag bit) :


Ce bit est un indicateur ou drapeau (Flag). Il est mis à 1 si une interruption est générée par le
changement d’état de l’une des broches de RB4 à RB7.
- 1 : Au moins une des broches de RB4 à RB7 a changé d’état.
- 0 : Aucune broche de RB4 à RB7 n’a changé d’état.
Ce drapeau doit être remis à zéro par le programme de traitement de l’interruption.

Chapitre A3 : Logique programmé Page 2


Cours 4ème année S.Techniques Génie électrique Mehdi Bouchami

 Pour le PIC 16F84A le registre INTCON contient les mêmes bits sauf que le bit 6 est EEIE (EEPROM
Interrupt Enable bit) :
- 1 : Autorise l’interruption due à la fin d’écriture en EEPROM.
- 0 : Interdit l’interruption due à la fin d’écriture en EEPROM.

NB : Par défaut toutes les interruptions sont désactivées. Au reset le registre INTCON = 0000000X.

5- Procédure d’interruption
Le sous-programme d’interruption est déclaré en tant que procédure avec le nom spécial «Interrupt». Cette
procédure s’exécute automatiquement en réponse aux évènements déclencheurs des interruptions activées par
l’utilisateur.

Procedure interrupt ;
Begin
Instruction 1 ;
.……………….;
.………………..;
Instruction n ;
Réactivation de l’interruption (GIE=1) ;
Remise à zéro de l’indicateur correspond à la source d’interruption utilisée (TOIF = 0, INTF = 0 ou
RBIF = 0) ;
End ;

6- L’interruption RB0/INT
L’interruption externe RB0/INT se produit par un front montant ou descendant d’une impulsion
appliquée sur la broche RB0 quand elle est configurée en entrée. Elle est gérée par les trois bits GIE,
INTE, INTF du registre INTCON et le bit 6, INTEDG du registre OPTION_REG :
- GIE : bit de validation globale de toutes les interruptions (1 : oui, 0 : non).
- INTE : bit de validation de l’interruption externe RB0/INT (1 : oui, 0 : non).
- INTF : indicateur correspond à l’interruption externe RB0/INT.
- INTEDG : ce bit permet de choisir le type du front sur lequel l’interruption RB0/INT est déclenchée
(1 : front montant, 0 : front descendent).

Lorsque le mécanisme de l’interruption se déclenche le microcontrôleur mettre le bit GIE à 0 et le bit


indicateur INTIF à 1.

Il faut impérativement mettre à 1, le bit GIE et mettre à 0, l’indicateur INTF à la fin du sous
programme d’interruption pour pouvoir revenir au programme principal et autoriser de nouvelles
interruptions sur la broche RB0.

Exemple :
Le montage suivant simule :
- Un programme principal qui permet de compter à chaque fois 5 pièces par lot (compteur modulo 5).
- Une procédure qui permet, suite à l’action sur le bouton Bp, d’arrêter l’exécution du programme
principal (comptage des pièces) et de déclencher une alarme visuelle D pendant 5s (temps nécessaire
pour éliminer manuellement une pièce défaillante). À la fin d’interruption le compteur reprend son
comptage où il s’est arrêté.

Chapitre A3 : Logique programmé Page 3


Cours 4ème année S.Techniques Génie électrique Mehdi Bouchami

Program Compteur_5; Begin


Var TRISA:=$F0;
i:byte; TRISB:=$FF;
Diode: sbit at PORTA.3; TRISC:=$00;
Procedure interrupt; INTCON :=$90 ;
Begin OPTION_REG.INTEDG:=1;
PORTC:=INTCON; ADCON1:=$06;
Diode:=1; PORTA :=0;
Delay_ms(5000); PORTC :=0;
Diode:=0; While true do
INTCON.GIE:=1; Begin
INTCON.INTF:=0; For i:=0 to 4 do
End; Begin
PORTC:=INTCON;
PORTA:=i;
Delay_ms(1000);
End;
End;
End.

Simuler le montage précédent ensuite déterminer l’état logique de chaque bi t du registre INTCON
au cours de déroulement d’une interruption :
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Valeur de registre INTCON INTCON
GIE EEIE TOIE INTE RBIE TOIF INTF RBIF
Avant l’interruption … … … … … … … … $…….
Au cours de l’interruption … … … … … … … … $…….
Après l’interruption … … … … … … … … $…….

7- Interruption RBI
Cette interruption est provoquée par un changement d’état d’au moins une des broches de RB4 à RB7
configurées en entrée. Elle est gérée par les trois bits GIE, INTE, INTF du registre INTCON :
- GIE : bit de validation globale de toutes les interruptions (1 : oui, 0 : non).
Chapitre A3 : Logique programmé Page 4
Cours 4ème année S.Techniques Génie électrique Mehdi Bouchami

- RBIE : bit de validation de l’interruption externe RBI (1 : oui, 0 : non).


- RBIF : indicateur correspond à l’interruption externe RBI.

Les broches RB4 à RB7 configurées en entrée sont comparées périodiquement à l’ancienne valeur
mémorisée par la dernière lecture du port B pour générer l’interruption.

Lorsque le mécanisme de l’interruption se déclenche le microcontrôleur mettre le bit GIE à 0 et


verrouille le bit indicateur RBIF à 1.
Une opération de lecture sur le port B est nécessaire pour déverrouiller l’accès au bit RBIF afin de
pouvoir le remettre à 0.

Il faut impérativement lire le port B, mettre à 1 le bit GIE et mettre à 0 l’indicateur RBIF à la fin du
sous-programme d’interruption pour pouvoir revenir au programme principal et autoriser de nouvelles
interruptions via les broches RB4 à RB7.

Exemple :
Le fonctionnement normal d’un robot aspirateur est indiqué par un chenillard formé de 8 diodes LEDs (D0
à D7) qui s’allument l’une après l’autre. Elles sont branchées avec le port D du PIC 16F877A.

Le rebot est équipé aussi de 4 capteurs CAV, CAR, CD et CG connectés respectivement aux broches RB4 à
RB7 du port B. Ces capteurs détectent les collisions du rebot avec les objets extérieurs dans toutes les
directions(gauche, droite, avant et arrière).

Le changement d’état d’au moins un des capteurs provoque l’arrêt de chenillard et l’enclenchement de
clignotement 10 fois des LEDs avec une fréquence de 5Hz.

Chapitre A3 : Logique programmé Page 5


Cours 4ème année S.Techniques Génie électrique Mehdi Bouchami

Program robot; Begin


Var TRISB:=$FF;
i, j, port: byte; TRISC:=$00;
diodes: byte at PORTD; TRISD:=$00;
Procedure interrupt; INTCON:=$88;
Begin PORTC:=0;
port:=PORTB; PORTD:=0;
PORTC:=INTCON; While true do
i:=0; Begin
While (i<10) do PORTD:=%00000001;
Begin For j:=0 to 7 do
PORTD:=$FF; Begin
delay_ms(100); PORTC:=INTCON;
PORTD:=$00; delay_ms(500);
delay_ms(100); diodes:= diodes shl (1);
inc(i); End;
End; End;
INTCON.GIE:=1; End.
INTCON.RBIF:=0;
End;

Simuler le montage précédent ensuite déterminer l’état logique de chaque bi t du registre INTCON au
cours de déroulement d’une interruption :
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Valeur de registre INTCON INTCON
GIE EEIE TOIE INTE RBIE TOIF INTF RBIF
Avant l’interruption … … … … … … … … $…….
Au cours de l’interruption … … … … … … … … $…….
Après l’interruption … … … … … … … … $…….

8- Exercice d’application
Réaliser l'activité 8 pages 106 et 107 du manuel d'activités.

Chapitre A3 : Logique programmé Page 6

Vous aimerez peut-être aussi