PIC 16F84


PIC 16F84 Ph Hoppenot juin 2004 129 Dpartement GEII PIC 16F84 Philippe Hoppenot hoppenotlscuniv-evryfr httplscuniv-evryfrhoppenotpresentationfrancaisehtml Ce cours sur le PIC est dispens en licence professionnelle Concepteurs de Systmes de Commande Industrielle Son utilisation est libre avec les contraintes suivantes - Ne pas lutiliser des fins commerciales - Citer la source lors de son utilisation - Avertir lauteur de son utilisation Toutes les remarques sur le fond et la forme de ce document sont les bienvenues
PIC 16F84 Ph Hoppenot juin 2004 229 PIC 16F84 I Quest-ce quun PIC 4 II PIC 16F844 II1 Brochage et fonction des pattes5 II2 Architecture gnrale 5 III Organisation de la mmoire 6 III1 Mmoire de programme6 III2 Mmoire de donnes7 III21 Registres gnraux 8 III22 Registres spciaux - SFRs 8 III23 Mmoire EEPROM10 IV Jeu dinstructions10 IV1 Format gnral11 IV2 Exemple dinstruction le transfert11 IV3 Liste des instructions13 IV4 Excution dun programme notion de pipe-line13 V Modes dadressages14 V1 Adressage immdiat14 V2 Adressage direct14 V3 Adressage indirect14 VI Ports dentresSorties15 VI1 Port A15 VI2 Port B16 VII Compteur 17 VII1 Registre TMR017 VII2 Choix de lhorloge 18 VII3 Pr-diviseur 18 VII4 Fin de comptage et interruption 19 VII5 Registres utiles la gestion de timer019
PIC 16F84 Ph Hoppenot juin 2004 329 VIII Accs la mmoire EEPORM 19 VIII1 Registres utiliss 19 VIII2 Lecture 20 VIII3 Ecriture20 IX Interruptions21 IX1 Rappel - Notion de sous-programme21 IX2 Mcanisme21 IX3 Diffrentes sources dinterruption22 IX4 Validation des interruptions22 IX5 Squence de dtournement vers le sous-programme dinterruption 23 IX6 Sauvegarde et restitution du contexte23 IX61 O sauvegarder ces registres 24 IX62 Comment sauvegarder ces registres 24 IX63 Comment restituer ces registres 24 IX64 Rsum24 IX7 Reconnaissance de linterruption active25 IX8 Retour au programme initial25 X Chien de garde25 X1 Principe 25 X2 Mise en service 26 X3 Gestion 26 X4 Choix de la dure 26 XI Mode sommeil26 XI1 Principe26 XI2 Gestion26 XI21 Mise en sommeil 26 XI22 Rveil 26 XII Programmation sur site 27 XIII Bibliographie 29
PIC 16F84 Ph Hoppenot juin 2004 429 I Quest-ce quun PIC Un PIC est un microcontrleur de chez Microchip Ses caratristiques principales sont Sparation des mmoires de programme et de donnes architecture Harvard On obtient ainsi une meilleure bande passante et des instructions et des donnes pas forcment codes sur le mme nombre de bits Communication avec lextrieur seulement par des ports il ne possde pas de bus dadresses de bus de donnes et de bus de contrle comme la plupart des microprocesseurs Utilisation dun jeu dinstructions rduit do le nom de son architecture RISC Reduced Instructions Set Construction Les instructions sont ainsi codes sur un nombre rduit de bits ce qui acclre lexcution 1 cycle machine par instruction sauf pour les sauts qui requirent 2 cycles En revanche leur nombre limit oblige se restreindre des instructions basiques contrairement aux systmes darchitecture CISC Complex Instructions Set Construction qui proposent plus dinstructions donc codes sur plus de bits mais ralisant des traitements plus complexes Il existe trois familles de PIC - Base-Line Les instructions sont codes sur 12 bits - Mid-Line Les instructions sont codes sur 14 bits - High-End Les instructions sont codes sur 16 bits Un PIC est identifi par un numro de la forme suivant xxLXXyy zz - xx Famille du composant 12 14 16 17 18 - L Tolrance plus importante de la plage de tension - XX Type de mmoire de programme C - EPROM ou EEPROM CR - PROM F - FLASH - yy Identification - zz Vitesse maximum du quartz Nous utiliserons un PIC 16F84 10 soit - 16 Mid-Line - F FLASH - 84 Type - 10 Quartz 10MHz au maximum II PIC 16F84 Figure II1 Liste des composants prsents dans la documentation nDS30430C Figure prise dans la documentation technique n DS30430C du PIC
PIC 16F84 Ph Hoppenot juin 2004 529 Il sagit dun microcontrleur 8 bits 18 pattes La documentation technique nDS30430C porte sur plusieurs composants Figure II1 Principales caractristiques - 35 instructions - Instructions codes sur 14 bits - Donnes sur 8 bits - 1 cycle machine par instruction sauf pour les sauts 2 cycles machine - Vitesse maximum 10 MHz soit une instruction en 400 ns 1 cycle machine 4 cycles dhorloge - 4 sources dinterruption - 1000 cycles deffacementcriture pour la mmoire flash 10000000 pour la mmoire de donne EEPROM II1 Brochage et fonction des pattes La Figure II2 montre le brochage du circuit Les fonctions des pattes sont les suivantes - VSS VDD Alimentation - OSC12 Horloge - RA0-4 Port A - RB0-7 Port B - T0CKL Entre de comptage - INT Entre dinterruption - MCLR Reset 0V Choix du mode programmation 12V - 14V excution 45V - 55V Figure II2 Brochage du circuit II2 Architecture gnrale La Figure II3 prsente larchitecture gnrale du circuit Il est constitu des lments suivants - un systme dinitialisation la mise sous tension power-up timer - un systme de gnration dhorloge partir du quartz externe timing gnration - une unit arithmtique et logique ALU - une mmoire flash de programme de 1k quotmotsquot de 14 bits III1 - XII - un compteur de programme program counter et une pile stack - un bus spcifique pour le programme program bus - un registre contenant le code de linstruction excuter - un bus spcifique pour les donnes data bus - une mmoire RAM contenant - les SFR III22 - 68 octets de donnesIII21
PIC 16F84 Ph Hoppenot juin 2004 629 - une mmoire EEPROM de 64 octets de donnes VIII - 2 ports dentressorties VI - un compteur timer VII - un chien de garde watchdog X Figure II3 Architecture gnrale du PIC 16F8X III Organisation de la mmoire Le PIC contient de la mmoire de programme et de la mmoire de donnes La structure Harvard des PICs fournit un accs spar chacune Ainsi un accs aux deux est possible pendant le mme cycle machine III1 Mmoire de programme Cest elle qui contient le programme excuter Ce dernier est tlcharg par liaison srie voir XII La Figure III1 montre lorganisation de cette mmoire Elle contient 1k quotmotsquot de 14 bits dans le cas du PIC 16F84 mme si le compteur de programme PC de 13 bits peut en adresser 8k Il faut se mfier des adresses images Ladresse 0000h contient le vecteur du reset ladresse 0004h lunique vecteur dinterruption du PIC La pile contient 8 valeurs Comme le compteur de programme elle na pas dadresse dans la plage de mmoire Ce sont des zones rserves par le systme
PIC 16F84 Ph Hoppenot juin 2004 729 Figure III1 Organisation de la mmoire de programme et de la pile III2 Mmoire de donnes Figure III2 Organisation de la mmoire de donnes
PIC 16F84 Ph Hoppenot juin 2004 829 Elle se dcompose en deux parties de RAM Figure III2 et une zone EEPROM La premire contient les SFRs Special Function Registers qui permettent de contrler les oprations sur le circuit La seconde contient des registres gnraux libres pour lutilisateur La dernire contient 64 octets Comme nous le verrons dans le paragraphe IV les instructions orientes octets ou bits contiennent une adresse sur 7 bits pour dsigner loctet avec lequel linstruction doit travailler Daprs la Figure III2 laccs au registre TRISA dadresse 85h par exemple est impossible avec une adresse sur 7 bits Cest pourquoi le constructeur a dfini deux banques Le bit RP0 du registre dtat STATUS5 permet de choisir entre les deux Ainsi une adresse sur 8 bits est compose de RP0 en poids fort et des 7 bits provenant de linstruction excuter III21 Registres gnraux Ils sont accessibles soit directement soit indirectement travers les registres FSR et INDF V III22 Registres spciaux - SFRs Ils permettent la gestion du circuit Certains ont une fonction gnrale dautres un fonction spcifique attache un priphrique donn La Figure III3 donne la fonction de chacun des bits de ces registres Ils sont situs de ladresse 00h ladresse 0Bh dans la banque 0 et de ladresse 80h ladresse 8Bh dans la banque 1 Les registres 07h et 87h nexistent pas Figure III3 Description des SFR INDF 00h - 80h Utilise le contenu de FSR pour laccs indirect la mmoire V3 TMR0 01h Registre li au compteur VII
PIC 16F84 Ph Hoppenot juin 2004 929 PCL 02h - 82h Contient les poids faibles du compteur de programmes PC Le registre PCLATH 0Ah-8Ah contient les poids forts STATUS 03h - 83h Il contient ltat de lunit arithmtique et logique ainsi que les bits de slection des banques Figure III4 FSR 04h - 84h Permet ladressage indirect V3 PORTA 05h Donne accs en lecture ou criture au port A 5 bits Les sorties sont drain ouvert Le bit 4 peut tre utilis en entre de comptage PORTB 06h Donne accs en lecture ou criture au port B Les sorties sont drain ouvert Le bit 0 peut tre utilis en entre dinterruption EEDATA 08h Permet laccs aux donnes dans la mmoire EEPROM EEADR 09h Permet laccs aux adresses de la mmoire EEPROM PCLATCH 0Ah - 8Ah Donne accs en criture aux bits de poids forts du compteur de programme INTCON 0Bh - 8Bh Masque dinterruptions VI OPTIONREG 81h Contient des bits de configuration pour divers priphriques TRISA 85h Indique la direction entre ou sortie du port A TRISB 86h Indique la direction entre ou sortie du port B EECON1 88h Permet le contrle daccs la mmoire EEPROM VIII EECON2 89h Permet le contrle daccs la mmoire EEPROM VIII Figure III4 Registre dtai du PIC - STATUS
PIC 16F84 Ph Hoppenot juin 2004 1029 Figure III5 Registre de configuration de priphriques - OPTIONREG III23 Mmoire EEPROM Le PIC possde une zone EEPROM de 64 octets accessibles en lecture et en criture par le programme On peut y sauvegarder des valeurs qui seront conserves mme si lalimentation est teinte et les rcuprer lors de la mise sous tension Leur accs est spcifique et requiert lutilisation de registres ddis La lecture et lcriture ne peut sexcuter que selon des squences particulires dcrite au paragraphe VIII IV Jeu dinstructions Les PICs sont conus selon une architecture RISC Programmer avec un nombre dinstructions rduit permet de limiter la taille de leur codage et donc de la place mmoire et du temps dexcution Le format des instructions est prsent au paragraphe IV1 La liste des instructions est ensuite donne IV3 avant ltude dun exemple de description dune instruction IV2
PIC 16F84 Ph Hoppenot juin 2004 1129 IV1 Format gnral Figure IV1 Format gnral dune instruction Toutes les instructions sont codes sur 14 bits Elles sont regroupes en trois grands types Figure IV1 - Instructions orientes octets - Instructions orientes bits - Instructions de contrle Le registre de travail W joue un rle particulier dans un grand nombre dinstructions IV2 Exemple dinstruction le transfert Figure IV2 Transfert du registre W dans le registre f Trois instructions de transfert sont disponibles sur le PIC 16F84 La premire Figure IV2 permet de transfrer le contenu du registre W dans un registre f On peut noter la valeur du bit 7 1 et les bits 0 6 donnant le registre concern
PIC 16F84 Ph Hoppenot juin 2004 1229 Figure IV3 Transfert du contenu du registre f dans le registre W ou le registre f La seconde Figure IV3 permet de transfrer une donne contenue dans un registre f vers le registre W ou le registre f Dans ce second cas lintrt est de positionner le bit Z On peut noter ici le bit 7 qui prend la valeur d fournie dans le code de linstruction pour choisir la destination W ou f Figure IV4 Transfert dune constante dans le registre W La dernire instruction de transfert permet de charger une constante dans le registre W Ici la valeur charger est donne sur 8 bits le bit 7 ntant pas utile puisque le code de linstruction dit que la valeur est charger dans le registre W
PIC 16F84 Ph Hoppenot juin 2004 1329 IV3 Liste des instructions Figure IV5 Liste des instructions La Figure IV5 donne la liste de toutes les instructions IV4 Excution dun programme notion de pipe-line La Figure IV6 montre lenchanement des instructions tous les 4 cycles dhorloge Pendant un premier cycle machine linstruction excuterest stocke en mmoire RAM Le cycle suivant elle est excute Chaque instruction dure donc 2 cycles machine Figure IV6 Enchanement des instructions La notion de pipeline permet de rduire ce temps un seul cycle machine Lide est dexcuter linstruction n-1 pendant que linstruction n est charge en mmoire RAM Ainsi une fois le systme enclench pendant chaque cycle machine une instruction est charge et un autre excute
PIC 16F84 Ph Hoppenot juin 2004 1429 On a donc lquivalent dune instruction par cycle machine La Figure IV7 montre un exemple dexcution dun programme Notons que linstruction CALL dure 2 cycles machine comme toutes les instructions de branchement Figure IV7 Pipeline du PIC V Modes dadressages On ne peut pas concevoir un programme qui ne manipule pas de donnes Il existe trois grands types daccs une donne ou modes dadressage - Adressage immdiat V1 La donne est contenue dans linstruction - Adressage direct V2 La donne est contenue dans un registre - Adressage indirect V3 Ladresse de la donne est contenue dans un pointeur V1 Adressage immdiat La donne est contenue dans linstruction Exemple movlw 0xC4 Transfert la valeur 0xC4 dans W V2 Adressage direct La donne est contenue dans un registre Ce dernier peut tre par un nom par exemple W ou une adresse mmoire Exemple movf 0x2B 0 Transfert dans W la valeur contenue ladresse 0x2B Ladresse 0x2B peut correspondre 2 registres en fonction de la banque choisie Figure V1 Le bit RP0 permet ce choix le bit RP1 tant rserv pour les futurs systmes 4 banques V3 Adressage indirect Ladresse de la donne est contenue dans un pointeur Dans les PIC un seul pointeur est disponible pour ladressage indirect FSR Contenu ladresse 04h dans les deux banques il est donc accessible indpendamment du numro de banque En utilisant ladressage direct on peut crire dans FSR ladresse du registre atteindre FSR contenant 8 bits on peut atteindre les deux banques du PIC 16F84 Pour les PIC contenant quatre banques il faut positionner le bit IRP du registre dtat qui sert alors de 9me bit dadresse Figure V1
PIC 16F84 Ph Hoppenot juin 2004 1529 Figure V1 Adressages direct et indirect la mmoire de donnes Laccs au registre dadresse contenue dans FSR se fait en utilisant le registre INDF Il se trouve ladresse 0 dans les deux banques Il ne sagit pas dun registre physique On peut le voir comme un autre nom de FSR utilis pour accder la donne elle-mme FSR servant choisir ladresse Exemple movlw 0x1A Charge 1Ah dans W movwf FSR Charge W contenant 1Ah dans FSR movf INDF 0 Charge la valeur contenue ladresse 1Ah dans W VI Ports dentresSorties Le PIC 16F84 est dot de deux ports dentresSorties appels PortA et PortB VI1 Port A Il comporte 5 pattes dentresortie bi-directionnelles notes RAx avec x01234 sur le brochage du circuit Figure II2 Le registre PORTA dadresse 05h dans la banque 0 permet dy accder en lecture ou en criture Le registre TRISA dadresse 85h dans la banque 1 permet de choisir le sens de chaque patte entre ou sortie un bit 1 positionne le port en entre un bit 0 positionne le port en sortie La Figure VI1 donne le cblage interne dune patte du port A - quotData Latchquot Mmorisation de la valeur crite quand le port est en sortie - quotTRIS Latchquot Mmorisation du sens entre ou sortie de la patte - quotTTL input bufferquot Buffer de lecture de la valeur du port La lecture est toujours ralise sur la patte pas la sortie de la bascule dcriture - Tansistor N En criture Satur ou bloqu suivant la valeur crite En lecture Bloqu - Transistor P Permet dalimenter la sortie
PIC 16F84 Ph Hoppenot juin 2004 1629 Figure VI1 Cblage interne dune patte du port A La patte RA4 peut aussi servir dentre de comptage pour le timer0 VI2 Port B Il comporte 8 pattes dentresortie bi-directionnelles notes RBx avec x01234567 sur le brochage du circuit Figure II2 Le registre PORTB dadresse 06h dans la banque 0 permet dy accder en lecture ou en criture Le registre TRISB dadresse 86h dans la banque 1 permet de choisir le sens de chaque patte entre ou sortie un bit 1 positionne le port en entre un bit 0 positionne le port en sortie Le cblage interne dune porte du port B ressemble beaucoup celui du port A Figure VI2 On peut noter la fonction particulire pilote par le bit RBPU OPTIONREG7 qui permet dalimenter RBPU0 ou non RBPU1 les sorties Les quatre bits de poids fort RB7-RB4 peuvent tre utiliss pour dclencher une interruption sur changement dtat VII RB0 peut aussi servir dentre dinterruption externe
PIC 16F84 Ph Hoppenot juin 2004 1729 Figure VI2 Cblage interne dune patte du port B VII Compteur Le PIC 16F84 est dot dun compteur 8 bits La Figure VII1 en donne lorganigramme Figure VII1 Organigramme du Timer0 VII1 Registre TMR0 Cest le registre de 8 bits qui donne la valeur du comptage ralis Il est accessible en lecture et en criture ladresse 01h dans la banque 0
PIC 16F84 Ph Hoppenot juin 2004 1829 Figure VII2 Prise en compte de lcriture dans le registre TMR0 Lors dune criture dans TMR0 le comptage est inhib pendant deux cycles machine Figure VII2 Si lon veut dterminer un temps avec prcision il faut tenir compte de ce retard au dmarrage VII2 Choix de lhorloge Le timer0 peut fonctionner suivant deux modes en fonction du bit T0CS OPTIONREG5 En mode timer T0CS0 le registre TMR0 est incrment chaque cycle machine si le pr-diviseur nest pas slectionn En mode compteur T0CS1 le registre TMR0 est incrment sur chaque front montant ou chaque front descendant du signal reu sur la broche RA4T0CKl en fonction du bit T0SE OPTIONREG4 Si T0SE0 les fronts montants sont compts T0SE1 les fronts descendants sont compts VII3 Pr-diviseur En plus des deux horloges un pr-diviseur partag avec le chien de garde est disponible La priode de lhorloge dentre est divise par une valeur comprise entre 2 et 256 suivant les bits PS2 PS1 et PS0 respectivement OPTIONREG2 1 et 0 Figure VII3 Le bit PSA OPTIONREG3 permet de choisir entre la pr-division de timer0 PSA0 ou du chien de garde PSA1 Figure VII3 Valeurs du pr-diviseur en fonction de PSA PS2 PS2 et PS0
PIC 16F84 Ph Hoppenot juin 2004 1929 VII4 Fin de comptage et interruption Le bit T0IF INTCON2 est mis 1 chaque fois que le registre TMR0 passe de FFh 00h On peut donc tester ce bit pour connatre la fin de comptage Pour compter 50 vnements il faut donc charger TMR0 avec la valeur 256-50206 et attendre le passage de T0IF 1 Cette mthode est simple mais bloque le processeur dans une boucle dattente On peut aussi reprer la fin du comptage grce linterruption que peut gnrer T0IF en passant 1 VII Le processeur est ainsi libre de travailler en attendant cet vnement VII5 Registres utiles la gestion de timer0 Plusieurs registres ont t voqus dans ce paragraphe Ils sont synthtiss dans la Figure VII4 Figure VII4 Registres utiles la gestion de timer0 VIII Accs la mmoire EEPORM Le PIC possde une zone EEPROM de 64 octets accessibles en lecture et en criture par le programme On peut y sauvegarder des valeurs qui seront conserves mme si lalimentation est teinte et les rcuprer lors de la mise sous tension Leur accs est spcifique et requiert lutilisation de registres ddis La lecture et lcriture ne peut sexcuter que selon des squences particulires VIII1 Registres utiliss Quatre registres sont utiliss pour laccs la mmoire eeprom du PIC - EEDATA contient la donne - EEADR contient ladresse - EECON1 Figure VIII1 est le registre de contrle de laccs leeprom Cinq bits permettent un cet accs - RD et WR initient la lecture ou lcriture Ils sont mis 1 par le programme pour initier laccs et mis zro par le systme la fin de laccs - WREN autorise 1 ou non 0 laccs en criture - WRERR est mis 1 par le systme quand une opration dcriture est interrompu par MCLR reset ou le chien de garde - EEIF est un drapeau dinterruption signalant la fin de lcriture physique dans la mmoire eeprom Il doit tre mis 0 par programme
PIC 16F84 Ph Hoppenot juin 2004 2029 Figure VIII1 Registre EECON1 - EECON2 joue un rle spcifique lors de lcriture VIII2 Lecture Pour lire une donne dans la mmoire eeprom il faut mettre ladresse dans EEADR et positionner RD 1 La valeur lue est alors disponible dans EEDATA au cycle machine suivant Le programme ci-dessous donne un exemple de lecture dans la mmoire eeprom VIII3 Ecriture Pour crire une donne dans la mmoire eeprom il faut dabord mettre ladresse dans EEADR et la donne dans EEDATA Un cycle bien spcifique doit ensuite tre respecter pour que lcriture ait lieu Lexemple suivant donne le cycle
PIC 16F84 Ph Hoppenot juin 2004 2129 IX Interruptions IX1 Rappel - Notion de sous-programme A dvelopper IX2 Mcanisme Figure IX1 Droulement dun programme lors dune interruption Linterruption est un mcanisme fondamental de tout processeur Il permet de prendre en compte des vnements extrieurs au processeur et de leur associer un traitement spcifique La Figure IX1 donne le droulement du programme lors dune interruption Il faut noter que lexcution dune instruction nest jamais interrompue cest la fin de linstruction en cours lors de larrive de lvnement que le sous-programme dinterruption est excut La squence classique de fonctionnement dune interruption est la suivante 1- Dtection de lvnement dclencheur - IX3 IX4 2- Fin de linstruction en cours 3- Sauvegarde de ladresse de retour - IX5 4- Droutement vers la routine dinterruption - IX5 5- Sauvegarde du contexte - IX6 6- Identification de lvnement survenu - IX6 7- Traitement de linterruption correspondante 8- Restauration du contexte - IX6 9- Retour au programme initial - IX8 Figure prise dans le cours de Bigonoff
PIC 16F84 Ph Hoppenot juin 2004 2229 IX3 Diffrentes sources dinterruption Dans le cas du PIC 16F84 il existe 4 sources dinterruption Figure IX2 - INT Interruption externe broche RB0INT - TMR0 Fin de comptage - PORTB Changement dtat du port B RB7-RB4 - EEPROM Fin dcriture en EEPROM Figure IX2 Logique des vnements associs aux interruptions IX4 Validation des interruptions Figure IX3 Registre de contrle dinterruption du PIC INTCON Chacune de ses sources peut tre valide indpendamment grce aux bits 3 6 du registre INTCON Figure IX3 Le bit GIE de ce mme registre permet une validation gnrale des interruptions Ainsi pour que le droutement du programme en cours soit dclench il faut quun des vnements
PIC 16F84 Ph Hoppenot juin 2004 2329 extrieurs soit dtect que linterruption correspondante soit valide et que la validation gnrale soit active IX5 Squence de dtournement vers le sous-programme dinterruption Par construction linterruption survient nimporte quand pendant lexcution du programme Avant lexcution du sous-programme dinterruption il faut donc sauvegarder ladresse de linstruction suivant celle en cours pour lexcuter aprs le sous-programme dinterruption Ladresse de retour est stocke dans la pile Figure III1 Cette opration est gre automatiquement par le processeur Une fois ladresse de retour sauvegarde le compteur de programme peut tre charg avec ladresse du sous-programme excuter ici 0004h Dans le cas du PIC cause de la faible taille de la pile une interruption nest pas interruptible Le bit GIE de validation gnrale est donc mis 0 au dbut du sous-programme dinterruption Cette opration est gre automatiquement par le processeur La Figure IX4 montre lenchanement des ces oprations Cinq tapes sont alors utiles pour commencer linterruption - Apparition dun vnement sans perturber le droulement normal des instructions - Prise en compte de lvnement excution de linstruction en cours PC - Cycle dattente sauvegarde de ladresse PC1 dans la pile - Chargement de ladresse 0004h dans le PC - Excution de linstruction dadresse 0004h et chargement de linstruction suivante Figure IX4 Droulement de lappel un sous-programme dinterruption Deux cycles machine sont donc perdu chaque interruption sans compter la sauvegarde et la restitution du contexte IX6 et le retour au programme initial IX8 IX6 Sauvegarde et restitution du contexte utilisent le registre W Afin de les rendre dans le mme tat la fin du sous-programme dinterruption quau dbut il faut les sauvegarder au dbut et les recopier la fin Si dautres
PIC 16F84 Ph Hoppenot juin 2004 2429 registres sont utiliss dans le sous-programme dinterruption il faut gnralement les sauvegarder aussi IX61 O sauvegarder ces registres Classiquement dans la pile Dans le cas des PICs elle est trs petite et non accessible pour lutilisateur Il faut donc dfinir une zone de sauvegarde dans la RAM Pour dfinir une variable on peut utiliser les directives CBLOCK et ENDC CBLOCK 0x0C dbut de la zone de stockage SauveW 1 1 octet rserv pour la sauvegarde de W SauveStatus 1 1 octet rserv pour la sauvegarde de STAUTS ENDC IX62 Comment sauvegarder ces registres Pour W cest simple il suffit dutiliser linstruction movwf SauveW Sauvegarde de W Pour STATUS cest plus compliqu En effet il nexiste pas dinstruction de transfert dun registre vers un autre Il faut donc passer par W Premire difficult il faut penser sauvegarder W avant de lutiliser pour sauvegarder STATUS On pourrait alors utiliser la squence suivante movf STATUS 0 Ecrit la valeur de STATUS dans W movwf SauveSTATUS Sauvegarde de STATUS Malheureusement cette squence ne fonctionne pas En effet linstruction movf modifie le bit Z du registre STATUS Lastuce consiste utiliser linstruction swapf qui intervertit les digits de poids fort et de poids faible dun registre sans modifier le registre STATUS La squence suivante permet de sauvegarder STATUS quotswapquot swapf STATUS 0 Ecrit STATUS quotswapquot dans W movwf SauveSTATUS Sauvegarde de STATUS quotswapquot IX63 Comment restituer ces registres Il faut commencer par restituer STATUS sans le modifier En effet on doit pour cela utiliser W quil est donc inutile de restituer avant Comme STATUS a t sauvegard quotswapquot la squence suivante convient swapf SauveSTATUS 0 Ecrit SauveStatus quotsawpquot dans W movwf STATUS Restitue STATUS quotswapquot deux fois Pour restituer W on pourrait tout simplement utiliser la squence suivante movf SauveW 0 Ecrit SauveW dans W Malheureusement linstrction movf modifie le bit Z du registre STATUS dj restitu Il faut donc encore une fois passer par linstruction swap excuter deux fois swapf SauveW 1 Ecrit SauveW quotswapquot dans lui-mme swapf SauveW 0 Restitue W quotswapquot deux fois IX64 Rsum Cration des variables de sauvegarde CBLOCK 0x0C dbut de la zone de stockage SauveW 1 1 octet rserv pour la sauvegarde de W SauveStatus 1 1 octet rserv pour la sauvegarde de STAUTS ENDC
PIC 16F84 Ph Hoppenot juin 2004 2529 ---------------------------- Routine dinterruption ---------------------------- Sauvegarde du contexte movwf SauveW Sauvegarde de W swapf STATUS 0 Ecrit STATUS quotswapquot dans W movwf SauveSTATUS Sauvegarde de STATUS quotswapquot Traitement de linterruption Restitution du contexte swapf SauveSTATUS 0 Ecrit SauveStatus quotsawpquot dans W movwf STATUS Restitue STATUS quotswapquot deux fois swapf SauveW 1 Ecrit SauveW quotswapquot dans lui-mme swapf SauveW 0 Restitue W quotswapquot deux fois IX7 Reconnaissance de linterruption active En revanche il nexiste quune adresse dinterruption 0004h pour les diffrentes sources Les bits 0 2 du registre INTCON Figure IX3 et le bit 4 du registre EECON1 Figure VIII1 permettent de savoir quel vnement extrieur a dclench une interruption Ainsi au dbut du programme dinterruption si plusieurs sources ont t valides il faut imprativement aller tester ces diffrents bits pour connatre la source active et drouler le programme correspondant On utilise pour cela linstruction btfsc qui excute linstruction suivante si le bit test vaut 1 la saute sinon On peut donc crire la squence suivante aprs la sauvegarde du contexte o Intxxx correspond aux diffrents sous-programmes de gestion des divers vnements btfsc INTCON 0 Test du bit RBIF call IntPB Appel sous-programme si RBIF1 btfsc INTCON 1 Test du bit INTF call IntExt Appel sous-programme si INTF1 btfsc INTCON 2 Test de bit T0IF call IntTimer Appel sous-programme si T0IF1 btfsc EECON1 4 Test de bit EEIF call IntTimer Appel sous-programme si EEIF1 IX8 Retour au programme initial Une fois le sous-programme dinterruption termin aprs la restitution du contexte il faut revenir au programme initial Cest linstruction retfie qui le permet Elle commence par revalider les interruptions GIE1 puis elle revient au programme initial grce la valeur du compteur de programme empile X Chien de garde X1 Principe Cest un systme de protection contre un blocage du programme Par exemple si le programme attend le rsultat dun systme extrieur conversion analogique numrique par exemple et quil ny a pas de rponse il peut rester bloquer Pour en sortir on utilise un chien de garde Il sagit dun compteur qui lorsquil arrive en fin de comptage permet de redmarrer le programme Il est lanc au dbut du programme En fonctionnement normal il est remis zro rgulirement dans une branche du programme qui sexcute rgulirement Si le programme est bloqu il ne passe plus
PIC 16F84 Ph Hoppenot juin 2004 2629 dans la branche de remise zro et le comptage va jusquau bout dclenche le chien de garde qui relance le programme X2 Mise en service Elle se dcide lors de la programmation physique du PIC Elle ne peut pas tre suspendue pendant lexcution dun programme Elle est dfinitive jusqu une nouvelle programmation de la puce La directive de programmation CONFIG permet de valider option WDTON ou non option WDTOFF La mise en service peut aussi tre ralise directement par le programmateur Linconvnient de cette seconde solution est que le code du programme ne contient pas linformation la mise en service du chien de grade peut tre oublie lors du tlchargement et gnrer un fonctionnement incorrect du programme en cas de blocage X3 Gestion Une fois le chien de garde mis en service il faut remettre le comptage zro rgulirement Cette opration est ralise par linstruction clrwdt Tant que le programme se droule normalement cette instruction est excute rgulirement et le chien de garde ne sactive pas Si un blocage apparat la remise zro na pas lieu et le chien de garde est activ Le PIC redmarre alors ladresse 0000h et le bit TO STATUS4 est mis 0 Le test de ce bit au dbut du programme permet de savoir si le systme vient dtre mis sous tension TO1 ou si le chien de garde vient de sactiver TO0 X4 Choix de la dure Le chien de garde possde sa propre horloge Sa priode de base est de 18ms Le pr-diviseur de frquence utilis par le compteur est partag avec le chien de garde Figure VII3 Si le bit PSA OPTIONREG3 est 1 le pr-diviseur est assign au chien de garde 8 valeurs de 1 128 sont disponibles ce qui permet daller jusqu 12818ms23s avant le dclenchement du chien de garde XI Mode sommeil XI1 Principe Lorsque le PIC na rien faire par exemple lors de lattente dune mesure extrieure ce mode est utilis pour limiter sa consommation le PIC est mis en sommeil le programme sarrte jusqu son rveil le programme repart Ce mode est principalement utilis pour les systmes embarqus fonctionnant sur pile XI2 Gestion XI21 Mise en sommeil La mise en sommeil est ralise grce linstruction sleep La squence suivante est excute - Le chien de garde est remis 0 quivalent clrwdt - Le bit TO STATUS4 est mis 1 - Le bit PD STATUS3 est mis 0 - Loscillateur est arrt le PIC nexcute plus dinstruction XI22 Rveil Ce mode nest intressant que si lon peut en sortir pour relancer le programme Trois vnements permettent de sortir le PIC du sommeil - Application dun niveau 0 sur lentre MCLR broche numro 4 Le PIC effectue alors un reset et relance le programme partir de ladresse 0000h Les bits TO STATUS4 et PD STATUS3 permettent lutilisateur de savoir quel vnement lancer le programme mise sous tension reset chien de garde
PIC 16F84 Ph Hoppenot juin 2004 2729 - Activation du chien de garde Le programme reprend linstruction suivant le sleep - Apparition dune interruption RB0INT RB ou EEPROM Il faut pour cela que les bits de validation spcifique des interruption concernes soient positionns Si le bit de validation gnrale des interruptions GIE est 0 pas de validation des interruptions le programme reprend aprs linstruction sleep comme pour le chien de garde Si le bit de validation gnrale des interruptions GIE est 1 validation des interruptions linstruction suivant le sleep est excute et la fonction dinterruption lie lvnement qui a rveill le PIC est excute XII Programmation sur site Figure XII1 Pattes utilises pour la programmation sur site Figure XII2 Adresses de la mmoire de programme
PIC 16F84 Ph Hoppenot juin 2004 2829 Figure XII3 Figure XII4 Caractristiques lectriques Figure XII5 Chronogramme dcriture pour la programmation du PIC 16F84
PIC 16F84 Ph Hoppenot juin 2004 2929 Figure XII6 Chronogramme de lecture pour la programmation du PIC 16F84 Figure XII7 Chronogramme de changement dadresse pour la programmation du PIC 16F84 XIII Bibliographie 1 Bigonoff bigocourshotmailcom quotLa programmation des PICsquot - httpfribottefreefrbdtechcourspic16f84 Figures prises dans ce document 2 Lyce Jacquard quotLe PIC 16FXXquot - httpejacquardfreefrdossierlyceePiccourspichtm 3 Lyce Jacquard quotMPLABquot - httpejacquardfreefrdossierlyceePiccourspichtm 4 Microchip quotPIC16F8X 18-pin FlashEEPROM 8-bit micro-controllersquot DS30430C httpwwwmicrochipcom1010suppdoc Figures prises dans ce document 5 Microchip quotPIC16F8X EEPROM memory programming specificationquot DS30262E httpwwwmicrochipcom1010suppdoc
تحميل

PDF

8815 مشاهدة.

Taoufiq

Taoufiq

أرسلت .



كلمات مفتاحية :
pic 16f84
pic 16f84 wetud docs ...