Vous êtes sur la page 1sur 22

Tutoriel / aide mmoire

MPLAB DE 7.40
C30
CREMMEL Mar cel
L yce L oui s Couf f i gnal
STRASBOURG
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 2/22
Table des matires
1. Dmarrer unnouveauprojet _______________________________________________________ 3
2. Compilation_____________________________________________________________________ 9
2.1 Processusdecompilation ______________________________________________________________ 9
2.2 Lancer lacompilation________________________________________________________________ 10
2.3 Corriger leserreursdecompilation_____________________________________________________ 10
3. Simulation_____________________________________________________________________ 12
3.1 Exempledeprogramme ______________________________________________________________ 13
3.2 Premiersessais______________________________________________________________________ 14
3.3 Commandesdebase _________________________________________________________________ 15
3.4 Commandeset fonctionsavances______________________________________________________ 15
3.5 Exemple ___________________________________________________________________________ 17
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 3/22
Tutoriel / aide mmoire MPLAB C30 sur dsPIC
L'environnement de dveloppement (IDE) MPLAB regroupe tous les outils ncessaires la mise au point
d'une application avec un cur de microcontroleur dsPIC, entre autres, de MICROCHIP :
diteur de texte interactif
compilateur C (et assembleur)
simulateur
debugger si on dispose de l'quipement ncessaire
Ce document est un "tutorial" qui permet de dmarrer unnouveauprojet, le compiler et le simuler en
prsentant les principales commandes dans ces 3 phases de dveloppement.
1. Dmarrer un nouveau projet
1. Project Project Wizard
Rien de particulier dans cette
phase : cliquer sur "Suivant"
2. Ecran suivant :
Choisir la cible dans la liste
propose.
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 4/22
3. Slection du langage de programmation :
Choisir "Microchip C30
Toolsuite" dans "Active
Toolsuite"
Vrifier que chaque outil
est bien localis sur le
PC : cliquer chaque outil
et vrifier son
emplacement.
4. Nom et emplacement du projet :
Si le dossier n'existe pas
encore, il peut tre cr
dans cette tape. Le
placer dans le rpertoire
D:\Microchip
Le nom du projet peut
tre diffrent de celui du
dossier.
viter de placer
plusieurs projets dans un
mme dossier.
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 5/22
5. Ajouter le fichier "p30f2010.gld" dans le projet :
Ce fichier texte informe
l'diteur de lien (linker)
du plan mmoire du
microcontroleur.
Le fichier se trouve dans
le dossier C:\Program
Files\Microchip\MPLAB
C30\support\gld
Cocher la case pour
copier ce fichier dans le
dossier.
6. Rsum des paramtres du projet :
Cliquer sur "Terminer"
pour crer le projet
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 6/22
7. L'environnement de dveloppement se prsente alors de la faon suivante :
8. Mais il ne comporte encore aucun programme traiter ! Pour ce faire, il faut crer un fichier source
d'extension ".c" partir du menu "File" :
Choisir un nom
significatif en rapport
avec le traitement
effectu par le
programme
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 7/22
9. On vient d'effectuer la tche la plus facile ! Il reste crire et mettre au point le programme.
Note : on peut changer les paramtres de l'diteur de texte (par exemple : la taille des caractres ou la
numrotation des lignes) en ouvrant le menu contextuel par un clic droit.
10. Bitsdeconfiguration(menu : Configure Configuration bits )
Chaque dsPIC comporte un certain nombre de bits de configuration : ils dterminent entre autres le type
d'horloge, l'activation du chien de garde, la protection mmoire etc.
Ces bits sont situs en mmoire flash et sont donc programmables. Toutefois, il est prfrable de
reprendre la configuration reproduite ci-dessous qui est celle des C utiliss en TP.
Rsum de la configuration :
Horloge: quartzXT; Fcy=F
Q
*16/4(soit 16MHzavecunquartzde4MHz)
Chien de garde inhib
Mmoire non protge
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 8/22
11. Slectiondusimulateur :
La premire tape de la mise au
point est toujours la simulation
12. Paramtrer lesimulateur : "Debugger Setting "
Choix de l'horloge : Fosc=64MHz
Cocher "Enable Realtime watch update" et
rgler le paramtre 100mS
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 9/22
2. Compilation
2.1 Processus de compilation
Le programmeur crit son programme dans un ou plusieurs fichiers texte en utilisant le langage normalis
"C" (les fichiers "sources"). Ces fichiers ne peuvent pas tre programms dans le C cible tels quels : le
CPU de celui-ci ne connat que le code machine et ne comprend rien au texte des fichiers source.
La tche du compilateur est de "traduire" ces fichiers source en code machine (fichier .hex), en utilisant
ventuellement des librairies de fonctions (mathmatiques par exemple) fournies avec le compilateur.
Rledupr-processeur :
Le pr-processeur ou pr-compilateur ralise des mises en forme et des amnagements du texte d'un
fichier source, juste avant qu'il ne soit trait par le compilateur. Il existe un ensemble d'instructions
spcifiques appeles directivespour indiquer les oprations effectuer durant cette tape.
Les deux directives les plus courantes sont #define et #include.
#define correspond une quivalence ex : #define pi 3.14 ou une dfinition de macro
Rlesdesfichiersd'inclusion:
Les fichiers d'inclusion ou d'en tte *.h (header) contiennent pour l'essentiel cinq types d'informations :
des dfinitions de nouveau type
des dfinitions de structure
des dfinitions de constantes
Le fichier d'inclusion p30f2010.h est particulirement important lorsquon travaille en C sur ce micro-
contrleur : il dfinit tous les registres internes du micro-contrleur dsPIC30F2010 de faon trs dtaille
et permet d'viter de nombreuses erreurs dans l'affectation de ces registres.
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 10/22
Par exemple, pour mettre 1 le bit 2 du PORTB (not RB2), on peut crire :
PORT2 | = 0x0004;
PORT2bi t s. RB2 = 1; On utilise ici les dclarations de "p30f2010.h"
La 2 solution est bien plus sre.
2.2 Lancer la compilation
Vrifier avant tout la prsence du fichier source (ici "Cligno_Leds.c") et du fichier "p30f2010.gld" dans la
fentre du projet (ici "Mon_projet.mcw").
La procdure est trs
simple : il suffit de
cliquer sur "Make" ou
"Build All" !
Les 2 actions donnent les
mmes rsultats. En fait
"Make" tient compte de
la date des fichiers, ce
que ne fait pas "Build
All".
En l'absence d'erreurs, les messages sont les suivants :
Le fichier de programmation est cr : il se nomme <Nomduprojet>.hex.
Ce fichier est galement utilis par le simulateur (avec quelques autres fichiers qui dfinissent les
symboles) pour permettre une simulation en suivant l'excution du programme dans le source.
2.3 Corriger les erreurs de compilation
Personne n'a jamais compil une premire fois un programme sans erreur ! Mais l'environnement
MPLAB facilite leur reprage et donc leur correction (la correction automatique n'existe pas encore !).
Make Build all
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 11/22
Exemple : on a plac volontairement une erreur de syntaxe dans le source
Le message d'erreur dans la fentre "Output" indique :
Cligno_Leds.c : In function `main':
Cligno_Leds.c : 36 : error : syntax error before "PORTCbits"
La position de l'erreur est repre dans le source par un "double-clic" (voir flche ci-dessus). En fait
l'erreur est ici : le ; manque.
La position indique est correcte car le compilateur ne tient pas compte des commentaires et sauts de
ligne.
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 12/22
3. Simulation
Le simulateur de MPLAB est trs complet et couvre la majorit des priphriques intgrs dans le C.
Ses principales spcifications sont :
modes"run", "paspas" et "paspas" vitesserglable
pointsd'arrtsmultiples
fentre de suivi de variables et registres taux de rafrachissement rglable
stimuli affectation manuelle et programme
simulationdel'UART viadesfichiers"texte"
Il est prudent de vrifier que le simulateur supporte les priphriques utiliss dans le programme en
consultant l'aide : "Debugger / Setting" puis onglet "Limitations" et enfin clic sur "Details".
Activer lesimulateur : menu "Debugger / Select Tool /
3. MPLAB SIM"
De nouvelles commandes sont disponibles dans le menu
"Debugger"
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 13/22
3.1 Exemple de programme
Les possibilits du simulateur sont prsentes avec un petit programme qui fait clignoter 2 leds.
Voici le source :
/ ********************************************************************
*** Pr ogr amme d' appr ent i ssage C30 ***
*** dsPI C30F2010 ***
*** Cl i gnot ement de 2 l eds ***
*** Aut eur : CREMMEL Mar cel ***
*** Dat e : 04/ 09/ 2006 ***
********************************************************************/
#i ncl ude <p30f 2010. h>
/ *****************************
* Cbl age *
******************************
Sor t i es :
LED1 sur RC13
LED2 sur RC14
Ent r e :
BP sur RD1
*/
/ *****************************
* Const ant es non mmor i ses *
******************************/
#def i ne Fcy 4000000*16/ 4 / / xt al = 4Mhz; PLLx16 - > 16 MI PS
/ *****************************
* Pr ogr amme pr i nci pal *
******************************/
i nt mai n ( voi d)
{
/ / I ni t i al i sat i on des por t s I / O ( RD1 en ent r e au r eset )
TRI SC=0x9FFF; / / RC14 et RC13 en sor t i e
PORTCbi t s. RC13=0; / / LED1 t ei nt e
PORTCbi t s. RC14=0; / / LED2 t ei nt e
/ / I nt i al i sat i on Ti mer 1
T1CONbi t s. TCKPS=3; / / Fcy pr - di vi se par 256 ( soi t 62, 5kHz)
PR1=( 2*Fcy/ 256) / 10; / / Pr i ode Ti mer 1 = 200mS
TMR1=0; / / Raz du compt eur du Ti mer 1
T1CONbi t s. TON=1; / / Ti mer 1 "ON"
whi l e ( 1) / / Boucl e sans f i n. 1 si gni f i e vr ai
{
whi l e ( ! I FS0bi t s. T1I F) {} / / At t endr e char gement Ti mer 1
I FS0bi t s. T1I F=0; / / Raz i ndi cat eur pour pr i ode sui vant e
i f ( PORTDbi t s. RD1) / / Test du BP sur RD1
{
LATCbi t s. LATC13^=1; / / I nver ser LED1
LATCbi t s. LATC14 =0; / / Et ei ndr e LED2
}
el se
{
LATCbi t s. LATC13 =0; / / Et ei ndr e LED1
LATCbi t s. LATC14^=1; / / I nver ser LED2
}
}
}
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 14/22
3.2 Premiers essais
Compiler leprogramme(raccourci F10)
Onpeut observer lersultat enouvrant lafentre"ProgramMemory" ("View/ 3ProgramMemory")
:
On constate que la premire instruction de la fonction "main" est place l'adresse 0180h dans la
mmoire programme. Un "reset" fait dmarrer le CPU l'adresse 0000h; le compilateur y place une
instruction de saut vers des fonctions d'initialisation du pointeur de pile et des variables ( partir de
l'adresse 0100h et jusqu' 017Fh). Le CPU excute la fonction "main" seulement aprs ces oprations.
Placer unpoint d'arrt sur lapremireligned'instructionsdelafonction"main" : clicdroit puis"Set
Breakpoint" (ou"double-clic" danslapartiegrise). UnB rougeapparat sur laligne.
Lancer le programme : clic sur "Run" (raccourci F9) :
Le programme s'arrte au point d'arrt, sur la 1 instruction du programme. En fait, avant d'en arriver
ce point, le C a dj excut un certain nombre de fonctions : initialisation du pointeur de pile, raz
des variables dclares dans le programme (aucune ici), etc.
Fentre de suivi de variables et registres : View/ Watch
Pour placer un registre ou une variable : on peut la choisir dans les menus droulants ou utiliser la
technique "Drag and paste" partir du source.
On peut choisir tous les
codes d'affichage possible :
hexa, binaire, ascii, etc. en
cliquant avec le bouton
droit sur cette ligne.
La couleur rouge des
valeurs indique un
changement d'tat depuis
le dernier rafrachissement.
View/Memory usage gauge
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 15/22
Lancer le programme ("Run"): on observe l'volution des registres pendant l'excution du programme.
Note: les valeurs peuvent tre modifies par un double-clic.
3.3 Commandes de base
"Run" (raccourci F9) : Le programme se lance vitesse max partir de
la position actuelle du pointeur vert.
Paspas(raccourcis : F7et F8) : Il n'y a pas de diffrence entre les 2
choix proposs avec ce programme simple (il n'y a pas d'appel de fonction).
Le pointeur vert indique la ligne de la prochaine instruction excuter.
Animate: Il s'agit d'un "pas pas" automatique. Le rythme peut tre
rgl dans le menu : "Debugger / Settings" sous l'onglet "Animation/realtime Updates" : paramtre
"Animate step time" (par dfaut 500mS)
Reset (raccouci F6) : Le CPU est mis zro. Il est l'arrt et prt
excuter l'instruction l'adresse 0000h. Pour aller au dbut de la fonction "main", on recommande de
placer un point d'arrt sur la premire ligne d'instructions, puis "Run".
Halt (raccourci F5) : . Arrt asynchrone du CPU la fin de l'instruction
en cours.
Point d'arrt : Un "double clic" dans la partie grise gauche de la ligne place ou retire un point
d'arrt
3.4 Commandes et fonctions avances
Menucontextuel : Clic droit dans le fichier source
Add Filter-in Trace
Balayer les lignes dont on veut
analyser l'excution.
Les lignes slectionnes sont
repres par un petit carr.
Remove Filter Trace
Pour retirer des lignes de la
slection "Filter Trace"
Gestion des points d'arrt
Un "double clic" dans la partie
grise gauche de la ligne place
ou retire un point d'arrt
"Run" et arrt au curseur
Les autres commandes sont
peu ou pas utilises en
simulation.
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 16/22
La fonction "Filter Trace" est intressante si on utilise l'analyseur logique : "View / Simulator Logic
Analyser". On choisit les lignes qui affectent les signaux observer : l'analyseur mmorise alors les
instants pour lesquels ces sorties changent d'tat et on obtient un chronogramme raliste (voir
l'exemple plus loin).
StopWatch: "Debugger / StopWatch
Cette fentre permet de mesurer le temps d'excution du programme.
Temps relatif (en cycles et en S)
Temps depuis le dbut de "main"
Raz du temps relatif
Temps relatif = Temps total
Horloge Fosc (non modifiable ici)
StimulusController : contrleur de stimuli : "Debugger / Stimulus Controller / New Scenario"
Cette fentre permet d'affecter manuellement toutes les entres du C dans le but d'observer la
raction du programme.
Slection de
l'entre avec le
menu droulant
Choix de
l'action
Paramtre
ventuel de
l'action
Commentaire
libre
Cliquer pour
raliser l'action
Attention: les affectations ne sont effectives qu'en cours de simulation.
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 17/22
LogicAnalyser : "View / Simulator Logic Analyser"
Attention : il faut au pralable slectionner les lignes "Filter-in Trace" dans le programme car
l'analyseur ne mmorise les tats des signaux qu'aux instants d'excution des instructions
correspondantes.
Dclenchement de l'analyseur ( ):
aureset si "Clear"
lavaleur indiqueduPC.
Unclicsur "Now" copie
l'tat actuel duPC
Position du dclenchement ( )
Slection des signaux ( )
Manipulation du chronogramme ()
3.5 Exemple
On va traiter l'exemple de programme fourni au 3.1 pour se familiariser avec toutes ces fonctions.
Le programme a t compil au dbut du 3.2 : tout est prt pour la simulation.
Point d'arrt au dbut de "main" : doubleclicdanslapartiegrisesur laligne33
"Reset" puis "Run" : leprogrammes'arrteaupoint d'arrt (voir 3.2pour lafentre"Watch")
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 18/22
On faisant un pas (F7 : la flche verte descend d'une ligne), on constate que le registre TRISC ne
prend pas la valeur 0x9FFF. Ceci est d au fait que seuls les ports RC13, RC14 et RC15 sont
utiliss sur un dsPIC30F2010.
1. Vrificationdelaconfigurationdesregistres
On place un point d'arrt juste avant la boucle sans fin :
"Run" : le programme s'arrte au point d'arrt et on vrifie l'tat des registres :
Constatations : les affections prvues sont ralises et on constate que RD1="0"
2. Vrificationdupositionnement del'indicateur T1I F duregistreI FS0
Pour cela on place un point d'arrt juste aprs le test de cet indicateur :
On relance le programme. On constate que le compteur TMR1 s'incrmente dans la fentre
"Watch". L'indicateur T1IF passe "1" quand TMR1 atteint la valeur du registre PR1.
Quand c'est le cas, le programme passe la ligne du point d'arrt et il s'arrte. On obtient :
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 19/22
Tout est conforme : TMR1=PR1. On peut supprimer le dernier "breakpoint".
La prochaine instruction du programme met l'indicateur T1IF "0". Il sera remis "1" par le
"Timer 1" 200mS plus tard (temps CPU).
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 20/22
3. Mesuredelaprioded'allumage/ extinctiond'uneLED
Pour mesurer cette priode, on place un nouveau point d'arrt sur la ligne qui inverse l'tat de la
LED2 :
On relance le programme, le programme s'arrte au "breakpoint".
On ouvre alors la fentre "Stopwatch" ("Debugger / Stopwatch") :
Le compteur "Stopwatch" doit tre normalement 0. Si ce n'est pas le cas : clic sur "Zero"
On relance le programme, le programme s'arrte au mme point d'arrt :
Le temps rellement coul est un peu plus grand que 200mS : c'est conforme pour un
clignotement de LED.
En relanant le programme, on mesure de la mme faon la dure d'extinction de la LED.
4. Simuler l'entreRD1
L'entre RD1 agit sur le droulement du programme. Cela va tre vrifi dans cette tape.
Pour agir sur RD1 pendant le droulement du programme, on ouvre la fentre "Stimulus
Controller" : "Debugger / Stimulus Controller / New Scenario".
On place 2 lignes RD1 comme dcrit au 3.4 : une qui affecte RD1 "0", l'autre "1" :
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 21/22
Retirer tous les points d'arrt et relancer le programme.
On observe alors le PORTC dans la fentre "Watch" :
si RD1 = 0 (clic sur "Fire"), sa valeur doit basculer entre les valeurs 0x0000
(RC14=LED2="0") et 0x4000 (RC14=LED2="1")
si RD1 = 1 (clic sur "Fire"), sa valeur doit basculer entre les valeurs 0x0000
(RC13=LED1="0") et 0x2000 (RC13=LED1="1")
5. Chronogrammecomplet :
L'analyseur logique permet d'obtenir par simulation un chronogramme de fonctionnement typique.
Pour cela il faut commencer par slectionner les lignes "Filter-in Trace" (voir menu contextuel au
3.4). L'analyseur logique ne prend en compte que les lignes ayant l'attribut "Filter-in Trace",
repres par un petit carr gauche.
Ces lignes ont t choisies car ce sont les seules qui affectent les sorties RC13 et RC14.
On ouvre alors l'analyseur logique : "View / Simulator Logic Analyser" et on le paramtre comme
dcrit au 3.4
On retire alors tous les points d'arrt, on fait un "reset" et on lance le programme. On agit sur RD1
via le "Stimulus Controller" (plusieurs mises "1" et "0"). On arrte le programme au bout de
quelques secondes.
Aide-mmoire MPLAB C30 sur dsPIC
BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 22/22
On obtient alors le rsultat suivant :
Le rsultat est conforme.
Les curseurs permettent d'valuer le nombre de cycles entre 2 changements d'tat : 3151237
cycles. Avec une horloge Fcy de 16MHz, cela correspond une dure de 197mS : CQFD.
Note: l'entre RD1 semble changer d'tat en mme temps que RC13. Ce n'est pas vrai dans le cas
rel ! En fait, l'tat de l'entre RD1 n'est prise en compte par l'analyseur qu'aux moments des
excutions des lignes de programme d'attribut "Filter-in Trace" (celles qui ont un "carr"), c'est
dire aux moments des affectations de RC13 et RC14.
Raccourcisclavier