Académique Documents
Professionnel Documents
Culture Documents
MICROCONTROLEURS
Les interruptions
F.Hocine
V1-2010/2011
Les interruptions
F.Hocine
V1-
Les interruptions
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
F.Hocine
V1-
Les interruptions
F.Hocine
V1-
Les interruptions
F.Hocine
V1-
Les interruptions
: Le registre EECON1
fla
g
F.Hocine
V1-
Les interruptions
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
Restauration
movf
movwf
F.Hocine
status_temp,w
; charge le STATUS sauvegard
STATUS
; restaurer STATUS
V1-
Les interruptions
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-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;;;;;;;;;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
; les instruction du
V1-
Les interruptions
F.Hocine
V1-
Les
interruptions( dfinitions )
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-
;*********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-
;**********************************************************************
;
ROUTINE INTERRUPTION
*
;**********************************************************************
org
0x004
; 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-
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-
F.Hocine
V1-
WATCHDOG (Chien de
garde)
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-