Vous êtes sur la page 1sur 47

MICROCONTROLEURS PIC PROGRAMMATION EN C

V. Chollet - cours-pic - 03/03/2008 -

Page 1 sur 47

Chapitre 1 LE COMPILATEUR 1 INTRODUCTION 1.1 MICROCONTROLEUR PIC Un microcontrleur est un microprocesseur RISC (Reduced Instruction Set Computeur) comportant un nombre d'instructions rduit et disposant de ports d'entre/sortie pour communiquer avec l'environnement extrieur, de registres internes, de mmoire et d'une horloge interne ou externe. Les microcontrleurs PIC sont des microcontrleurs fabriqus par la socit Microchip qui fournit par ailleurs gratuitement la plate-forme logiciel de dveloppement MPLAB IDE. L'intrt est, pour un faible cot, de disposer d'un composant programmable de nombreuses fois, pouvant tre utilis de faon autonome : plus besoin d'ordinateur une fois le composant programm. L'utilisation d'un microcontrleur dans une application simplifie notablement les montages lectroniques entranant par la mme occasion un gain de temps et de cot. Les domaines d'utilisation principaux sont la robotique, la domotique, l'industrie. 1.2 LES OUTILS POUR REALISER UNE APPLICATION Pour dvelopper une application fonctionnant laide dun microcontrleur, il faut disposer dun compilateur et dun programmateur. Compilateur : Fabrique le programme Programmateur : Transfert le programme du PC au PIC (hard+soft)

Le compilateur est un logiciel traduisant un programme crit dans un langage donn (C, basic, assembleur) en langage machine. Ce logiciel peut aussi comporter un debugger permettant la mise au point du programme, et un simulateur permettant de vrifier son fonctionnement. Editeur : criture du programme en assembleur Compilateur : transforme lassembleur en langage machine Simulateur dbuggeur : Vrification, mise au point, simulation

MPLAB IDE Le fabricant Microchip fournit gratuitement le logiciel MPLAB IDE tlchargeable sur le site www. microchip.com Le programmateur permet de transfrer le programme compil (langage machine) dans la V. Chollet - cours-pic - 03/03/2008 Page 2 sur 47

mmoire du microcontrleur. Il est constitu dun circuit branch sur le port COM du PC, sur lequel on implante le PIC, et dun logiciel permettant dassurer le transfert. Il existe diffrents logiciels, nous utiliserons Icprog. 1.3 LANGAGE DE PROGRAMMATION UTILISE Dans l'environnement MPLAB, Le programme doit tre crit en assembleur, langage peu volu, peu convivial, et donc peu accessible aux tudiants bac+2. On prfre donc un langage de programmation volu : basic ou c. Notre choix se porte sur le langage c tudi par ailleurs en cours d'informatique d'instrumentation. Le code source crit en langage c doit donc tre compil en assembleur l'aide d'un compilateur c. On utilisera le compilateur CC5X dans sa version gratuite tlchargeable sur www.bknd.com. Cette version gratuite permet d'crire environ 1ko de programme. On peut alors intgrer CC5X dans l'environnement MPLAB. Ainsi CC5X devient un outil de MPLAB dans lequel l'criture, la simulation et le debugging du programme en c devient alors possible. 2 COMPILATEUR CC5X 2.1 INSTALLATION Cette installation a dj t ralise. Les indications suivantes vous sont fournies pour l'installation sur votre ordinateur personnel. Crer un rpertoire CC5X o vous le souhaitez sur le disque dur de votre PC. Tlcharger CC5X free sur le site www.bknd.com Dcompresser ce fichier. Le rpertoire CC5X contiendra le fichier excutable cc5x.exe et les fichiers de dfinition (header .h) des microcontrleurs utilisables avec CC5X. 2.2 CARACTERISTIQUES La version gratuite est limite 1 ko de programme. Les divers types de variables sont cods de la faon suivante : Type char : forcment non signs sur 8 bits Type signed char : 8 bits signs. Type int : 8 bits signs Type unsigned int : 8 bits non signs Type long : 16 bits signs Type unsigned long : 16 bits non signs Type bit : 1 bit Type float : nombre virgule flottante cod sur 24 bits. La version commerciale utilise des types entiers sur 24 et 32 bits et des nombres virgule fixe. V. Chollet - cours-pic - 03/03/2008 Page 3 sur 47

3 MPLAB IDE v7.31 3.1 INSTALLATION Cette installation a dj t ralise. Les indications suivantes vous sont fournies pour l'installation sur votre ordinateur personnel. Crer un rpertoire MPLAB sur le disque dur de votre ordinateur. Tlcharger MPLAB sur le site www.microchip.com Dcompresser le fichier. Suivre les indications lors de l'installation. Pour pouvoir utiliser le debugger, il faut ensuite corriger le fichier TLCC5X.INI situ dans le rpertoire MPLAB IDE\Core\MTCSuites : Il faut remplacer Target=HEX par Target=COD et sauvegarder la modification. 3.2 - CONFIGURATION Dclaration du compilateur CC5X : Menu Project/Set Langage Tool Locations. Cette configuration a dj t ralise. Les indications suivantes vous sont fournies pour votre ordinateur personnel.

Prciser le chemin o le compilateur CC5X est rang

V. Chollet - cours-pic - 03/03/2008 -

Page 4 sur 47

Dclarer galement le chemin de MPASM et MPLINK :

4 CREATION D'UN NOUVEAU PROJET 4.1 DEFINITION DU PROJET AVEC L'ASSISTANT Dans le menu Project, slectionner Project Wizard. Cela lance un assistant permettant de dfinir certaines options du projet.

V. Chollet - cours-pic - 03/03/2008 -

Page 5 sur 47

Slectionner d'abord un microcontrleur :

Si la configuration dcrite au 3.2 n'a pas t ralise, il convient de le faire prsent :

V. Chollet - cours-pic - 03/03/2008 -

Page 6 sur 47

Dfinir ensuite un nom de projet et un chemin pour la sauvegarde du projet :

La 4me tape permet d'ajouter ventuellement un fichier dj cr, par exemple un programme source en c. Si on dsire crire le programme ultrieurement, il faut cliquer sur annuler.

V. Chollet - cours-pic - 03/03/2008 -

Page 7 sur 47

Ayant annul cette dernire tape, on dsire maintenant ouvrir une fentre pour l'criture du programme en langage c. Pour cela, dans le menu fichier, slectionner new :

Zone de texte pour l'criture d'un programme en C

Fichiers constituant le projet

4.2 LES OPTIONS Pour fonctionner correctement, CC5X a besoin d'accder aux donnes spcifiques du PIC slectionn. Ces donnes sont dfinies dans des fichiers de dfinition (header .h) situs dans le rpertoire o CC5X a t install. Il convient de dfinir ce chemin dans une fentre ouverte par le menu Project/Build Options.

V. Chollet - cours-pic - 03/03/2008 -

Page 8 sur 47

Si ncessaire, remplacer program Files par Progra~1 car les noms de fichiers trop longs ne sont pas accepts.

Appliquer la modification

V. Chollet - cours-pic - 03/03/2008 -

Page 9 sur 47

5 DEBUGGER Pour pouvoir utiliser le Debugger, il faut slectionner MPLAB SIM dans le menu Debugger :

Dans le menu Debugger, de nouvelles slections apparaissent. Choisir settings pour dfinir quelques options pour la simulation, en particulier la frquence de l'horloge dpendant du PIC choisi (4 Mhz pour un 16F84A).

6 SAUVEGARDE Le projet a t modifi, il convient de le sauvegarder.

V. Chollet - cours-pic - 03/03/2008 -

Page 10 sur 47

V. Chollet - cours-pic - 03/03/2008 -

Page 11 sur 47

Chapitre 2 PREMIER PROJET 1 CREATION DU NOUVEAU PROJET Lancer MPLab. Dans le menu Projet, slectionner new.

Dfinir le nom de votre projet et le rpertoire pour la sauvegarde. Dfinir les options :

V. Chollet - cours-pic - 03/03/2008 -

Page 12 sur 47

Cela permet de dfinir le chemin du rpertoire dinstallation de CC5X.

Si ncessaire, remplacer program Files par Progra~1

Appliquer la modification

Il convient ensuite de dfinir le microcontrleur utilis : Menu Configure/select device.

V. Chollet - cours-pic - 03/03/2008 -

Page 13 sur 47

Puis il faut dfinir les options propres au microcontrleur choisi : Menu configure/configuration bits

Ne pas oublier de sauvegarder rgulirement les modifications apportes au projet :

V. Chollet - cours-pic - 03/03/2008 -

Page 14 sur 47

2 ECRITURE DU PROGRAMME EN C Dans le menu File, slectionner New. Cela fait apparatre la zone de texte pour lcriture du programme.

Zone de texte pour l'criture du programme en C


Fichiers constituant le projet

Taper dans la zone de texte, sans pour linstant chercher comprendre, le programme suivant :
void main(void) {

CMCON=7 ; TRISA=0 ; RA0=0 ; RA1=1 ; RA2=1 ; RA3=0 ; }

Sauvegarder ensuite le fichier que lon nommera par exemple sorties.c dans le mme rpertoire que le projet : Menu File/Save as Le fichier ainsi cr doit alors tre ajout comme fichier source dans le projet :

V. Chollet - cours-pic - 03/03/2008 -

Page 15 sur 47

Clic droit puis Add files

Ouvrir alors le fichier sorties.c que vous venez de crer. On peut bien sr ouvrir un autre fichier .c condition quil soit dans le mme rpertoire. Quelle que soit la mthode, nous obtenons :

V. Chollet - cours-pic - 03/03/2008 -

Page 16 sur 47

3 COMPILATION Le projet cr peut maintenant tre compil : Menu Projet/Build

Avant la compilation, le rpertoire de sauvegarde comporte les fichiers suivants :

La compilation ralise 19h00 ajoute 9 fichiers dans le rpertoire de travail :

Nous verrons dans le chapitre suivant, le fichier devant tre transfr dans le PIC.

V. Chollet - cours-pic - 03/03/2008 -

Page 17 sur 47

4 SIMULATION Comme indiqu au chapitre 1, il faut prciser au logiciel que loutil de mise au point est MPLAB SIM grce au menu Debbuger, Select Tool :

Cela fait apparatre des commandes pour lanimation du programme

Dans le menu Debugger, de nouvelles slections apparaissent. Choisir settings pour dfinir quelques options pour la simulation, en particulier la frquence de l'horloge dpendant du PIC choisi (4 Mhz pour un 16F628 utilis avec lhorloge interne (Cf Configuration bits INTRC I/O sur on).

V. Chollet - cours-pic - 03/03/2008 -

Page 18 sur 47

Avant de simuler le fonctionnement du programme, il faut dfinir ce quil convient dobserver. Pour cela slectionner Watch dans le menu View :

Animate : permet de simuler lexcution du programme

Reset avant de lancer lanimation

La compilation ayant t ralise auparavant, on peut slectionner Add symbol, RA0 pour visualiser ltat de RA0 lors de la simulation du programme. Puis slectionner dans la liste Add SFR : CMCON et TRISA pour visualiser ltat de ces registres. Slectionner aussi PORTA pour voir le mot binaire disponible sur le port A du pic.

Lancer lexcution de la simulation. On observe alors la modification des valeurs des registres et du port de sortie. Noter que PORTA et les bits RA0, RA1 etc affichent en ralit la mme information qui est le mot binaire disponible sur le port de sortie, donc de chaque bit RA0 RA7.

V. Chollet - cours-pic - 03/03/2008 -

Page 19 sur 47

Chapitre 3 LE PROGRAMMATEUR 1 CONSTITUTION DU PROGRAMMATEUR Le programmateur de PIC est constitu dun circuit imprim reli par cble au port COM de lordinateur. Ce programmateur PIC-01 sera reli une alimentation stabilise 16V. Les alimentations stabilises traditionnellement rgles 12 V pour les TP dlectronique devront donc tre ajustes 16 V. Le PIC-01 permet la programmation des microcontrleurs PIC de chez MICROCHIP (familles PIC12Cxxx, PIC12Cxxx, PIC16Cxxx et PIC16Fxxx), ainsi que les EEPROM sries (famille 24 Cxx). Connectable sur le port srie de tout compatible PC, il fonctionne avec un logiciel sous Windows 95/98/NT/2000 et maintenant XP. Il supporte les botiers DIP 8, 18, 28 et 40 broches permettant la programmation de plus de 60 composants diffrents.

Le PIC utilis sera plac sur un premier support tulipe, duquel il ne devra pas tre t, afin dviter de tordre puis casser les pattes du microcontrleur lors des manipulations. On veillera ne pas se tromper sur le sens de branchement du PIC sur le programmateur : 2 INSTALLATION DU LOGICIEL Le logiciel IC-prog fonctionne avec le programmateur PIC-01. Les mises jour du logiciel sont tlchargeables sur www.seeit.fr Dcompresser les fichiers tlchargs dans un rpertoire. Bien vrifier que le fichier systme icprog est bien prsent dans ce rpertoire.

Lancer le logiciel en double cliquant sur lapplication icprog.

V. Chollet - cours-pic - 03/03/2008 -

Page 20 sur 47

3 CONFIGURATION 3.1 Configuration sous Windows XP Sous WindowsXP, avec lexplorateur Windows, il faut slectionner le fichier ICprog.exe. Faire un clic droit sur le fichier ICprog.exe. Dans le menu Proprits , slectionner longlet Compatibilit , cocher la case situe dans le cadre Mode de compatibilit , puis slectionner Windows 2000 dans le menu droulant.

3.2 - Configuration\Hardware F3 Permet de configurer l'interface de programmation entre le logiciel et la carte de programmation. Programmateur : JDM programmer pour le programmateur PIC-01 Ports : COM1 ou COM2. Dans tous les cas la LED verte de votre programmateur doit sallumer lorsque vous effectuez une opration de lecture ou dcriture. Si ce nest pas le cas changez de port slectionn. Dlais I/O : Ce rglage dpend du PC utilis, essayez sur 1 ou sur 20 en cas de problme de programmation. Interface : Slectionner toujours Windows API. V. Chollet - cours-pic - 03/03/2008 Page 21 sur 47

Communication : Permet dinverser les signaux envoys ou reus sur le port srie. En gnral aucune case nest coche. Pour la configuration exacte en fonction du programmateur utilis, se rfrer au fichier MiseEnOeuvreXXX-XX.doc se trouvant sur la disquette livre avec le PIC01. 3.3 - Configuration\Options\Misc Priorit: Permet de dfinir la priorit du logiciel par rapport aux autres logiciels fonctionnant en multitches sous Windows. En gnral utiliser le mode normal . Utiliser le mode haute pour que ICprog soit prioritaire par rapport aux autres logiciels. Active Driver NT/2000/XP : Sous Windows 95/98/ME cette option nest pas accessible. Sous Windows NT/2000/XP cocher cette case. Vrifier dans ce cas que le fichier ICprog.sys se trouve bien dans le mme rpertoire que ICprog.exe. Active Vcc Control pour JDM : Ne pas cocher cette case. Mettre toutes les sorties au niveau haut : Cette fonction permet de mettre toutes les sorties du port parallle au niveau haut lorsque le port srie est utilis et de mettre toutes les sorties du port srie au niveau haut lorsque le port V. Chollet - cours-pic - 03/03/2008 Page 22 sur 47

parallle est utilis. Cette fonction sert uniquement lorsque lon utilise un programmateur spcial ayant la fois le port srie et le port parallle de connect sur le PC.

PREMIERE PROGRAMMATION 16F628 4.1 - PRINCIPE Le logiciel du programmateur utilise un buffer, cest dire une mmoire intermdiaire entre les fichiers sur disques et les mmoires programmables des composants, tableau hexadcimal visualis l'cran. Pour programmer un composant partir dun fichier il faut dabord charger le contenu dun fichier dans le buffer laide de la commande Fichier\Ouvrir fichier , puis transfrer le contenu du buffer vers le composant avec le menu Commande\Tout programmer . 4.3 TEST DE VIRGINITE Relier le programmateur PIC-01 au port COM du PC par lintermdiaire du cble. Placer un PIC dans le bon sens sur le support adquat. Alimenter le programmateur laide de lalimentation stabilise rgle 16 V (vrifier au voltmtre). Lancer le logiciel ICprog. Menu Commande/Test de virginit, permet de vrifier si le composant est vide.

V. Chollet - cours-pic - 03/03/2008 -

Page 23 sur 47

Addition de tous les octets constituant le programme prsent dans le composant. Cela permet didentifier un programme par rapport un autre et vrifier sils sont identiques. Cette valeur se modifie automatiquement lorsque l'on modifie le programme lcran.

Si le composant est vierge ou effac tous les bits de la mmoire seront au niveau logique 1 (FF). Cette fonction est utiliser avant toute programmation car il nest pas possible de programmer un composant correctement si celui-ci nest pas vierge ou na pas t effac pralablement. Si ce nest pas le cas, il faut effacer le composant : menu "Commande\Tout Effacer". 4.3 CHOIX DU COMPOSANT, CONFIGURATION Permet de slectionner un microcontrleur PIC du type 12Cxxx, 12Fxxx, 16Cxxx, 16Fxxx, 18Fxxx pour une utilisation avec le programmateur PIC-01. Pour les composants de la srie 16C54/55/56/57/58, le mode de programmation est diffrent et il faut utiliser le programmateur PIC-02. Diffrentes options apparatront galement dans le cadre "Configuration" permettant de modifier les registres de configurations. Pour connatre l'utilisation de ces registres veuillez consulter le datasheet du fabricant concern. Cependant quelques informations vous sont donnes ci-dessous pour les microcontrleurs PIC. Un choix entre plusieurs oscillateurs peut tre ralis. Cette slection dpend du type doscillateur connect sur les entres OSC1/CLKIN OSC2/CLKOUT lors de lutilisation du microcontrleur sur son circuit final aprs programmation. Pour les modes XT, un oscillateur quartz ou un oscillateur TTL/C-MOS connect sur les entres OSC1/CLKIN et OSC2/CLKOUT. Pour le mode RC, un pont RC connect sur lentre OSC1/CLKIN, (frquence moins prcise). et la est est

V. Chollet - cours-pic - 03/03/2008 -

Page 24 sur 47

Choisir IntRC I/O Oscillateur interne.

Laisser le Code Protect sur off.

Cocher ces cases en fonctions des besoins. On utilisera cette configuration.

Validation ou non du WDT : En validant cette case par une croix, le "Watchdog timer" sera activ. Cest dire quun oscillateur interne indpendant de loscillateur externe sera fonctionnel mme si le microcontrleur est en position sommeil. Validation ou non du PWRT : En validant cette case par une croix, le "Power-up Timer" sera activ. Le microcontrleur effectuera sa mise sous tension un Reset gnral dune dure de 72ms, le temps que la tension dalimentation se stabilise. Validation ou non du MCLR : En validant cette case par une croix, le "Memory Clear" sera activ. Il sera possible de faire une remise zro externe par la broche GP3\MCLR\Vpp du microcontrleur. Cette borne sera relie au +5V du pic travers une rsistance (2,2 k par exemple). Validation ou non du CP : En validant cette case par une croix, le "Code Protect" sera activ. Le programme intgr dans la mmoire du composant ne sera pas lisible si lon fait une re-lecture de celui-ci. Cependant le composant reste effaable pour tre reprogramm si celui -ci contient une mmoire Flash. Attention si vous cochez cette case, le composant ne pourra pas tre vrifi aprs programmation et un message derreur interviendra systmatiquement lors de la vrification du composant aprs programmation. On vitera donc de cocher cette case. Dautres explications sur le rle des fusibles seront donnes plus loin.

V. Chollet - cours-pic - 03/03/2008 -

Page 25 sur 47

4.4 EXEMPLE DE PROGRAMMATION Dans ICprog, ouvrir le fichier sorties.hex cr au chapitre 2 3.

Le programme peut tre affich en hexadcimal ou en assembleur dans la fentre Adresse-Program Code. On constate que le Checksum a chang de valeur. Vrifier que la configuration des fusibles correspond celle de la compilation du programme dans MP Lab, puis choisir Commande/ Tout programmer.

Aprs avoir programm le PIC, le logiciel effectue une vrification. Si le message Echec de la vrification ladresse 0000h apparat, il sagit le plus souvent dune tension dalimentation insuffisante du programmateur. Sinon recommencer la programmation aprs avoir effac le composant !

Lorsque le transfert du programme dans le pic est ralis, le logiciel procde une vrification. Si un message derreur apparat, il peut sagir dun mauvaise connexion du programmateur (erreur de port srie) ou dune mauvaise alimentation du programmateur. V. Chollet - cours-pic - 03/03/2008 Page 26 sur 47

UTILISATION DU PIC DANS UN MONTAGE Le microcontrleur ayant t programm, il faut maintenant tester le fonctionnement du circuit dans le montage auquel il est destin. Mettre le programmateur hors tension en coupant lalimentation stabilise. Sortir dlicatement le PIC et son premier support de la carte programmateur. Utiliser une pince ou un tournevis gliss entre les deux supports.

Implanter le composant et son support sur une platine dessais type Labdec. Raliser le cblage du montage correspondant au programme sur la platine Labdec :

470 470 Alim +5V 0

470 470

2,2 k

Mettre sous tension et tester le fonctionnement. Si tout sest droul normalement, les leds branches sur les sorties mises 1 dans le programme sont allumes, les autres sont teintes .

V. Chollet - cours-pic - 03/03/2008 -

Page 27 sur 47

Chapitre 4 - MICROCONTROLEUR PIC 16F628 1 PRESENTATION DU COMPOSANT 1.1 - INTRODUCTION Le circuit 16F628 se prsente sous la forme dun circuit intgr disponible en botier DIL de 18 pattes. Ralis en technologie HCMOS FLASH, il constitue un microcontrleur, cest dire un microprocesseur RISC cest dire jeu dinstructions rduit (35 instructions) et de priphriques. Il est cadenc par une horloge interne ou externe pouvant avoir une frquence de 0 20 MHz. Ce composant dispose de en particulier de : - deux ports dentre sortie. (RA et RB) - dun module comparateur analogique (AN et CMP) - dun module de capture et de comparaison de signaux PWM (CCP) 1.2 - BROCHAGE

1.3 SCHEMA BLOCK

V. Chollet - cours-pic - 03/03/2008 -

Page 28 sur 47

2 PORTS DENTREES/SORTIES : Utilisation en Entre. 2.1 DESCRIPTION Ce microcontrleur dispose de deux ports bidirectionnels dE/S : PORTA et PORTB de 8 bits Ces ports peuvent servir dE/S standard ou dE/S de priphriques. En effet, certaines pattes de ces ports sont multiplexes avec dautres fonctions de priphriques internes (comparateur et rfrence de tension par exemple). Chaque borne du port a donc plusieurs rles qui doivent tre dfinis par des registres de configuration associs. Quand le priphrique est activ, la borne ne peut plus tre utilise en E/S. 2.2 PORT A 2.2.1 FONCTION MULTIPLEXES Le tableau ci-dessous dcrit les diffrentes fonctions multiplexes sur le port A.

Certaines de ces fonctions seront examines dans les paragraphes suivants.

V. Chollet - cours-pic - 03/03/2008 -

Page 29 sur 47

2.2.2 - UTILISATION EN ENTREES SORTIES NUMERIQUES a) Registre CMCON Les pattes du port A tant multiplexes avec les entres du comparateur, il convient de dfinir leur rle grce au registre CMCON (Comparator Control Register) registre de contrle du comparateur. On doit avoir : CMCON = 0b00000111 = 0x07 = 7 pour forcer toutes les entres en entres numriques. b) Registre TRISA Ce registre permet de dfinir si la patte considre fonctionne en entre ou en sortie. Un 1 dans un bit du registre TRISA met la sortie correspondante en haute impdance, elle peut ainsi servir dentre. Un 0 dans une bit de ce registre transfert le contenu de la sortie de la bascule D sur la sortie correspondante. Comparateur TRISAn = 1 RAn en entre Numrique TRISAn = 0 RAn en sortie selon ltat de CMCON pour RA0 RA3

Remarque : TRISA6 et TRISA7 sont forcs par la configuration de loscillateur. Dans ce cas la donne lue est 0 et ces deux bits sont alors ignors. Remarque : Toute opration dcriture sur une des sorties est prcde dune lecture de la patte correspondante. 2.3 PORT B 2.3.1 FONCTION MULTIPLEXES Le tableau ci-dessous dcrit les diffrentes fonctions multiplexes sur le port B.

V. Chollet - cours-pic - 03/03/2008 -

Page 30 sur 47

Certaines de ces fonctions seront examines dans les paragraphes suivants. 2.3.2 - UTILISATION EN ENTREES SORTIES NUMERIQUES a) Multiplexage sur le port B Le port B est multiplex avec : interruption externe USART CCP module TMR1 clock in/out

b) Registre TRISB Ce registre permet de dfinir si la patte considre fonctionne en entre ou en sortie. Un 1 dans un bit du registre TRISB met la sortie correspondante en haute impdance, elle peut ainsi servir dentre. V. Chollet - cours-pic - 03/03/2008 Page 31 sur 47

Un 0 dans une bit de ce registre transfert le contenu de la sortie de la bascule D sur la sortie correspondante. TRISBn = 1 TRISBn = 0 RBn en entre RBn en sortie

Remarque : Toute opration dcriture sur une des sorties est prcde dune lecture de la patte correspondante. 3 UTILISATION DU TIMER 0 Le composant dispose de 3 timers : timer0 (TMR0), timer1 (TMR1) et timer2 (TMR2) 3.1 CARACTERISTIQUES DU TIMER 0 Le module Timer0 a les caractristiques suivantes : timer ou compteur 8 bits Utilisable en lecture ou criture Pr diviseur 8 bits programmable Slection de lhorloge interne ou externe Interruption sur dpassement Slection du front montant ou descendant pour lhorloge externe

3.2 SELECTION DU MODE TIMER OU COMPTEUR Cette slection sopre grce au 5me bit TOCS du registre OPTION TOCS = 1 Compteur
Timer 0 sincrmente chaque front montant ou descendant du signal connect la patte RA4/TOCKI

OPTION5 = TOCS

TOSE = 0 OPTION4 = TOSE TOSE = 1

TOCS = 0 Avec une horloge 4 MHz, lincrmentation se fait toutes les 1 s (4 cycles par priode dhorloge)

Timer
Timer 0 sincrmente chaque cycle sil ny a pas de prdiviseur. En cas dopration dcriture dans le timer, lincrmentation est inhibe pour les 2 cycles suivants.

V. Chollet - cours-pic - 03/03/2008 -

Page 32 sur 47

3.3 REGISTRE OPTION

Choix du taux de division

3.4 - PREDIVISEUR Le pr-diviseur est partag entre Timer0 et le chien de Garde (Watchdog Timer) ; Ce choix sopre par ltat du bit 3 PSA du registre OPTION. PSA = 1 OPTION3 = PSA PSA = 0 Pr diviseur sur le Timer0
Le taux de division est alors rglable par les bits PS0, PS1 et PS2 du registre OPTION (Voir ci dessus 3.3)

Pr diviseur sur le Watchdog timer

V. Chollet - cours-pic - 03/03/2008 -

Page 33 sur 47

3.5 EXEMPLE : Temporisation Pour utiliser le TIMER0 avec pr-division par 256, il faudra une ligne de code dans le programme : OPTION=0b00000111 ; TMR0 = 0 ; Ou OPTION=0x07 ; do { Ou OPTION=7 ; } while (TMR0 < 240);

3.6 INTERRUPTION DU TIMER0 Une interruption est gnre par le timer0 si le timer ou le compteur passe de xFF x00 (en hexadcimal). Ce dpassement met 1 le bit TOIF, bit 2 du registre INTCON. On peut activer ou pas cette interruption par le bit TOIE, bit 5 du registre INTCON. TOIE = 1 INTCON5 = TOIE TOIE = 0 Interruption timer0 inactive
Le taux de division est alors rglable par les bits PS0, PS1 et PS2 du registre OPTION (Voir ci dessus 3.3)

Interruption timer0 active

V. Chollet - cours-pic - 03/03/2008 -

Page 34 sur 47

4 UTILISATION DU COMPARATEUR 4.1 RAPPEL V+ V+ S = 1 si V+ > VS = 0 si V+ < V-

4.2 LES COMPARATEURS Le microcontrleur comporte 2 comparateurs donc 4 entres et 2 sorties. Ces entres sorties de comparateur sont multiplexes avec les entres sorties numriques du port A comme dj signal.
AN0
Sources de tension de rsistance interne de 10 k maxi

AN1 AN2 AN3

+ + -

C1OUT

C2OUT Les connexions dpendent de CM2 CM1 CM0

CM2 CM1 CM0

Les fonctions de comparaisons ralises sont dfinies par les bits CM2 CM1 et CM0 du registre CMCON (Cf 4.3). Le registre TRISA contrle la direction des donnes (E/S) pour chaque entre/sortie du port A mme en mode comparateur. Il convient donc dinitialiser correctement TRISA. 4.3 DIFFERENTS MODES DE COMPARAISON Le tableau ci-dessous rcapitule les diffrentes configurations possibles. Exemple : Si lon souhaite utiliser un seul comparateur, les bits CM2 CM1 et CM0 du registre CMCON sont respectivement 101. Le comparateur est alors constitu des deux entres RA1/AN1 (patte 18) et RA2/AN2 (patte 1). Le rsultat de la comparaison est disponibles sur les bits 6 et 7 du registre CMCON. Ces deux bornes appartiennent au port A qui doit tre configur correctement laide de TRISA : RA1/AN1 et RA2/AN2 en entres On a alors TRISA = 0bxxxxx11x.

V. Chollet - cours-pic - 03/03/2008 -

Page 35 sur 47

4.4 SORTIES DU COMPARATEUR Les rsultats des deux comparaisons sont disponibles sur les bits 6 et 7 du registre CMCON. (Ces deux bits sont en lecture seule). Ils peuvent aussi tre transmis sur les sorties RA3/AN3/CMP1 (patte RA4/TOCKI/CMP2 (patte3). Pour cela il faut tre dans la configuration o CM2 :CM0=110. 2) et

Ces deux bornes appartenant au port A, il faut les configurer en sortie laide de TRISA : TRISA = 0bxxx00xxx

V. Chollet - cours-pic - 03/03/2008 -

Page 36 sur 47

4.5 COMPLEMENTS SUR LE REGISTRE CMCON

Inversion des sorties Du comparateur

Bit de contrle du multiplexage des entres des comparateurs

4.6 EXEMPLE Le programme suivant permet de faire fonctionner le pic en comparateur, comme un simple ampli op en boucle ouverte.
void main(void) { CMCON=0b00000110 ; /*choix du mode de comparaison Cf tableau 4.3 */ TRISA=0b00000110 ; /*RA1 et RA2 entres, RA4 en sortie */ }

V. Chollet - cours-pic - 03/03/2008 -

Page 37 sur 47

Aprs voir compil le programme source et programm le composant, on peut cbler le montage suivant pour tester le fonctionnement :
+5V 1k 1k +5V

La rsistance Rt est une rsistance dite de tirage (pull up). Elle est ncessaire car la sortie RA4 en mode comparateur est drain ouvert :
Vdd Rt G D S

Rt=470

+5V 2,2 k

Si G = 0 => VDS = 0 et VRt = Vdd Si G = 1 => VDS = Vdd et VRt = 0

5 UTILISATION DE TENSIONS DE REFERENCE 5.1 REALISATION DE LA TENSION DE REFERENCE Le module est constitu dun rseau de rsistances en chelle permettant de fabriquer une tension de rfrence VRef.

5.2 VALEUR DE LA TENSION DE REFERENCE On dispose de deux gammes dont le choix sopre par VRR le bit 5 du registre VRCON. La valeur exacte dans la gamme est commande par VR les bits 3 0 du registre VRCON. VRR = 1 VRON5 = VRR VRR = 0 Vref = VR<3 :0>*VDD/32 + VDD/4
VR<3 :0> est la valeur dcimale du mot binaire contitu par les bits VR3 VR2 VR1 VR0 du registre VRCON.

Vref = VR<3 :0>*VDD/24

V. Chollet - cours-pic - 03/03/2008 -

Page 38 sur 47

5.3 TRANSMISSION DE LA TENSION DE REFERENCE SUR LA SORTIE La tension de rfrence doit tre active par le bit 7 mis 1 dans le registre VRCON. La tension de rfrence labore est envoy sur la sortie RA2/AN2/VREF du port A si VROE le bit 6 du registre VRCON est 1. Sinon, la tension de rfrence est dconnecte. Ainsi on doit avoir VRCON = 0b1110 0110 => Vref = 6*VDD/24 =1,25 V envoy sur la sortie RA2. En mme temps, la sortie RA2 du port A doit tre configure en entre (?!) par lintermdiaire du registre TRISA : TRISA = 0bxxxxx1xx
void main(void) { VRCON=0b11100110 ; TRISA=0b00000100 ; }

5.4 REGISTRE VRCON

5.5 UTILISATION EN CNA La sortie Vref programme par lintermdiaire dun mot binaire VR<3 :0> constitue un Convertisseur Numrique Analogique. Cependant, cette sortie ne peut tre charge sans lutilisation dun tage suiveur.

V. Chollet - cours-pic - 03/03/2008 -

Page 39 sur 47

6 UTILISATION DU TIMER 1 6.1 DESCRIPTION DU TIMER 1 Le module Timer 1 est un timer/compteur 16 bits constitu de deux registres 8 bits TMR1H et TMR1L pouvant tre en lecture ou criture. Le Timer 1 sincrmente donc de 0x0000 0xFFFF puis repasse 0x0000. Le dpassement est signal par le bit TMR1IF du registre PIR1. 6.2 REGISTRE T1CON Le bit 0 de ce registre permet dactiver ou dsactiver le timer1. TMR1ON = 1 Timer 1 actif T1CON0 = TMR1ON TMR1ON = 0 Timer 1 dsactiv

Les bits 4 et 5 permettent de choisir le taux de division de la frquence dhorloge interne ou externe.

Enable

V. Chollet - cours-pic - 03/03/2008 -

Page 40 sur 47

6.3 SELECTION DU MODE TIMER OU COMPTEUR Cette slection seffectue grce au bit TMRCS du registre T1CON. TMR1CS = 0 T1CON1 = TMR1CS TMR1CS = 1 Timer
Timer 1 sincrmente chaque cycle, donc Fosc/4.

Compteur
Timer 0 sincrmente chaque front montant de lhorloge externe

T1OSCEN = 0 Horloge externe applique RB6 T1CON3 = T1OSCEN T1OSCEN = 1 Horloge externe applique RB7

T1SYNC = 0 T1CON2 = T1SYNC T1SYNC = 1

Compteur synchrone
Horloge externe synchronise avec lhorloge interne. En mode sleep (sommeil), le compteur ne sincrmente plus.

Compteur asynchrone
Horloge externe non synchronise. En mode sleep, le compteur continue de sincrmenter. Il peut gnrer une interruption sur le dpassement pouvant tre utilise pour rveiller le processeur. Dans ce mode, le timer 1 ne peut pas tre utilis comme base de temps pour le module CCP (Cf 7) La lecture et lcriture du timer se fait en 2 oprations du fait de la sparation du timer 1 en deux registres TMR1H et TMR1L. Un dpassement peut intervenir entre temps. Pour lcriture, il est prfrable darrter le timer auparavant. Pour la lecture, il faut raliser la procdure suivante : Lire TMR1H Lire TMR1L Relire TMR1H non
TMR1H a chang ?

oui Lire TMR1H Lire TMR1L

Continuer

V. Chollet - cours-pic - 03/03/2008 -

Page 41 sur 47

6.4 BLOC DIAGRAMME DU TIMER 1

7 MODULE CCP Ce module contient un registre 16 bit constitu en ralit de deux registres 8 bits : CCPR1H et CCPR1L. Les oprations de ce module sont contrles par le registre CCP1CON. Ce module peut fonctionner de trois faons : mode capture, en relation avec le timer 1 mode compare, en relation avec le timer 1 mode PWM, en relation avec le timer 2.

7.1 REGISTRE CCP1CON

V. Chollet - cours-pic - 03/03/2008 -

Page 42 sur 47

7.2 MODE CAPTURE Ce mode permet de transfrer la valeur (16 bits) du timer 1 dans les deux registres 8 bits CCPR1H et CCPR1L, lorsquun vnement se produit sur le port RB3 dentre. Le timer 1 doit alors tre en mode timer ou compteur synchrone. RB3 doit bien sr tre configur en entre TRISB3 = 1. Lvnement dclenchant le transfert est slectionn par les bits 0 3 du registre CCP1CON. (Cf 7.1) : - Sur chaque front descendant du signal connect sur RB3 - Sur chaque front montant du signal connect sur RB3 - Tous les 4 fronts montants du signal connect sur RB3 - Tous les 16 fronts montants du signal connect sur RB3 Les bits 0 3 du registre CCP1CON permettent donc de rgler un pr-diviseur agissant sur le signal appliqu RB3. La ralisation de la capture est signale par la mise 1 du drapeau correspondant : bit 2 CCP1IF du registre PIR1. Ce bit doit alors tre remis 0 dans le programme. Le contrle de linterruption est ralis par le bit 2 CCP1IE du registre PIE1. CCP1IE = 0 PIE12 = CCP1IE CCP1IE = 1 Interruption active
CCP1IF = 1 Signale linterruption PIR12 = CCP1IF

Interruption dsactive

active
CCP1IF = 0 Il ny a pas dinterruption linterruption active

Attention : le changement du mode de capture entrane une fausse interruption. Avant toute modification du mode, il faut dsactiver linterruption et remettre zro le drapeau CCP1IF.

7.3 REGISTRES PIR1 ET PIE1 Le registre PIR1 est un registre regroupant les drapeaux dinterruption cest dire des bits signalant quun vnement dclenchant une interruption sest produit. Le registre PIE1 est le registre qui active ou pas les interruptions.

V. Chollet - cours-pic - 03/03/2008 -

Page 43 sur 47

V. Chollet - cours-pic - 03/03/2008 -

Page 44 sur 47

7.4 MODE COMPARE Dans ce mode, le registre 16 bits CCPR1 (CCPR1H et CCPR1L) est constamment compar au timer 1. Quand ils sont gaux, cela est signal sur la sortie RB3 : Soit par un tat haut Soit par un tat bas Soit par un maintient de la valeur prsente.

Laction sur la patte RB3 est choisie par les bits 0 3 du registre CCP1CON. (Cf 7.1). RB3 doit bien sr tre configur en sortie TRISB3 = 0. Le timer 1 doit alors tre en mode timer ou compteur synchrone. Comme dans le mode capture, la ralisation de lgalit est signale par la mise 1 du drapeau correspondant : bit 2 CCP1IF du registre PIR1. Ce bit doit alors tre remis 0 dans le programme. Le contrle de cette interruption est ralis par le bit 2 CCP1IE du registre PIE1. Si CCP1CON <3 :0> = 1010 alors la ralisation de lgalit entrane une interruption logiciel sans affecter RB3. Si CCP1CON <3 :0> = 1011 alors la ralisation de lgalit remet zro le timer 1. On a ainsi un timer 1 dont la priode est programmable par le registre CCP1. 8 UTILISATION DU TIMER 2 Le timer 2 est un timer 8 bits avec pr et post-diviseurs programmables par lintermdiaire du registre T2CON. Il peut tre utilis en lecture et criture et est remis zro par le reset du microcontrleur. Il est activ ou dsactiv par le bit 2 du registre T2CON. Il sert de base de temps pour le mode PWM du module CCP : timer 2 sincrmente de 0x00 jusqu ce quil atteigne la valeur du registre PR2 puis repasse 0x00 lors du cycle suivant. (fonctionnant en lecture et criture). Le bit 1 TMR2IF du registre PIR1 signale lgalit timer 2 = PR2 en passant 1. Ce drapeau doit alors tre remis zro dans le programme.

V. Chollet - cours-pic - 03/03/2008 -

Page 45 sur 47

9 MODE PWM DU MODULE CCP Rappel : PWM signifie Pulse Width Modulation. En Franais MLI, modulation de largeur dimpulsion. Il sagit donc de raliser un signal dont la largeur de limpulsion et donc le rapport cyclique est programmable. Ce mode permet de dlivrer sur la patte RB3 utilise en sortie un signal PWM grce lutilisation du timer 2. RB3 doit donc tre configur en sortie TRISB3 = 0. Le timer 2 doit tre activ (registre T2CON). Dans ce mode, le registre 8 bits CCPR1L auquel sajoutent les bits 4 et 5 du registre CCP1CON constitue un mot de 10 bits correspondant la largeur de limpulsion : Largeur de limpulsion = CCPR1L :CCP1CON<5 :4> . Tosc . (valeur du pr-diviseur du timer 2)

La priode du signal PWM dpend dune valeur devant tre crite dans le registre PR2. Elle est donne par la relation : Priode PWM = (PR2 + 1) . 4 Tosc . (valeur du pr-diviseur du Timer 2 )

La priode PWM doit tre suprieure la dure de limpulsion. V. Chollet - cours-pic - 03/03/2008 Page 46 sur 47

Quand TMR2 = PR2 cela entrane au cycle suivant : La remise zro du timer 2 La mise 1 de la sortie RB3 Le rapport cyclique est transmis de CCPR1L CCPR1H.

Le bit 1 TMR2IF du registre PIR1 signale lgalit timer 2 = PR2 en passant 1. Ce drapeau doit alors tre remis zro dans le programme.

V. Chollet - cours-pic - 03/03/2008 -

Page 47 sur 47