interruption2.ppsx

Upload: kimboo-rasta

Post on 10-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Diapositive 1

Les interruptionsF.HocineV1-2010/2011Cest quoi une interruption?Les interruptionsF.HocineV1-2010/2011Mcanisme gnral dune interruption sur le 16f84:Programme principalInstruction (1)Instruction (n-1)Instruction (n)Suite du programmeLe programme se droule normalementDclancheur dinterruption2.Lvnement dclancheur dinterruption survient3. Le programme achve linstruction en cours de traitement4. Le programme saute ladresse de traitement de linterruptionLadresse de la routine dinterruptionTraitement de linterruption (une ou plusieurs instructions)5. Le programme traite linterruption6. Le programme achve le traitement de linterruption avec RETFIERETFIE7. Le programme saute linstruction qui suit la dernire excute dans le programme principal.Les interruptionsF.HocineV1-2010/2011Les 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

Les interruptionsF.HocineV1-2010/2011Les interruptions peuvent tre actives ou dsactives (masques) individuellement ou globalement. Cela se fait via le registre de commande d'interruption (INTCON.)Le registre INTCON (INTerrupt CONtrol)Les interruptionsF.HocineV1-2010/2011: 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)6

Les interruptionsF.HocineV1-2010/2011: Le registre EECON1flag 7Les interruptionsF.HocineV1-2010/2011Sauvegarde et restauration de lenvironnement

Seul le PC est sauvegard automatiquementLes registres utiliss dans le sous programme dinterruption doivent tre sauvegardsLes seuls registres sauvarder obligatoirement sont donc STATUS et W.8Les interruptionsF.HocineV1-2010/2011Sauvegarde w

movwf w_tempRestauration swapf w_temp,fswapf w_temp,w 9Les interruptionsF.HocineV1-2010/2011Sauvegarde de STATUS

swapf STATUS,w ; transfre STATUS dans W movwf status_temp ; sauvegarde de STATUS Restauration movf status_temp,w ; charge le STATUS sauvegard movwf STATUS ; restaurer STATUS 10Les interruptionsF.HocineV1-2010/2011Mcanisme gnral dune interruption sur le 16f84:Programme principalInstruction (1)Instruction (n-1)Instruction (n)Suite du programmeDclancheur dinterruptionGIE=1Activation de linterruption

Flag de linterruption=1

Ladresse de dinterruption 0x04Sauvegarde des registres W, STATUS,. RETFIEEffacer le flagExecuter le programme dinterruptionRestaurer les registres sauvegards F.HocineV1-2010/2011Structure dun programme avec une routine dinterruptionLIST p=16F84 #include __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;Les declarations;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ORG 0x00GOTO PRO_PRINORG 0x04GOTO INTRP

movwf w_tempswapf STATUS,wmovwf status_temp

----------------------

bcf..,..Fswapf status_temp,wmovwf STATUS swapf w_temp,f swapf w_temp,w

retfie

INTERPbsfINTCON, GIE ;enable interruption globalebsfINTCON, E ;enable et intialisation des parametres dinterruption---------------- PRO_PRIN; sauvegarder des registres ; restaurer les registres ;effacer le flag ; traitement de linterruption--------------- ; les instruction du p.pend12Les interruptionsF.HocineV1-2010/2011Exemple dinterruption sur RB7

Un B.P sur RB4 pour piloter la LED 13Les interruptions( dfinitions )F.HocineV1-2010/2011; ****** DEFINE *******************************************************

#DEFINEBoutonPORTB , 7; bouton poussoir#DEFINE LEDPORTA , 0; LED14Les interruptions(initialisation)F.HocineV1-2010/2011Autoriser linterruption:

Avec le registre INTCON000000001000000010001000 INTCON: D136movlw D136movwf INTCON 15F.HocineV1-2010/2011Connecter les pull-up avec le registre OPTION_REG Les interruptions(initialisation)

1111111101111111 OPTION: D127movlw D127movwf OPTION_REG 16Les interruptions (initialisation)F.HocineV1-2010/2011;*********INITIALISATION ********************************************initBANK1; passer banque1movlwD'127'movwfOPTION_REG; initialiser registre optionclrfTRISABANK0bcfLED; initialiser RA2 movlwD'136'movwfINTCON; charger le registre de contrle d'inter17Les interruptions (ROUTINE DINTERRUPTION)F.HocineV1-2010/2011;**********************************************************************; ROUTINE INTERRUPTION *;**********************************************************************

org 0x004; adresse d'interruption

;------sauvegarder les registresmovwf w_temp ; sauvegarder WswapfSTATUS,wmovwfstatus_temp; sauvgarder status

callintrb7; traiter interrupt RB7

;------restaurer registresswapfstatus_temp,wmovwf STATUS; restaurer statusswapf w_temp,f; restaurer w retfie ; FIN interruptionintrb7movlwB'00000001'BANK0xorwfPORTA , f ; inverser RA0return

simulateur18Les interruptions F.HocineV1-2010/2011Exemple de deux interruptionsSerrure code

20Les interruptions F.HocineV1-2010/2011EEPROMOrganigramme 21Accs EEPROMF.HocineV1-2010/2011Le 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. 23Accs EEPROMF.HocineV1-2010/2011Le 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. 24Les interruptions F.HocineV1-2010/2011

EECON125F.HocineV1-2010/2011Le registre EECON2 Il est situ ladresse 0x89 dans la BANK1. Ce registre nexiste pas physiquement, il est utilis lors de lcriture dans EEPROMAccs EEPROM26F.HocineV1-2010/2011Exemple de lecture EEPROMAccs EEPROMBANK0movlw addrmovwfEEADRBANK1bsf EECON1,RDBANK0movf EEDATA,w27F.HocineV1-2010/2011Exemple dcriture sur EEPROMAccs EEPROMBANK0movlw addrmovwfEEADRmovlwDATAmovwfEEDATABANK1bcf INTCON, GIE ; Disable interrupts so we dont mess with sequencebsf EECON1, WREN ; Enable a writemovlw 0x55 ; This is just what the rules say!movwf EECON2 ; Write the 0x55 heremovlw 0xAA ; This is just what the rules say!movwf EECON2 ; Write the 0xAA herebsf EECON1, WR ; Define the action as a write start itbsf INTCON, GIE ; Enable interrupts28F.HocineV1-2010/2011Initialisation de la zone eepromLinitialisation se fait directement au moment de la programmation. Ceci seffectue laide de la directive DE :Data Eeprom Initialiser ladresse de dbut dcriture:Org 0x2100DE 0x0FDbut dcriture:DE infotronique29F.HocineV1-2010/2011Le TIMER0 Mode compteur Le TIMER0 est un compteur, qui utilise le registre TMR0 qui se localise ladresse 0x01 en Bank0 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

30F.HocineV1-2010/2011 Compte les impulsions reues sur le pin RA4/TOKI.Mode CompteurLe comptage peut tre effectu selon une transition de niveau haut->bas ou bas->hautLa 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 31F.HocineV1-2010/2011 Compte les cycles dhorloge du PICMode Timer 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 32F.HocineV1-2010/2011Le PREDIVISEUR est un diviseur de frquenceNous 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: PREDIVISEUR

PS2:PS0Le bit PSA indique la configuration de prdivisionPSA=0, indique que le prdivision est sur le timer0PSA=1, indique que le prdivision est sur Watchdog33F.HocineV1-2010/2011PREDIVISEUR Lcriture dans le registre tmr0 efface le contenu du prdiviseur. Les vnements survenus au niveau du prdiviseur sont donc perdus. Exemple:movfTMR0,1clrfTMR034F.HocineV1-2010/2011Mode dinterruption sur le TMER0Lorsque 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 1s35F.HocineV1-2010/2011Le 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.WATCHDOG (Chien de garde)36F.HocineV1-2010/2011Utilisation 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 inattendueDans le cas d'un bug il faut corriger le programme37F.HocineV1-2010/2011Fonctionnement de WATCHDOGLa 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

38F.HocineV1-2010/2011PSAPS2, PS1, PS0prdivisionsur WatchdogDure indicative 0XXX118 ms (7ms)1000118 ms (7ms)1001236 ms (14ms)1010472 ms (28ms) 10118144 ms (56ms)110016288 ms (112ms)110132576 ms (224ms)1110641,15 s (448ms)11111282,3 s (896ms) 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 : Fonctionnement de WATCHDOG39