aide mémoire mplab c30

22
Tutoriel / aide m moire MPLAB IDE 7.40 C30 CREMMEL Marcel Lycée Louis Couffignal STRASBOURG

Upload: lam-novox

Post on 24-Nov-2015

31 views

Category:

Documents


1 download

TRANSCRIPT

  • Tutoriel / aide mmoire

    MPLAB IDE 7.40C30

    C R E M ME L M a rc e l

    L y c e Lo u i s Co u f f ig na lSTRASBOURG

  • Aide-mmoire MPLAB C30 sur dsPIC

    BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 2/22

    Table des matires

    1. Dmarrer un nouveau projet _______________________________________________________ 32. Compilation _____________________________________________________________________ 9

    2.1 Processus de compilation ______________________________________________________________ 9

    2.2 Lancer la compilation ________________________________________________________________ 10

    2.3 Corriger les erreurs de compilation_____________________________________________________ 10

    3. Simulation _____________________________________________________________________ 123.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 dsPICL'environnement de dveloppement (IDE) MPLAB regroupe tous les outils ncessaires la mise au pointd'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 enprsentant les principales commandes dans ces 3 phases de dveloppement.1. Dmarrer un nouveau projet1. Project Project Wizard

    Rien de particulier dans cettephase : cliquer sur "Suivant"

    2. Ecran suivant :

    Choisir la cible dans la listepropose.

  • Aide-mmoire MPLAB C30 sur dsPIC

    BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 4/22

    3. Slection du langage de programmation :

    Choisir "Microchip C30Toolsuite" dans "ActiveToolsuite"Vrifier que chaque outilest bien localis sur lePC : cliquer chaque outilet vrifier sonemplacement.

    4. Nom et emplacement du projet :

    Si le dossier n'existe pasencore, il peut tre crdans cette tape. Leplacer dans le rpertoireD:\Microchip

    Le nom du projet peuttre diffrent de celui dudossier.viter de placerplusieurs projets dans unmme 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 informel'diteur de lien (linker)du plan mmoire dumicrocontroleur.

    Le fichier se trouve dansle dossier C:\ProgramFiles\Microchip\MPLABC30\support\gld

    Cocher la case pourcopier ce fichier dans ledossier.

    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 sourced'extension ".c" partir du menu "File" :

    Choisir un nomsignificatif en rapportavec le traitementeffectu par leprogramme

  • 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 lanumrotation 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 typed'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 dereprendre la configuration reproduite ci-dessous qui est celle des C utiliss en TP.

    Rsum de la configuration :

    Horloge : quartz XT; Fcy=FQ*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 aupoint est toujours la simulation

    12. Paramtrer le simulateur : "Debugger Setting "

    Choix de l'horloge : Fosc=64MHz

    Cocher "Enable Realtime watch update" etrgler le paramtre 100mS

  • Aide-mmoire MPLAB C30 sur dsPIC

    BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 9/22

    2. Compilation2.1 Processus de compilationLe 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 : leCPU 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 utilisantventuellement 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'unfichier source, juste avant qu'il ne soit trait par le compilateur. Il existe un ensemble d'instructionsspcifiques 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 dtailleet 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 compilationVrifier avant tout la prsence du fichier source (ici "Cligno_Leds.c") et du fichier "p30f2010.gld" dans lafentre du projet (ici "Mon_projet.mcw").

    La procdure est trssimple : il suffit decliquer sur "Make" ou"Build All" !

    Les 2 actions donnent lesmmes rsultats. En fait"Make" tient compte dela date des fichiers, ceque ne fait pas "BuildAll".

    En l'absence d'erreurs, les messages sont les suivants :

    Le fichier de programmation est cr : il se nomme .hex .Ce fichier est galement utilis par le simulateur (avec quelques autres fichiers qui dfinissent lessymboles) pour permettre une simulation en suivant l'excution du programme dans le source.2.3 Corriger les erreurs de compilationPersonne n'a jamais compil une premire fois un programme sans erreur ! Mais l'environnementMPLAB 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 faitl'erreur est ici : le ; manque.La position indique est correcte car le compilateur ne tient pas compte des commentaires et sauts deligne.

  • Aide-mmoire MPLAB C30 sur dsPIC

    BTS lectronique CREMMEL Marcel - Acadmie de Strasbourg Page 12/22

    3. SimulationLe 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 rglablepoints 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 enconsultant 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 programmeLes 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

    /****************************** Cblage *******************************Sorties :LED1 sur RC13LED2 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 sortiePORTCbits.RC13=0; // LED1 teintePORTCbits.RC14=0; // LED2 teinte// Intialisation Timer 1T1CONbits.TCKPS=3; // Fcy pr-divise par 256 (soit 62,5kHz)PR1=(2*Fcy/256)/10; // Priode Timer 1 = 200mSTMR1=0; // Raz du compteur du Timer 1T1CONbits.TON=1; // Timer 1 "ON"while (1) // Boucle sans fin. 1 signifie vrai{while (!IFS0bits.T1IF) {} // Attendre chargement Timer 1IFS0bits.T1IF=0; // Raz indicateur pour priode suivanteif (PORTDbits.RD1) // Test du BP sur RD1{LATCbits.LATC13^=1; // Inverser LED1LATCbits.LATC14 =0; // Eteindre LED2}else{LATCbits.LATC13 =0; // Eteindre LED1LATCbits.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 lammoire programme. Un "reset" fait dmarrer le CPU l'adresse 0000h; le compilateur y place uneinstruction de saut vers des fonctions d'initialisation du pointeur de pile et des variables ( partir del'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 "SetBreakpoint" (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, razdes variables dclares dans le programme (aucune ici), etc.

    Fentre de suivi de variables et registres : View / WatchPour placer un registre ou une variable : on peut la choisir dans les menus droulants ou utiliser latechnique "Drag and paste" partir du source.

    On peut choisir tous lescodes d'affichage possible :hexa, binaire, ascii, etc. encliquant avec le boutondroit sur cette ligne.

    La couleur rouge desvaleurs indique unchangement d'tat depuisle 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 dela position actuelle du pointeur vert.

    Pas pas (raccourcis : F7 et F8) : Il n'y a pas de diffrence entre les 2choix 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 trergl 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 deplacer un point d'arrt sur la premire ligne d'instructions, puis "Run".

    Halt (raccourci F5) : . Arrt asynchrone du CPU la fin de l'instructionen cours.

    Point d'arrt : Un "double clic" dans la partie grise gauche de la ligne place ou retire un pointd'arrt

    3.4 Commandes et fonctions avances Menu contextuel : Clic droit dans le fichier source

    Add Filter-in TraceBalayer les lignes dont on veutanalyser l'excution.Les lignes slectionnes sontrepres par un petit carr.

    Remove Filter TracePour retirer des lignes de laslection "Filter Trace"

    Gestion des points d'arrtUn "double clic" dans la partiegrise gauche de la ligne placeou retire un point d'arrt

    "Run" et arrt au curseur

    Les autres commandes sontpeu ou pas utilises ensimulation.

  • 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 LogicAnalyser". On choisit les lignes qui affectent les signaux observer : l'analyseur mmorise alors lesinstants pour lesquels ces sorties changent d'tat et on obtient un chronogramme raliste (voirl'exemple plus loin).

    StopWatch : "Debugger / StopWatchCette 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 laraction du programme.

    Slection del'entre avec lemenu droulant

    Choix del'action

    Paramtreventuel del'action

    Commentairelibre

    Cliquer pourraliser 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 carl'analyseur ne mmorise les tats des signaux qu'aux instants d'excution des instructionscorrespondantes.

    Dclenchement de l'analyseur ( ):

    au reset si "Clear" la valeur indique du PC.Un clic sur "Now" copiel'tat actuel du PC

    Position du dclenchement ( )Slection des signaux ( )Manipulation du chronogramme ()

    3.5 ExempleOn 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 neprend pas la valeur 0x9FFF. Ceci est d au fait que seuls les ports RC13, RC14 et RC15 sontutiliss sur un dsPIC30F2010.

    1. Vrification de la configuration des registresOn 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 LEDPour mesurer cette priode, on place un nouveau point d'arrt sur la ligne qui inverse l'tat de laLED2 :

    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 unclignotement de LED.En relanant le programme, on mesure de la mme faon la dure d'extinction de la LED.

    4. Simuler l'entre RD1L'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 "StimulusController" : "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 au3.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 commedcrit au 3.4

    On retire alors tous les points d'arrt, on fait un "reset" et on lance le programme. On agit sur RD1via le "Stimulus Controller" (plusieurs mises "1" et "0"). On arrte le programme au bout dequelques 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 : 3151237cycles. 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 casrel ! En fait, l'tat de l'entre RD1 n'est prise en compte par l'analyseur qu'aux moments desexcutions 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