Vous êtes sur la page 1sur 41

InfotroniqueMaster1

MICROCONTROLEURS

Les interruptions

F.Hocine

V1-2010/2011

Les interruptions

Cest quoi une interruption?

F.Hocine

V1-

Les interruptions

Mcanisme gnral dune interruption sur le 16f84:


Programme
principal

Instruction (1)
Dclancheur
dinterruption

Instruction (n-1)

Instruction (n)

Suite du
programme

Ladresse de la
routine
dinterruption
Traitement de
linterruption
(une ou
plusieurs
instructions)
RETFIE

5. 6.
Le
1.
programme
Le
programme
traite
linterruption
se
normalement
3.
Le
2.Lvnement
Le
programme
programme
achve
dclancheur
achve
saute
droule
ladresse
traitement
linstruction
dinterruption
dede
traitement
en
linterruption
cours
dedetraitement
linterruption
avec
RETFIE
7.4.
Le
programme
saute
lelinstruction
qui
suit
lasurvient
dernire
excute
dans le programme principal.
F.Hocine

V1-

Les interruptions

Les sources dinterruption

Le 16F84 dispose de quatre sources d`interruption


Une source externe via la broche RB0/INT
Le dbordement du TIMER0
Un changement de ltat du PORTB (RB4:RB7)
Fin dcriture en EEPROM

F.Hocine

V1-

Les interruptions

Le registre INTCON (INTerrupt CONtrol)

Les interruptions peuvent tre actives ou


dsactives (masques) individuellement ou
globalement. Cela se fait via le registre de
commande d'interruption (INTCON.)

F.Hocine

V1-

Les interruptions

: Le registre INTCON (INTerrupt CONtrol)

Global Interrupt Enablebit. Il permet de


valider ou dinvalider toutes les
interruptions en une seule fois.

Ce sont les bits de validation


dinterruptions

Les flag (les


indicateurs)

F.Hocine

V1-

Les interruptions

: Le registre EECON1

fla
g

F.Hocine

V1-

Les interruptions

Sauvegarde et restauration de lenvironnement


Seul le PC est sauvegard automatiquement

Les seuls registres sauvarder obligatoirement


sont donc STATUS et W.
Les registres utiliss dans le sous programme
dinterruption doivent tre sauvegards

F.Hocine

V1-

Les interruptions

Sauvegarde w
movwf w_temp

Restauration
swapf w_temp,f
swapf w_temp,w

F.Hocine

V1-

Les interruptions

Sauvegarde de STATUS
swapf
movwf

STATUS,w ; transfre STATUS dans W


status_temp ; sauvegarde de STATUS

Restauration
movf
movwf

F.Hocine

status_temp,w
; charge le STATUS sauvegard
STATUS
; restaurer STATUS

V1-

Les interruptions

Mcanisme gnral dune interruption sur le 16f84:


Programme
principal
Dclancheur
Dclancheur
dinterruption
dinterruption
GIE=1
GIE=1
Activation
Activation de
de
linterruption
linterruption
Flag
Flag de
de
linterruption
linterruption
=
=1

Ladresse de

0x04

Instruction (1)

dinterruption

Instruction (n-1)

Sauvegarde des
registres W, STATUS,
.
Effacer le flag

Instruction (n)

Suite du
programme

Executer le
programme
dinterruption
Restaurer les
registres
sauvegards
RETFIE

F.Hocine

V1-

Structure dun programme avec une routine dinterruption


LIST
p=16F84
#include <p16F84.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;;;;;;;;;Les declarations
ORG 0x00
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
GOTO PRO_PRIN
;;
ORG 0x04
GOTO INTRP
INTERP movwf w_temp
swapf STATUS,w
; sauvegarder des registres
movwf status_temp
---------------------

bcf ..,..F
swapf status_temp,w
movwf STATUS
swapf w_temp,f
swapf w_temp,w

retfie
INTCON, GIE
PRO_PRIN bsf
bsf
INTCON, E
------------------------------

end
p.p

F.Hocine

; traitement de linterruption
;effacer le flag

; restaurer les registres

;enable interruption globale


;enable et intialisation des parametres dinterruption

; les instruction du

V1-

Les interruptions

Exemple dinterruption sur RB7

Un B.P sur RB4 pour piloter la LED

F.Hocine

V1-

Les
interruptions( dfinitions )

; ****** DEFINE *******************************************************


#DEFINE
#DEFINE

F.Hocine

Bouton
LED

PORTB , 7
PORTA , 0

; bouton poussoir
; LED

V1-

Les interruptions(initialisation)
Autoriser linterruption:
Avec le registre INTCON

INTCON

10

10

: D136

movlw D136
movwf INTCON
F.Hocine

V1-

Les interruptions(initialisation)
Connecter les pull-up avec le registre
OPTION_REG

OPTION

01

: D127

movlw D127
movwf OPTION_REG

F.Hocine

V1-

Les interruptions (initialisation )

;*********INITIALISATION ********************************************
init
BANK1
; passer banque1
movlw D'127'
movwf
OPTION_REG ; initialiser registre option
clrf TRISA
BANK0
bcf LED
movlw D'136'
movwf
INTCON

F.Hocine

; initialiser RA2
; charger le registre de contrle d'inter

V1-

Les interruptions (ROUTINE DINTERRUPTION)

;**********************************************************************
;
ROUTINE INTERRUPTION
*
;**********************************************************************
org

0x004

;------sauvegarder les registres


movwf w_temp
swapf STATUS,w
movwf status_temp

; adresse d'interruption
; sauvegarder W
; sauvgarder status
intrb7

call

intrb7

;------restaurer registres
swapf status_temp,w
movwf STATUS
swapf w_temp,f
retfie

movlw RB7
B'00000001'
; traiter interrupt
BANK0
xorwf PORTA , f
; inverser RA0
return
; restaurer status
; restaurer w
; FIN interruption

simulateur
F.Hocine

V1-

Les interruptions (ROUTINE DINTERRUPTION)


; ***************DEMARRAGE SUR RESET
*
org
0x000
; Adresse de dpart aprs reset
goto init
; initialisation
;
ROUTINE INTERRUPTION
*
org
0x004
;adresse d'interruption
;--------sauvgardes les registres
call
intrb7
; traiter interrupt RB7
;--------restaurer les
bcfregistres
INTCON , RBIF
; effacer flag
retfie
; fin de linterruption
;************ INTERRUPTION RB7**********************
intrb7
movlw B'00000001'
BANK0
xorwf PORTA , f
; inverser RA0
return
;*********** INITIALISATIONS ***********************
init
;-------intialisation des registres
start
goto
start
END
; fin de programme

F.Hocine

V1-2010/2011

Les interruptions
Exemple de deux interruptions

Serrure code

F.Hocine

V1-

Les interruptions

Organigramme

EEPROM
F.Hocine

V1-

Accs EEPROM
Le 16F84 dispose de 64 emplacements
eeprom disponibles pour usage libre
Ladresse physique de la zone eeprom pour
le PIC16f84 commence, ladresse 0x2100.
Quatre registres utiliss
EEDATA
EEADR
EECON1
EECON2
F.Hocine

V1-

Accs EEPROM
Le registre EEDATA
Il est situ ladresse 0x08 dans la BANK0.
Cest dans ce registre que va transiter la donne
crire vers (ou la donne lue) de leeprom.
Le registre EEADR
Il est situ ladresse 0x09 dans la BANK0.
Cest dans ce registre que se trouve ladresse de la
donne crire vers (ou la donne lue) de leeprom.
Utilisation de ladresse relative va de 0x00 0x3F,
soit 64 emplacements.
F.Hocine

V1-

Accs EEPROM
Le registre EECON1
Il est situ ladresse 0x88 dans la BANK1.
Il contient 5 bits qui dfinissent ou indiquent le
fonctionnement des cycles de lecture/criture en
eeprom.

F.Hocine

V1-

EECON1

Les interruptions

F.Hocine

V1-

Accs EEPROM
Le registre EECON2
Il est situ ladresse 0x89 dans la BANK1.
Ce registre nexiste pas physiquement, il est utilis
lors de lcriture dans EEPROM

F.Hocine

V1-

Accs EEPROM
Exemple de lecture
EEPROM
BANK0
movlw
addr
movwfEEADR
BANK1
bsf
EECON1,RD
BANK0
movf EEDATA,w

F.Hocine

V1-

Accs EEPROM
Exemple dcriture sur
EEPROM
BANK0

movlw addr
movwf EEADR
movlw DATA
movwf EEDATA
BANK1
bcf
INTCON, GIE
; Disable interrupts so we dont mess with
sequence
bsf
EECON1, WREN ; Enable a write
movlw 0x55
; This is just what the rules say!
movwf EECON2
; Write the 0x55 here
movlw 0xAA
; This is just what the rules say!
movwf
EECON2
; Write the 0xAA here
bsf EECON1, WR
; Define the action as a write start it
bsf
INTCON, GIE
; Enable interrupts
F.Hocine

V1-

Initialisation de la zone
eeprom
Linitialisation se fait directement au moment de la
programmation. Ceci seffectue laide de la directive DE
:Data Eeprom
Initialiser ladresse de dbut dcriture:
Org 0x2100
Dbut dcriture:
DE 0x0F
DE infotronique

F.Hocine

V1-

Le TIMER0
Le TIMER0 est un compteur, qui utilise le
registre TMR0 qui se localise ladresse 0x01 en
Bank0
Mode
compteur
Mode timer
La slection de mode de fonctionnement seffectue
par le bit T0CS: Tmr0 Clock Source (5 bits du registre
OPTION ):
T0CS = 1 : Fonctionnement en mode compteur
T0CS = 0 : Fonctionnement en mode timer
F.Hocine

V1-

Mode Compteur
Compte les impulsions reues sur le pin
RA4/TOKI.
Le comptage peut tre effectu selon une
transition de niveau haut->bas ou bas>haut
La slection de niveau de transition seffectue par
le bit 4 du registre OPTION : T0SE pour Timer0
Source Edge select bit.
T0SE = 0 : comptage si lentre RA4/TOKI passe de 0
1
T0SE = 1 : comptage si lentre RA4/TOKI passe de 1
0
F.Hocine
V1-

Mode Timer
Compte les cycles dhorloge du PIC
Supposons que nous travaillons avec un
quartz de 4MHz. Nous avons une incrmentation
de TMR0 chaque 1s (il compte le temps).
Pour modifier la base de temps Nous
disposons dun PREDIVISEUR

F.Hocine

V1-

PREDIVISEUR
Le PREDIVISEUR est un diviseur de frquence
Nous pourrons donc dcider davoir incrmentation de
tmr0 toutes les 2 priodes par exemple, ou encore toutes
les 64 priodes. Cela dpend des bits PS0:PS2 du registre
OPTION, selon le tableau suivant:

PS2:PS
0
Le bit PSA indique
la configuration de prdivision
PSA=0, indique que le prdivision est sur le timer0
PSA=1, indique que le prdivision est sur Watchdog
F.Hocine

V1-

PREDIVISEUR
Lcriture dans le registre tmr0 efface le contenu du
prdiviseur. Les vnements survenus au niveau du
prdiviseur sont donc perdus.
Exemple:
movf TMR0,1
clrf TMR0

F.Hocine

V1-

Mode dinterruption sur le TMER0


Lorsque T0IE est positionn dans le registre
INTCON, chaque fois que le flag T0IF passe 1,
une interruption est gnre.
Application pratique du timer0
Faire clignoter une LED une priode 1s

F.Hocine

V1-

WATCHDOG (Chien de
garde)

Le watchdog est li un timer interne (circuit


RC) qui oscille avec une priode de 18 a 7 ms ,
qui nest pas synchronis au programme, ni un
vnement extrieur.
La priode loscillation varie en fonction de
diffrents paramtres comme la tension
dalimentation et la temprature.
La valeur minimale de 7ms est celle que
vous devrez utiliser dans la pratique.
F.Hocine

V1-

Utilisation de WATCHDOG
Le watchdog est un mcanisme qui permet au
C de reprendre la main (permet de faire un
RESET interne) en cas de plantage.
Dans le cas d'une perturbation lectrique
qui fait sauter le programme une adresse
quelconque et inattendue
Dans le cas d'un bug il faut corriger le
programme
F.Hocine

V1-

Fonctionnement de WATCHDOG
La mise en service ou larrt du watchdog se dcide au
moment de la programmation avec la directive _CONFIG.
Si _WDT_OFF le watchdog ne sera pas actif.
Si _WDT_ON , le watchdog sera actif.
Il faut ensuite placer correctement dans le programme
l'instruction CLRWDT.
L'instruction CLRWDT :
- met 1 le bit TO le 4 bit du registre
STATUS
- met 1 le bit PD le 3 bit du registre
STATUS
En cas de dbordement du watchdog :
- le bit TO est mis 0

F.Hocine

V1-

Fonctionnement de WATCHDOG
Si le timer watchdog dpasse une certaine dure, le
programme est rinitialis (adresse H'0000' de la mmoire de
programme). Cette dure dpend des bits PSA, PS2, PS1 et
PS0 du registre OPTION_REG :

PS2, PS1,
prdivision
Dure indicative
PSA

F.Hocine

0
1
1
1
1

PS0
XXX
000
001
010
011

sur Watchdog
1
1
2
4
8

18 ms (7ms)
18 ms (7ms)
36 ms (14ms)
72 ms (28ms)
144 ms (56ms)

100

16

288 ms (112ms)

1
1
1

101
110
111

32
64
128

576 ms (224ms)
1,15 s (448ms)
2,3 s (896ms)

V1-

F.Hocine

V1-

Vous aimerez peut-être aussi