TP1-µC1 - prise en main.docx

download TP1-µC1 - prise en main.docx

of 17

Transcript of TP1-µC1 - prise en main.docx

  • 7/22/2019 TP1-C1 - prise en main.docx

    1/17

    1

    Informatique Industrielle

    TP 1Microcontrleur

    Prise en main de la platine EasyPic7 etdu compilateur mikroC PRO for PIC

    Thomas Quiniou et Albert Ranaivosoloarimanana

    Licence SPI-2

    Anne 2013

  • 7/22/2019 TP1-C1 - prise en main.docx

    2/17

    2

    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 platinede 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 tretlcharg l'adresse http://pages.univ-nc.nc/~quiniou/. Une version papier du manuelutilisateur du logiciel MikroC PIC ainsi qu'un guide sur la syntaxe en C est disponible ensalle de TP.

    Les logiciels ncessaires au droulement de vos sances sur microcontrleur ont djt installs sur les machines. Il s'agit de :

    - MikroC PRO (compilateur)

    - MikroICD (outil de dbogage)

    - MikroProg Suite (programmation de la puce)

    http://pages.univ-nc.nc/~quiniou/http://pages.univ-nc.nc/~quiniou/
  • 7/22/2019 TP1-C1 - prise en main.docx

    3/17

    3

    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 5

    1 3 4

    6

    716

    17

    8

    9 11

    1412

    13

    15

    10

    19

    20

    18

    Complter le tableau suivant :

    Module n

    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

  • 7/22/2019 TP1-C1 - prise en main.docx

    4/17

    4

    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 fichierprojet (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 sourcesne 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 leraccourci 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 lesdplacer ou encore de les rduire, ceci permet chacun de configurer son propre espace de travail. Un arrangement possible est montr sur la figure suivante :

  • 7/22/2019 TP1-C1 - prise en main.docx

    5/17

    5

    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 leprojet, son nom, son emplacement, le type de C et la frquence de l'horloge (8 MHz).

  • 7/22/2019 TP1-C1 - prise en main.docx

    6/17

    6

    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 dfauttant le PIC 18F45K22, ne pas modifier la case Device Name. Idem pour l'horloge de 8MHz.

    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 faitd'inclure toutes les librairies ne sera pas pnalisant au niveau de mmoire. En effet,

  • 7/22/2019 TP1-C1 - prise en main.docx

    7/17

    7

    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 trevisualises 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.

  • 7/22/2019 TP1-C1 - prise en main.docx

    8/17

    8

    FentreProject 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 duport B aprs une temporisation de 1000 ms. Cette temporisation vite que leclignotement soit trop rapide.

    Tapez ce code dans la fentre principale. Enregistrer.

    Remarque : La routine Delay_ms est une routine intgre au compilateur. Attention, ellefonctionne selon l'horloge systme (attention la boucle PLL).

  • 7/22/2019 TP1-C1 - prise en main.docx

    9/17

    9

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

    5.CompilationA prsent, nous allons compiler le projet afin de crer le fichier .hex qui sera chargdans 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 etbibliothques) 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 lacompilation. Le compilateur cr automatiquement les fichiers de sortie, dont le fichier LedPortB.hex.

  • 7/22/2019 TP1-C1 - prise en main.docx

    10/17

    10

    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 avecun programme spcial appel mikroProg Suite for PIC. Pour le lancer, cliquersur le raccourci situ sur le bureau de votre machine (icne reprsent droite).

    La fentre principale de mikroProg suite s'affiche.

  • 7/22/2019 TP1-C1 - prise en main.docx

    11/17

    11

    Connecter maintenant le programmateur avec le cble USB fournit, positionner le switchSW3 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 puisClignottementLed.c).

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

  • 7/22/2019 TP1-C1 - prise en main.docx

    12/17

    12

    Vrifier que le programme fonctionne correctement en observant le clignotement desLeds.Remarque : pour plus d'information sur le programme mikroProg Suite, vous pouveztlcharger 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 dcouvriret corriger des erreurs de programmation est appel dbogage.

    Il y a 2 manires de procder, soit par simulation logicielle (simulation de ce qui estsuppos 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 PICsupportent mikroICD, un outil de dbogage au niveau matriel. Il permet d'excuter lecode 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 dulien http://pages.univ-nc.nc/~quiniou/ et un exemplaire papier est galement disponibleavec le kit.

    1. Revenir sous MikroC Pro for PIC et, s'il tait encore ouvert, fermer le projetprcdent (File > close). Crer un nouveau projet que vous appellerez LedPortABCDE. Lequartz sur la carte est toujours de 8 MHz, mais nous allons utiliser la PLL intgr au Cpour 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 switchSW3. 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. Compilerle projet et charger le fichier LedPortABCDE.hex dans le C.

    Questionsa) 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

  • 7/22/2019 TP1-C1 - prise en main.docx

    13/17

    13

    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 mikroProgSuite 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 sontexprimes 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 trevisualises :

    Flash : View Debug Windows > CODE Window

    EEPROM : View Debug Windows > EEPROM Window

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

  • 7/22/2019 TP1-C1 - prise en main.docx

    14/17

    14

    Laprochainelig

    nedecommandeestsurligneenbleu

    Registreset

    variablesutilisateur

    La fentre Watch ValuesMmoire RAM

    Dans cette fentre, vous pouvez dcider quels registres ou variables vont tre

    surveills. Durant l'excution du code, les valeurs ventuellement impactes vontvoluer 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 oucelles utilises par les librairies.

    Pour ajouter une variable, deux possibilits soffrent vous, soit vous la slectionnezdans la liste (Select variable from list), soit vous faites une recherche (Search forvariable by assembly name). Que vous utilisiez lune ou lautre option, terminez encliquant sur le bouton Add.

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

  • 7/22/2019 TP1-C1 - prise en main.docx

    15/17

    15

    La barre d'outils du dbogueur

    Dbogage en temps rel

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

  • 7/22/2019 TP1-C1 - prise en main.docx

    16/17

    16

    Pour excuter le programmeligne par ligne :

    Pour excuter l'ensembledes lignes restantes :

    Pour excuter les lignesjusqu' l'emplacement ducurseur :

    Les points d'arrt (breakpoint)

    MikroICD permet l'utilisation des points d'arrts. Cela signifie que vous pouvez marquerune ou plusieurs lignes particulires du programme afin de stopper ou de mettre enpause 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 leprogramme partir de la ligne active, surligne enbleu, 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 etlogiciels (cf. guide de l'utilisateur de mikroICD).

    6.Manipulation

    - Suivre pas pas l'excution du programme (Step Into par exemple). Vrifierl'allumage correct des diodes.

    - Ajouter le suivi des registres PortA, PortB, PortC, PortD, PortE et de la variablecounter lorsque vous tes en mode pas pas. Contrler la bonne volution desvaleurs des ces variables.

    - Exprimenter les autres possibilits du dbogueur.

  • 7/22/2019 TP1-C1 - prise en main.docx

    17/17

    17

    /**Project name:

    LedPortABCDE*Description:

    Annexe : Code LedPortABCDE.c

    This project turns on/off LEDs connected to PORTA, PORTB, PORTC, PORTD and PORTE.*Test configuration:MCU : PIC18F45K22Dev.Board : EasyPIC7 - ac:LEDsOscillator: 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; // set direction to be outputTRISB = 0x00; // set direction to be outputTRISC = 0x00; // set direction to be outputTRISD = 0x00; // set direction to be outputTRISE = 0x00; // set direction to be output

    LATA = 0x00; // turn OFF the LATD ledsLATB = 0x00; // turn OFF the LATD leds

    LATC = 0x00; // turn OFF the LATC ledsLATD = 0x00; // turn OFF the LATD ledsLATE = 0x00; // turn OFF the LATD leds

    while (1) {for (counter=0; counter