TP1 - C1 - Prise en Main
TP1 - C1 - Prise en Main
TP1 - C1 - Prise en Main
TP 1 Microcontrleur Prise en main de la platine EasyPic7 et du compilateur mikroC PRO for PIC
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 :
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 1 3 4
6 7
8 9 16 15 17 10 19 14 13 12 11
20 18
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
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.
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.
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.
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.
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
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.
14
Dbogage en temps rel Il existe trois possibilits pour faire du dbogage en temps rel :
15
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
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