TP 1 Microcontrleur
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 :
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
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
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".
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.
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.
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].
Step4 - Fin
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.
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.
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].
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).
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.
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.
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
15
Pour excuter le programme Pour excuter l'ensemble Pour excuter les lignes
ligne par ligne : des lignes restantes : jusqu' l'emplacement du
curseur :
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.
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() {
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