Vous êtes sur la page 1sur 17

Informatique Industrielle

TP 1 Microcontrleur Prise en main de la platine EasyPic7 et du compilateur mikroC PRO for PIC

Thomas Quiniou et Albert Ranaivosoloarimanana

Licence SPI-2 Anne 2013

1. Objectifs
Se familiariser avec la platine de test et ses diffrents lments, crer un projet, le compiler et l'excuter sur la platine. Le projet va consister faire clignoter toutes les LEDs du PORTB. Le montage est le suivant :

2. Contenu du kit EasyPic7 et logiciels


Un kit, par binme ou trinme selon les possibilits offertes par la salle d'informatique, vous sera confi en dbut de sance. Chaque kit est numrot, veuillez rutiliser le mme chaque sance, ceci afin de retrouver la dernire configuration de votre platine de test. Le kit contient : La platine de test EasyPic7 avec son microcontrleur 18F45K22 Un bloc d'alimentation De la documentation (guide MikroProg suite et MikroICD) Un dongle permettant d'activer la licence du compilateur MikroC

Selon l'objectif de la sance de TP, des modules supplmentaires vous seront distribus (capteur de T, afficheur LCD etc.). En fin de sance, vous devrez bien entendu restituer l'ensemble du matriel confi. De la documentation (datasheet du PIC18F45K22, guide utilisateur divers) peut tre tlcharg l'adresse http://pages.univ-nc.nc/~quiniou/. Une version papier du manuel utilisateur du logiciel MikroC PIC ainsi qu'un guide sur la syntaxe en C est disponible en salle de TP. Les logiciels ncessaires au droulement de vos sances sur microcontrleur ont dj t installs sur les machines. Il s'agit de : MikroC PRO (compilateur) MikroICD (outil de dbogage) MikroProg Suite (programmation de la puce)

2. Observation de la platine EasyPic7


La platine de test EasyPic v7 est la 7me gnration de la carte de test pour contrleurs (C ou MCU) PIC dveloppe par la socit MikroElektronika. Elle est compos de diffrents modules dont les principaux sont numrots sur la figure ci-dessous :

2 1 3 4

6 7

8 9 16 15 17 10 19 14 13 12 11

20 18

Complter le tableau suivant :


Module Potentiomtres - conversion analogique/numrique (CAN) Programmateur Connecteur USB (programmateur et alimentation) Afficheur 7 segments Connecteur RS-232 LEDs de contrle des ports Buzzer intgr Afficheur LCD 216 Quartz Connecteur USB-UART n

Afficheur GLCD Microcontrleur Zone des switches Potentiomtre de rglage de la luminosit des LCDs Boutons poussoirs de contrle des ports Bouton reset de la platine Zone d'alimentation Support capteur de T DS1820 Connecteur USB Support carte fille

3. Cration d'un premier projet


mikroC PRO pour PIC permet de crer des projets qui contiendront un seul fichier projet (fichier avec l'extension mcppi.) et un ou plusieurs fichiers sources (fichiers avec l'extension c.). Il est possible de grer plusieurs projets la fois. Les fichiers sources ne peuvent tre compils que s'ils font partie d'un projet.
Un fichier "projet" contient les informations suivantes : le nom du projet et ventuellement une description, le C utilis, la frquence d'horloge, la liste des fichiers sources, des fichiers binaires etc. A prsent, nous allons crer un nouveau projet, crire du code, le compiler et le tester. Le but est de faire clignoter les LEDs du port B de notre C. Aprs avoir insr le dongle (sentinelle) dans l'une des prises USB de votre machine, double cliquer sur l'icne du compilateur mikroC PRO for PIC du menu Start ou sur le raccourci du bureau de votre ordinateur pour le faire dmarrer.

L'environnement de travail intgr du compilateur s'affiche sur l'cran. Il contient plusieurs fentres que l'on peut afficher ou non. Il est galement possible des les dplacer ou encore de les rduire, ceci permet chacun de configurer son propre espace de travail. Un arrangement possible est montr sur la figure suivante :

Vous allez maintenant pouvoir dmarrer un nouveau projet. Slectionnez l'option "New Project" dans le menu Project ou cliquez directement sur l'icne "New Project" dans la barre d'outils "Project". Il ne reste plus qu' se laisser guider, appuyer sur le bouton "Next".

Step1 : Configuration du projet (Project Settings) La premire des choses faire est de spcifier des informations gnrales sur le projet, son nom, son emplacement, le type de C et la frquence de l'horloge (8 MHz).

Modifier le nom du projet (LedPortB) et le chemin du projet (cliquer sur Browse puis, sous votre compte, crer un rpertoire IEI/TP1/LedPortB). Le C renseign par dfaut tant le PIC 18F45K22, ne pas modifier la case Device Name. Idem pour l'horloge de 8 MHz. Cliquer sur Next. Step2 Ajout de fichiers (Add files) Si vous devez intgrer des fichiers dj existants dans votre projet, vous pouvez le faire ce stade. Ce n'est pas encore le cas ici, contentez vous de cliquer sur Next.

Step3 Inclure les librairies (Include Libraries) Cette tape vous permet d'inclure ou non toutes les librairies dans votre projet. Le fait d'inclure toutes les librairies ne sera pas pnalisant au niveau de mmoire. En effet,

seules les librairies explicitement appeles par le programme seront actives. Au total, ce sont 500 fonctions qui peuvent tre appeles dans le code. Elles peuvent tre visualises dans le "Code Assistant", [CTRL+space].

Inclure toutes les librairies et cliquer sur Next. Step4 - Fin La dernire fentre permet de configurer la source d'horloge et la PLL ainsi que quelques bits de configuration. Nous utiliserons ici la configuration par dfaut (oscillateur HS et PLL inactive), ne pas cocher la case et cliquer sur Finish.

Votre nouveau projet vient d'tre cr. Il inclue un fichier source appel "LedPortB.c" qui contient la fonction principale void main(). Vous remarquerez galement que votre projet est configur avec les paramtres que vous avez renseigns prcdemment.

Fentre Project Setting

4. Exemple de code
Nous allons maintenant pouvoir crire notre premier programme en C. La premire chose faire est d'initialiser le port B pour qu'il fonctionne en sortie numrique. :

Le registre LATB est utilis pour les sorties numriques (plutt que le registre PORTB). Nous l'initialisons avec des 0 sur chacune des broches :

Finalement, dans une boucle while(), nous allons basculer priodiquement la valeur du port B aprs une temporisation de 1000 ms. Cette temporisation vite que le clignotement soit trop rapide.

Tapez ce code dans la fentre principale. Enregistrer. Remarque : La routine Delay_ms est une routine intgre au compilateur. Attention, elle fonctionne selon l'horloge systme (attention la boucle PLL).

Remarque : Si vous devez afficher une fentre particulire, suivez le chemin View et activer la ligne correspondante. Les fentres peuvent tre insres directement dans l'espace de travail principal ou rduites sur les cts (pingles).

5. Compilation
A prsent, nous allons compiler le projet afin de crer le fichier .hex qui sera charg dans le C. La compilation inclue ici la compilation proprement parler (gnration d'un code machine par fichier), l'dition des liens ou linking (lien entre fichiers et bibliothques) et l'optimisation, tches qui seront faite de manire automatique. Pour compiler le projet, cliquer soit sur l'icne de la barre des tches ou dans le menu "Build", cliquer sur Build [CTRL+F9].

La fentre "message", si elle est active, contient des dtails sur le rsultat de la compilation. Le compilateur cr automatiquement les fichiers de sortie, dont le fichier LedPortB.hex.

6. Modification des paramtres


Si vous devez changer certains paramtres (type de C, horloge), vous n'tes pas dans l'obligation de reprendre tout le processus. Cela peut se faire trs vite partir de la fentre "Edit Project" : Project Edit Project [CTRL+SHIFT+E].

7. Programmation de la puce (C)


Le programmateur mikroProg embarqu sur la platine de test fonctionne avec un programme spcial appel mikroProg Suite for PIC. Pour le lancer, cliquer sur le raccourci situ sur le bureau de votre machine (icne reprsent droite).

La fentre principale de mikroProg suite s'affiche.

10

Connecter maintenant le programmateur avec le cble USB fournit, positionner le switch SW3 sur PORTB et allumer la platine de test (alimentation via le cble USB). L'icne reprsent en bas droite de la fentre doit passer au rouge (n20). Afin de charger le fichier .hex, vous devez dans l'ordre slectionner la famille du C (PIC18F-K), ensuite le modle (PIC18F45K22), slectionner le fichier hex. (Load puis ClignottementLed.c).

Cliquer sur le bouton Write, le chargement est termin lorsque Operation passe None.

11

Vrifier que le programme fonctionne correctement en observant le clignotement des Leds. Remarque : pour plus d'information sur le programme mikroProg Suite, vous pouvez tlcharger la plaquette de prsentation l'adresse : http://pages.univ-nc.nc/~quiniou/ ou consulter le document livr avec le kit.

8. Excution pas--pas, dbogage


L'exprience le prouve, hlas, mme le programme le plus soigneusement crit peut ne pas se comporter comme attendu. Pour le faire fonctionner correctement, vous devez dcouvrir les erreurs qui se cachent dans le code. Le processus consistant dcouvrir et corriger des erreurs de programmation est appel dbogage. Il y a 2 manires de procder, soit par simulation logicielle (simulation de ce qui est suppos se passer au niveau du C lorsque les lignes s'excutent), soit par test direct sur le circuit (In-Circuit debugging). Dans ce cas, il ne s'agit plus d'une simulation, le code s'excute effectivement sur le composant, c'est--dire au niveau matriel. Le programmateur embarqu MikroProg et le compilateur MikroC Pro for PIC supportent mikroICD, un outil de dbogage au niveau matriel. Il permet d'excuter le code directement sur le C et de vrifier les valeurs des variables, des registres spciaux (SFR), du contenu de la mmoire RAM, programme ou EEPROM etc. La plaquette de prsentation du logiciel mikroICD est galement accessible partir du lien http://pages.univ-nc.nc/~quiniou/ et un exemplaire papier est galement disponible avec le kit. 1. Revenir sous MikroC Pro for PIC et, s'il tait encore ouvert, fermer le projet prcdent (File > close). Crer un nouveau projet que vous appellerez LedPortABCDE. Le quartz sur la carte est toujours de 8 MHz, mais nous allons utiliser la PLL intgr au C pour le faire fonctionner 32 MHz. Reprendre les mmes tapes que pour le projet PortB (step1 page 4), mais changer la frquence de l'horloge en indiquant 32 MHz. Pensez galement, sur la platine, valider les LEDS des ports de A E grce au switch SW3. Retapez le code .c donn en annexe (fichier LedPortABCDE.c). Editez le projet (cf. 6, page 10) et la 2me ligne (4X PLL Enable), slectionner l'option Enable. Compiler le projet et charger le fichier LedPortABCDE.hex dans le C. Questions a) Vrifier que toutes les Leds s'allument tour tour. Selon vous, pourquoi les Leds RA6 et RA7 ne s'allument-elles pas? b) Expliquez le fonctionnement des lignes de code suivante : LATA |= 1 << counter et LATA &= ~(1 << counter) 2. Il vous faut maintenant autoriser le dbogueur mikroICD. Revenir sous MikroC Pro for PIC. Suivre le lien "Project Settings Build /Debugger Type", slectionner l'option "ICD Debug" pour autoriser la cration d'un

12

fichier .hex de dbogage puis l'option "mikroICD" afin d'autoriser l'utilisation du dbogueur.

3. A prsent, il nous faut recompiler et reprogrammer la puce. Pour cela, cliquer sur Build Build + Program [CTRL+ F11] ou directement sur l'icne correspondante de la barre d'outils.

Via le menu Build

Via la barre d'outils

Le compilateur va alors directement compiler le projet et dmarrer le logiciel mikroProg Suite for Pic. 4. Pour dmarrer mikroICD, cliquer sur le menu Run puis sur Start Debugger [F9].

5. Pour afficher la fentre des variables surveiller, cliquer sur View Debug Windows Watch Window [Shift+F5] ou directement sur l'icne de la barre d'outils.

Pour afficher la fentre de la RAM (Data) et visualiser son contenu, cliquer sur View Debug Windows RAM Window. Les valeurs affiches dans les cases mmoires sont exprimes en hexadcimal. Vous pouvez les modifier tout moment, il suffit pour cela de rentrer une nouvelle valeur et d'appuyer sur la touche Enter de votre clavier. De mme, le contenu des mmoires Programme (Flash) et EEPROM peuvent tre visualises : Flash : EEPROM : View Debug Windows > CODE Window View Debug Windows > EEPROM Window

Aprs avoir valid l'affichage des paramtres et si vous le souhaitez de la RAM, la fentre de MikroC doit ressembler la figure suivante :

13

La prochaine ligne de commande est surligne en bleu

Registres et variables utilisateur

La fentre Watch Values

Mmoire RAM

Dans cette fentre, vous pouvez dcider quels registres ou variables vont tre surveills. Durant l'excution du code, les valeurs ventuellement impactes vont voluer en temps rel. Diffrentes couleurs permettent de reprer le type de variable, en mauve pour les registres SFR et les sbits1 et en noir pour les variables utilisateur ou celles utilises par les librairies. Pour ajouter une variable, deux possibilits soffrent vous, soit vous la slectionnez dans la liste (Select variable from list), soit vous faites une recherche (Search for variable by assembly name). Que vous utilisiez lune ou lautre option, terminez en cliquant sur le bouton Add.

sbit est un type de donne particulier (accs aux registres)

14

La barre d'outils du dbogueur

Dbogage en temps rel Il existe trois possibilits pour faire du dbogage en temps rel :

15

Pour excuter le programme ligne par ligne :

Pour excuter l'ensemble des lignes restantes :

Pour excuter les lignes jusqu' l'emplacement du curseur :

Les points d'arrt (breakpoint)

MikroICD permet l'utilisation des points d'arrts. Cela signifie que vous pouvez marquer une ou plusieurs lignes particulires du programme afin de stopper ou de mettre en pause son excution des fins de test.
Les points d'arrt sont placs en cliquant sur les points bleus gauches des lignes de code ou sur l'icne [F6]. Dans ce cas, le C excute le programme partir de la ligne active, surligne en bleu, jusqu' la ligne marque par un point d'arrt, surligne en rouge. A ce stade, le dbogueur fait une pause.

Remarque : il existe des points d'arrt matriels et logiciels (cf. guide de l'utilisateur de mikroICD).

6. Manipulation Suivre pas pas l'excution du programme (Step Into par exemple). Vrifier l'allumage correct des diodes. Ajouter le suivi des registres PortA, PortB, PortC, PortD, PortE et de la variable counter lorsque vous tes en mode pas pas. Contrler la bonne volution des valeurs des ces variables. Exprimenter les autres possibilits du dbogueur.

16

Annexe : Code LedPortABCDE.c


/* * Project name: LedPortABCDE * Description: This project turns on/off LEDs connected to PORTA, PORTB, PORTC, PORTD and PORTE. * Test configuration: MCU : PIC18F45K22 Dev.Board : EasyPIC7 - ac:LEDs Oscillator: HS-PLL 32.0000 MHz, 8.0000 MHz Crystal * NOTES: Turn ON the PORT LEDs at SW3. */ char counter; void wait() { Delay_ms(100); } void main() { TRISA = 0x00; TRISB = 0x00; TRISC = 0x00; TRISD = 0x00; TRISE = 0x00; LATA = 0x00; LATB = 0x00; LATC = 0x00; LATD = 0x00; LATE = 0x00; // set direction to be output // set direction to be output // set direction to be output // set direction to be output // set direction to be output // // // // turn OFF the LATD leds turn OFF the LATD leds turn OFF the LATC leds turn OFF the LATD leds // turn OFF the LATD leds

while (1) { for (counter=0; counter<8; counter++) { LATA |= 1 << counter; LATB |= 1 << counter; LATC |= 1 << counter; LATD |= 1 << counter; LATE |= 1 << counter; wait(); } counter = 0; while (counter<8) { LATA &= ~(1 << counter); LATB &= ~(1 << counter); LATC &= ~(1 << counter); LATD &= ~(1 << counter); LATE &= ~(1 << counter); wait(); counter++; } } }

17

Vous aimerez peut-être aussi