Professional Documents
Culture Documents
Master1
MICROCONTROLEURS
Les interruptions
F.Hocine V1-2010/2011
Les
interruptions
F.Hocine V1-
Les
interruptions
Mécanisme général d’une interruption sur le 16f84:
Programme principal
RETFIE
Suite du
programme
5. 6.
Le
7.4.
3.
Le
Le
1. programme
Le programme
programmetraite
2.L’événement
Le
programme
programme l’interruption
achève
saute se
achève
saute àdéroule
déclancheur normalement
àlel’instruction
l’adresse
traitement
l’instruction
d’interruption
dede
traitement
en
quil’interruption
cours
suit lasurvient
dedetraitement
l’interruption
dernièreavec RETFIE
exécutée
dans le programme principal.
F.Hocine V1-
Les
interruptions
F.Hocine V1-
Les
interruptions
F.Hocine V1-
Les : Le registre INTCON (INTerrupt CONtrol)
interruptions
F.Hocine V1-
Les : Le registre EECON1
interruptions
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
Restauration
F.Hocine V1-
Les
interruptions
Mécanisme général d’une interruption sur le 16f84:
Programme principal
L’adresse de
Déclancheur Instruction (1) d’interruption 0x04
d’interruption
GIE=1
Activation de Sauvegarde des
l’interruption Instruction (n-1) registres W, STATUS,
….
Flag de
l’interruption Effacer le flag
=1
Instruction (n) Executer le
programme
d’interruption
Suite du
Restaurer les
programme registres
sauvegardés
RETFIE
F.Hocine V1-
Structure d’un programme avec une routine d’interruption
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
----------- ; traitement de l’interruption
-----------
bcf …..,……..F ;effacer le flag
swapf status_temp,w
movwf STATUS ; restaurer les registres
swapf w_temp,f
swapf w_temp,w
retfie
PRO_PRIN bsf INTCON, GIE ;enable interruption globale
bsf INTCON, …E ;enable et intialisation des parametres d’interruption
---------------
----------------
; les instruction du
end
p.p
F.Hocine V1-
Les
interruptions
Exemple d’interruption sur RB7
F.Hocine V1-
Les
interruptions( définitions
)
F.Hocine V1-
Les interruptions(initialisation)
Autoriser l’interruption:
Avec le registre INTCON
INTCON
10 0 0 0 10 0 0 0 : D’136’
movlw D’136’
movwf INTCON
F.Hocine V1-
Les interruptions(initialisation)
OPTION
01 1 1 1 1 1 1 1 : D’127’
movlw D’127’
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 ; initialiser RA2
movlw D'136'
movwf INTCON ; charger le registre de contrôle d'inter
F.Hocine V1-
Les interruptions (ROUTINE
D’INTERRUPTION)
;**********************************************************************
; ROUTINE INTERRUPTION *
;**********************************************************************
; ROUTINE INTERRUPTION *
org 0x004 ;adresse d'interruption
;--------sauvgardes les registres
call intrb7 ; traiter interrupt RB7
bcf INTCON , RBIF ; effacer flag
;--------restaurer les registres
retfie ; fin de l’interruption
;************ 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
V1-2010/2011
F.Hocine
Les interruptions
Exemple de deux interruptions
Serrure codée
F.Hocine V1-
Les interruptions
Organigramme
EEPROM
F.Hocine V1-
Accès à EEPROM
Ø Le 16F84 dispose de 64 emplacements
eeprom disponibles pour usage libre
Ø L’adresse physique de la zone eeprom pour le
PIC16f84 commence, à l’adresse 0x2100.
Ø Quatre registres utilisés
EEDATA
EEADR
EECON1
EECON2
F.Hocine V1-
Accès à EEPROM
Le registre EEDATA
Ø Il est situé à l’adresse 0x08 dans la BANK0.
Ø C’est dans ce registre que va transiter la donnée à
écrire vers (ou la donnée lue) de l’eeprom.
Le registre EEADR
Ø Il est situé à l’adresse 0x09 dans la BANK0.
Ø C’est dans ce registre que se trouve l ’adresse de la
donnée à écrire vers (ou la donnée lue) de l’eeprom.
Ø Utilisation de l’adresse relative va de 0x00 à 0x3F, soit
64 emplacements.
F.Hocine V1-
Accès à EEPROM
Le registre EECON1
Ø Il est situé à l’adresse 0x88 dans la BANK1.
Ø Il contient 5 bits qui définissent ou indiquent le
fonctionnement des cycles de lecture/écriture en
eeprom.
F.Hocine V1-
EECON1
Les interruptions
F.Hocine V1-
Accès à EEPROM
Le registre EECON2
Ø Il est situé à l’adresse 0x89 dans la BANK1.
Ø Ce registre n’existe pas physiquement, il est utilisé
lors de l’écriture dans EEPROM
F.Hocine V1-
Accès à EEPROM
Exemple de lecture
EEPROM
BANK0
movlw addr
movwfEEADR
BANK1
bsf EECON1,RD
BANK0
movf EEDATA,w
F.Hocine V1-
Accès à EEPROM
Exemple d’écriture sur
EEPROM
BANK0
movlw addr
movwf EEADR
movlw DATA
movwf EEDATA
BANK1
bcf INTCON, GIE ; Disable interrupts so we don’t 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
F.Hocine
bsf INTCON, GIE ; Enable interrupts V1-
Initialisation de la zone
eeprom
Début d’écriture:
DE 0x0F
DE ‘’ infotronique ’’
F.Hocine V1-
Le TIMER0
Le TIMER0 est un compteur, qui utilise le
registre TMR0 qui se localise à l’adresse 0x01
en Bank0
Ø Mode compteur
Ø Mode timer
F.Hocine V1-
Le mode
compteur
Ø Compte les impulsions reçues sur le pin
RA4/TOKI.
ØLe comptage peut être effectué selon une
F.Hocine V1-
PREDIVISEUR
ØLe PREDIVISEUR est un diviseur de fréquence
ØNous pourrons donc décider d’avoir incrémentation de
PS2:PS
0
Le bit PSA indique la configuration de prédivision
PSA=0, indique que le prédivision est sur le timer0
PSA=1, indique que le prédivision est sur Watchdog
F.Hocine V1-
PREDIVISEUR
Exemple:
movf TMR0,1
clrf TMR0
F.Hocine V1-
Mode d’interruption sur le TMER0
F.Hocine V1-
WATCHDOG (Chien de
garde)
Le watchdog est lié à un timer interne (circuit
RC) qui oscille avec une période de 18 a 7 ms ,
qui n’est pas synchronisé au programme, ni à un
événement extérieur.
ØLa période l’oscillation varie en fonction de
F.Hocine V1-
Utilisation de WATCHDOG
F.Hocine V1-
Fonctionnement de WATCHDOG
F.Hocine V1-
Fonctionnement de WATCHDOG
Si le timer watchdog dépasse une certaine durée, le
programme est réinitialisé (adresse H'0000' de la mémoire de
programme). Cette durée dépend des bits PSA, PS2, PS1 et
PS0 du registre OPTION_REG :
PS2, PS1, prédivision Durée indicative
PSA
PS0 sur Watchdog
0 XXX 1 18 ms (7ms)
1 000 1 18 ms (7ms)
1 001 2 36 ms (14ms)
1 010 4 72 ms (28ms)
1 011 8 144 ms (56ms)
1 100 16 288 ms (112ms)
1 101 32 576 ms (224ms)
1 110 64 1,15 s (448ms)
1 111 128 2,3 s (896ms)
F.Hocine V1-
F.Hocine V1-