Téléchargez comme PDF, TXT ou lisez en ligne sur Scribd
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 22
Tutoriel / aide mmoire
MPLAB IDE 7.40
C30 CREMMEL Marcel Lyce Loui 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 un nouveau projet _______________________________________________________ 3 2. Compilation_____________________________________________________________________ 9 2.1 Processus de compilation ______________________________________________________________ 9 2.2 Lancer la compilation ________________________________________________________________ 10 2.3 Corriger les erreurs de compilation_____________________________________________________ 10 3. Simulation_____________________________________________________________________ 12 3.1 Exemple de programme ______________________________________________________________ 13 3.2 Premiers essais______________________________________________________________________ 14 3.3 Commandes de base _________________________________________________________________ 15 3.4 Commandes et fonctions avances ______________________________________________________ 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 un nouveau projet, 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. Bits de configuration(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 : quartz XT; Fcy=F Q *16/4 (soit 16MHz avec un quartz de 4 MHz) Chien de garde inhib Mmoire non protge Aide-mmoire MPLAB C30 sur dsPIC BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 8/22 11. Slection du simulateur : La premire tape de la mise au point est toujours la simulation 12. Paramtrer le simulateur : "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. Rle du pr-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 directives pour 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 Rles des fichiers d'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; PORT2bits.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 <Nom du projet>.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", "pas pas" et "pas pas" vitesse rglable points d'arrts multiples fentre de suivi de variables et registres taux de rafrachissement rglable stimuli affectation manuelle et programme simulation de l'UART via des fichiers "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 le simulateur : 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 : /******************************************************************** *** Programme d'apprentissage C30 *** *** dsPIC30F2010 *** *** Clignotement de 2 leds *** *** Auteur : CREMMEL Marcel *** *** Date : 04/09/2006 *** ********************************************************************/ #include <p30f2010.h> /***************************** * Cblage * ****************************** Sorties : LED1 sur RC13 LED2 sur RC14 Entre : BP sur RD1 */ /***************************** * Constantes non mmorises * ******************************/ #define Fcy 4000000*16/4 // xtal = 4Mhz; PLLx16 -> 16 MIPS /***************************** * Programme principal * ******************************/ int main (void) { // Initialisation des ports I/O (RD1 en entre au reset) TRISC=0x9FFF; // RC14 et RC13 en sortie PORTCbits.RC13=0; // LED1 teinte PORTCbits.RC14=0; // LED2 teinte // Intialisation Timer 1 T1CONbits.TCKPS=3; // Fcy pr-divise par 256 (soit 62,5kHz) PR1=(2*Fcy/256)/10; // Priode Timer 1 = 200mS TMR1=0; // Raz du compteur du Timer 1 T1CONbits.TON=1; // Timer 1 "ON" while (1) // Boucle sans fin. 1 signifie vrai { while (!IFS0bits.T1IF) {} // Attendre chargement Timer 1 IFS0bits.T1IF=0; // Raz indicateur pour priode suivante if (PORTDbits.RD1) // Test du BP sur RD1 { LATCbits.LATC13^=1; // Inverser LED1 LATCbits.LATC14 =0; // Eteindre LED2 } else { LATCbits.LATC13 =0; // Eteindre LED1 LATCbits.LATC14^=1; // Inverser LED2 } } } Aide-mmoire MPLAB C30 sur dsPIC BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 14/22 3.2 Premiers essais Compiler le programme (raccourci F10) On peut observer le rsultat en ouvrant la fentre "Program Memory" ("View / 3 Program Memory") : 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 un point d'arrt sur la premire ligne d'instructions de la fonction "main" : clic droit puis "Set Breakpoint" (ou "double-clic" dans la partie grise). Un B rouge apparat sur la ligne. 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. Pas pas (raccourcis : F7 et 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 Menu contextuel : 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) Stimulus Controller : 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 Logic Analyser : "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 ( ): au reset si "Clear" la valeur indique du PC. Un clic sur "Now" copie l'tat actuel du PC 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" : double clic dans la partie grise sur la ligne 33 "Reset" puis "Run" : le programme s'arrte au point d'arrt (voir 3.2 pour la fentre "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. Vrification de la configuration des registres 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. Vrification du positionnement de l'indicateur T1IF du registre IFS0 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. Mesure de la priode d'allumage / extinction d'une LED 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'entre RD1 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. Chronogramme complet : 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. Raccourcis clavier