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 2014

1
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
2. Observation de la platine EasyPic7
La platine de test EasyPic v7 est la 7 me gnration de la carte de test pour contrleurs
(C ou MCU) PIC dveloppe par la socit MikroElektronika. Elle est compose de
diffrents modules dont les principaux sont numrots sur la figure ci-dessous :

2 5

1 3 4

6 8
9 11
7 14 12
16
13
15
10
17
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 2 16
Quartz
Connecteur USB-UART

3
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 PICdu menu Startou 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 :

4
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).

5
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,

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

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

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

9
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 mikroProgembarqu 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 suites'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
LedPortB.c).

Cliquer sur le bouton Write


, le chargement est termin lorsque Operationpasse 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 mikroICDest 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 2 me 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 Runpuis 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 Enterde votre clavier.

De mme, le contenu des mmoires Programme (Flash) et EEPROM peuvent tre


visualises :
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, la


fentre de MikroC doit ressembler la figure suivante :

13
La prochaine ligne de commande est surligne en bleu

Registres
et
variables
utilisateur
s

Mmoire RAM
La fentre Watch Values

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 sbits 1 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.

1
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 Pour excuter l'ensemble Pour excuter les lignes
ligne par ligne : des lignes restantes : jusqu' l'emplacement du
curseur :

Les points d'arrt (breakpoint)

MikroICDpermet 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; // set direction to be output


TRISB = 0x00; // set direction to be output
TRISC = 0x00; // set direction to be output
TRISD = 0x00; // set direction to be output
TRISE = 0x00; // set direction to be output

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


LATB = 0x00; // turn OFF the LATD leds
LATC = 0x00; // turn OFF the LATC leds
LATD = 0x00; // turn OFF the LATD leds
LATE = 0x00; // 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