Vous êtes sur la page 1sur 14

Architecture des microcontrôleurs

Classes: 2P & 2A & 3B

Chapitre 4 Microcontrôleurs PIC 16F84:


Les interruptions

UP Embarqué
PLAN

1. Définir et expliquer la notion d’interruption.


2. Détailler le mécanisme d’interruptions pour le PIC16f84A.
3. Enumérer les sources d’interruptions (logicielles et Matérielles).
4. Configurer le registre INTCON.
5. Configurer le registre OPTION-REG

2
Introduction

La différence entre un appel et une alarme?


« L’alarme s’éteindra dans 5 minutes »

3
Application dans les systèmes embarqués

• La Domotique:

Capteur de gaz Capteur de flamme

Capteur de fumée
4
Définition des interruptions

• Une interruption est un signal déclenché par un événement interne à la


machine ou externe, provoquant l'arrêt d'un programme en cours
d'exécution à la fin de l'opération courante, au profit d'un programme plus
prioritaire.
• Ensuite, le programme interrompu reprend son exécution à l'endroit où il
avait été interrompu.

Instruction …. Instruction Instruction


Traitement de Instruction
Instruction
n°:1 n:°N suivante N+1 suivanteN+1
suivante N+2
l’Interruption

Evénement
déclencheur INTERUPTION

5
Les sources d’interruption dans le pic16f84

• Chaque microcontrôleurs possède ses propres sources d’interruptions


(logicielles & matérielles) .
• Le 16F84 est pauvre en sources d’interruptions comparant à d’autres
microcontrôleurs.
• Il dispose de 4 sources d’interruptions possibles: 2 externes+2 internes.

3 Timer 0

1
4 EEPROM
2

66
L’ interruption externe dans le pic16f84

• Ces sources d’interruptions peuvent se résumer dans le tableau suivant:

Source d’interruption Explication

externes

Le changement d’état de la pin RB0, encore appelée


RB0/INT
INTerrupt pin, étant configurée en entrée.

Le changement d’un niveau sur une des pins RB4 à


PORTB
RB7 qui sont configurées en entrée.

7
Organigramme général sans interruption

Programme Principal (main) Interruption (fonction)


Début
Début
CONFIGURARTION
Configurer les entrées.
Configurer les sorties.
Fonction_1
Instruction 1
INITIALISATION Instruction 2
Initialiser les sorties .
.
.
Instruction n
PROGRAMME PRINCIPAL
Boucle infinie Instruction 1
Fonction_1()
Instruction 2 Fin
.
.
Instruction n

Fin

L’appel de la fonction se fait toujours entre Instruction 1 et Instruction 2 8


Organigramme général avec interruption
Programme Principal (main)
Début Interruption (fonction)
CONFIGURARTION
Configurer les entrées.
Début
Configurer les sorties.

Configurer les sources d’interruption


ROUTINE D’INTERRUPTION
Instruction 1
INITIALISATION Instruction 2
Initialiser les sorties .
.
.
Instruction n
PROGRAMME PRINCIPAL
Instruction 1
Flag d’interruption
Instruction 2
Instruction3 Fin
.
Flag d’interruption Instruction n
Instruction n+1

Fin
L’appel de la fonction d’interruption change d’emplacement selon le changement d’état 9
de la source d’interruption
Configuration de l’interruption sur RB0
• Le programmateur, afin d’utiliser le mécanisme d’interruption dans son système, doit faire sa
configuration, via les registres INTCON (Interruption Configuration) et OPTION_REG

INTCON (Interruption Configuration)


Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

GIE INTE E : Enable

Global Interrupt RB0/INT Enable


0 : désactiver les interruptions 0 : désactiver l’interruption
1 : utiliser les interruptions 1 : une interruption est déclenché à chaque changement d’état de RB0.
Le sens de transition doit être fixé (montant ou décendant)

OPTION_REG
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
INTEDG

RB0/INT edge
0 : le sens de la transition qui provoque l’interruption, soit le passage de 1 vers 0
1 : le sens de la transition qui provoque l’interruption, soit le passage de 0 vers 1 8
Exemple de configuration de l’interruption sur RB0

• Le programmateur, afin d’utiliser le mécanisme d’interruption dans son système, doit faire sa
configuration, via les registres INTCON (Interruption Configuration) et OPTION_REG

INTCON (Interruption Configuration)


Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

1 1 E : Enable

Global Interrupt RB0/INT Enable


1 : utiliser les interruptions 1 : une interruption est déclenché à chaque front montant de RB0.

OPTION_REG
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
1

INTEDG
le sens de la transition qui provoque l’interruption, soit le passage de 0 vers 1
8
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
INTCON
GIE = 1 INTE =1 INTF = 1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
OPTION_REG
INTEDG = 1

Début Début

CONFIGURARTION
Configurer les entrées.
ROUTINE D’INTERRUPTION
Configurer les sorties.
Instruction 1
INTCON.GIE = 1
Instruction 2
INTCON.INTE = 1
.
OPTION_REG.INTEDG= 1
.
.
INITIALISATION Instruction n
Initialiser les sorties INTCON.INTF=0

PROGRAMME PRINCIPAL
Fin
Instruction 1
Changement d’état de Instruction 2
RB0 Instruction3

Fin 12
Manipulation
• Soit le montage suivant:

• Ecrire le programme assembleur et C qui illustre ce fonctionnement : La


led RA0 initialement éteinte et led RA1 clignote principalement 4fois,
l’appui sur le bouton poussoir rend cette led éteinte, la led RA0 clignote
pendant 2 fois, Et puis retourne à l’état principal.

9
Organigramme
Programme Principal (main) Interruption (fonction)
Début

CONFIGURARTION
RA0 , RA1 : sorties
RB0 : entrée Début
INTCON.GIE = 1
INTCON.INTE = 1
OPTION_REG.INTEDG= 1
ROUTINE D’INTERRUPTION
Eteindre RA1
INITIALISATION Clignoter RA0
Leds éteintes Clignoter RA0
INTCON.INTF=0

PROGRAMME PRINCIPAL
Clignoter RA1
Fin
Clignoter RA1
Clignoter RA1
Clignoter RA1

Fin

14

Vous aimerez peut-être aussi