IUT d’AIX-MARSEILLE – GEII GUIDE DE DEVELOPPEMENT POUR PIC 18F4550 MODULE II2 SOMMAIRE 1. UTILISATION DE MPLAB. ………………………………………………………………………. 1.1. 1.2. 1.3. 1.4. Organisation de l’espace de travail. Créer un projet (Project Wizard). Configurer les chemins d’accès des outils du compilateur C18. ……….. Configurer les options de compilation. ……………………………………………. 1.5. Déclaration du mode de jeu étendu. ……………………………………………….. 1.6. Ajouter un nouveau fichier dans le projet. 1.7. Configuration de l’affichage. ……………………………………………………………. 1.8. Connexion du PC avec la carte de développement : Utilisation de l’ICD2. 1.9. Compilation. ……………………………………………………………………………………. 1.10. Les différents modes d’utilisation de MPLAB. 1.10.1. Le mode SIMULATION. ………………………………………………………………. P.2 p.4 P.5 p.6 P.7 P.8 p.9 P.10 A) Utilisation des stimulus pour simuler les entrées numériques. B) Utilisation de l’analyseur logique : Lancement par « view Simulator Logic Analyzer » p.12 C) Observation du code assembleur et machine du programme : ………….. p.14 1.10.2. Le mode DEBUGGER. …………………………………………………………………. 1.10.3. Le mode PROGRAMMER. ………………………………………………………….. P.15 p.16 2. DEVELOPPEMENT EN LANGAGE C SOUS MPLAB AVEC LE COMPILATEUR C18. ..p.17 2.1. Paramétrage des bits de configuration. 2.2. Fréquence d’oscillation et de cycle. 2.3. Le compilateur C18 et ses librairies. …………………………………………………. 2.3.1. La librairie du C18 (fonctions fournies par le compilateur). 2.3.2. Accès aux registres du PIC et aux bits avec le C18. 2.3.3. Initialisation des bits de configuration du PIC. 2.3.4. Quelques règles de programmation. 2.3.5. Les types des variables avec le C18. ……………………………………………. 3. CARTE DE DEVELOPPEMENT. ……………………………………………………………….. P.18 P.19 p.20 1 1. UTILISATION DE MPLAB. 1.1. Organisation de l’espace de travail. Créer un dossier « Projets MPLAB » dans « mes documents » Dans lequel seront placés tous vos documents du module II2. Au début de chaque nouveau TP, vous créerez un sous-dossier « TPi » (Ex. : TP1 pour le premier TP) dans lequel seront placés tous les fichiers du projet générés par MPLAB. Dans ce dossier vous créerez un sous-dossier « sources » dans lequel seront placés tous les fichiers sources de vos programmes. \Mes documents \Projets MPLAB \TP1 \Sources TP1.c TP1.h config.h \TP2 \TP3 ..... TP1.mcp TP1.mcp TP1.mcw Après avoir lancé MPLAB IDE de Microchip : 1.2. Créer un projet (Project Wizard) En sélectionnant « project wizard » dans le menu « project » Sélectionner le PIC utilisé Ici : PIC18F4550 2 1 - Sélectionner le langage de développement : Microchip C18 Toolsuite : pour programmer en C Microchip MPASM Toolsuite : pour programmer en assembleur 2 – Vérifier qu’il n’y a pas de croix sur les outils de compilation. S’il y a une croix pour un outil, sélectionner et indiquer dans « location » l’emplacement où se trouve l’outil. MPASM C:\mcc18\mpasm\MPASMWIN.exe MPLINK C:\mcc18\bin\mplink.exe MPLAB C18 C:\mcc18\bin\mcc18.exe MPLIB C:\mcc18\bin\mplib.exe Mes documents\projets MPLAB\TP1\TP1 3 – Indiquer le chemin et le nom du projet. !!! Le projet doit se trouver dans « mes documents\projets MPLAB\TPi\ et se nommer TPi Vous devez obtenir cette fenêtre (dans la fenêtre principale). 3 1.3. Configurer les chemins d’accès des outils du compilateur C18. Ouvrir la fenêtre qui permet cette configuration. Choisir le langage et déployez le menu (en cliquant sur les (+). Sélectionner alors chaque outil (dans executables) et renseigner dans « location » l’emplacement (voir ci-dessous). Faire de même avec les dossiers de recherche (Default Search Paths..) 4 Exécutables : MPASM C:\mcc18\mpasm\MPASMWIN.exe MPLINK C:\mcc18\bin\mplink.exe MPLAB C18 C:\mcc18\bin\mcc18.exe Default Search Paths & Directories : Output Directory Out Intermediates Directory Out Include Search Path C:\mcc18\h MPLIB C:\mcc18\bin\mplib.exe Library Search Path C:\mcc18\lib Linker-Script Search Path C:\mcc18\lkr 1.4. Configurer les options de compilation. En lançant « Build options » : menu Project ou raccourci Cliquer sur le bouton "Suite Defaults" pour placer les directories par défaut (voir page précédente). - Vérifier les chemins 5 1.5. Déclaration du mode de jeu étendu. 2 modes de fonctionnement possible : o mode non étendu (jeu d'instruction réduit) o mode étendu (Extended mode) ce qui permet l'optimisation du code surtout dans le cas des pointeurs en C. Dans la même fenêtre (Buid Options) sélectionner « MPASM/C18 Suite » Puis cocher la case « extented mode » 1.6. Ajouter un nouveau fichier dans le projet. Rentrer dans le dossier « Sources » Puis saisir le nom du fichier à créer (nom.c si source c, nom.h si header, …) 6 Le fichier s’ouvre et est bien intégré au projet. Remarque : pour ajouter un fichier existant dans le projet : cliquer à droite sur le dossier « Source Files » dans la fenêtre de navigation du projet. Puis rechercher l’emplacement du fichier et le sélectionner. 1.7. Configuration de l’affichage. Afin de rendre l'écriture et la lecture des fichiers plus agréables, il peut être opportun de définir quelques propriétés sur la feuille de travail dans l'environnement MPLAB IDE. Clic droit n’importe où dans la fenêtre d’un fichier ouvert puis Properties… 7 Configurer de cette manière les paramètres généraux puis les paramètres des fichiers C. 1.8. Connexion du PC avec la carte de développement : Utilisation de l’ICD2. L'ICD2 est un "Programmeur / Débogueur" de chez Microchip et utilisable dans l'environnement de travail MPLAB. Câble USB Cordon RJ11 Alimentation 9V de la Carte de développement Carte de développement 8 Très important : Il est important de suivre la procédure suivante lors de l'utilisation de l'ICD2 avec MPLAB IDE 1°/ - connecter l'ICD2 au PC 2°/ - attendre quelques secondes le temps que l'USB soit reconnue par le PC 3°/ - alimenter la carte de développement 4°/ - connecter la carte à l'ICD2 avec le câble RJ11 5°/ - ouvrir le projet MPLAB IDE seulement maintenant et surtout pas avant 6°/ - sélectionner le debuggeur ou le programmeur ATTENTION : NE PAS DEBRANCHER L'ICD2 DU PC LORSQUE MPLAB EST OUVERT SINON DECONNECTER L'ICD2 ET REFAIRE LES 6 ETAPES PRECEDENTES EN DERNIER LIEU SI VOTRE CONNEXION N'EST TOUJOURS PAS RETABLIE VOUS DEVEZ REBOOTER LE PC 1.9. Compilation. Project Build All, ou Ctr+F10 ou icône dans la barre des tâches 1.10. Les différents modes d’utilisation de MPLAB. Il existe trois modes d’utilisation de MPLAB : - Le mode simulation : il permet de lancer et simuler le programme pour le tester, sans matériel (pas de carte de développement). Le mode « debugger » : il permet de tester le programme sur la carte de développement. On peut sur le PC : visualiser l’état de variables, interrompre le programme ou l’exécuter pas à pas, etc. … 9 - Le mode « Programmer » : il permet de faire exécuter le programme sur la carte de développement mais en autonomie (sans avoir de contrôle depuis le PC). Dans les 2 premiers modes, on contrôle l’exécution du programme depuis MPLAB : Pause Step Into Step out Breakpoints Par le menu Debugger ou : Run Animate Step over Reset 1.10.1. Le mode SIMULATION. Ce mode permet de tester le programme sans utiliser de matériel : Il contient une fenêtre "Watch" qui permet de visualiser le contenu des registres et des variables (contenu de la RAM). On peut placer des points d’arrêt dans le programme "Break Point". Il contient une fonction "Stimulus" qui permet de simuler les entrées numériques. Il contient un analyseur logique "Simulator Logic Analyzer" qui permet de visualiser les signaux de sortie du microcontrôleur. Debugger Select Tool MPLAB SIM A) Utilisation des stimulus pour simuler les entrées numériques. Dans l’exemple, une fenêtre watch a été ouverte par « View watch » et on visualise l’état du PORTB et du PORTD. PORTB est l’entrée numérique, PORTD est la sortie. Dans le programme, PORTD = PORTB continuellement. Pour forcer l’état d’entrées numériques (PORTB ici), on doit créer un espace de travail pour stimulus 10 On fixe l’état que l’on veut voir appliqué à l’entrée, puis on appuie sur le bouton de gauche (>) (fire Button) On avance d’un pas, puis l’état de l’entrée a été appliqué !! 11 Si on remet à 0 RB1 puis à 1 RB2 B) Utilisation de l’analyseur logique : Lancement par « view Simulator Logic Analyzer » Dans l’exemple ci-dessous, le programme met à 1 puis à 0 la sortie RD0, continuellement. On va donc observer l’évolution dans le temps de ce signal grâce à l’analyseur logique. 12 On se place sur la première instruction du programme On avance pas à pas dans le programme, le chronogramme du signal se construit à chaque cycle d’horloge. 13 C) Observation du code assembleur et machine du programme : Exemple : le programme recopie PORTB dans PORTD continuellement. On se place sur la première instruction du programme : puis « view Program Memory » Dans ce cas, on observe directement le contenu de la mémoire programme (mais pas les instructions en C) 14 OU « view Disassembly Programme » Dans ce cas, on peut observer la traduction directe du langage C en assembleur puis en code machine. Attention ! Dans ce cas, les instructions ne sont pas forcément dans l’ordre établi dans la mémoire : ex. : l’instruction de l’adresse 00E8 se trouve entre 00E2 et 00E4 (au niveau du while…) En réalité elle se trouvera dans la mémoire au niveau de l’accolade fermée du while… 1.10.2. Le mode DEBUGGER. Debugger Select Tool MPLAB ICD2 Pour lancer ce mode, il faut au préalable avoir branché l’ICD2 et la carte de développement !!! Une fenêtre nous indique que le composant est prêt ! Pour charger le programme dans le composant, on lance « Debugger Program » Comme pour le mode de simulation, on peut placer des points d’arrêt, faire du pas-à-pas, visualiser dans une fenêtre watch (View Watch) les valeurs de registres et/ou de variables, … 15 1.10.3. Le mode PROGRAMMER. Pour lancer ce mode, il faut au préalable avoir branché l’ICD2 et la carte de développement !!! Une fenêtre nous indique que le composant est prêt ! Pour charger le programme dans le composant, on lance « Programmer Program » Ou encore Pour que le programme se lance, il faut alors enlever le cordon RJ11. On peut effectuer un Reset en appuyant sur le bouton poussoir prévu à cet effet sur la carte de développement ! 16 2. DEVELOPPEMENT EN LANGAGE C SOUS MPLAB AVEC LE COMPILATEUR C18. 2.1. Paramétrage des bits de configuration. Ces bits servent à configurer le µcontrôleur, notamment réglage de l’horloge, etc…. Il faut créer un fichier « config.h » dans lequel nous allons fixer tous les bits de configuration. Ce fichier est à inclure dans le fichier principal : #include "config.h" Dans ce fichier il faut utiliser la directive du processeur en C18 : #prama config En TP, on utilisera la configuration suivante : // *********************************************************************************** // Bit de Configuration du Microncontroleur : PIC 18F4550 : fichier "config.h" // *********************************************************************************** #pragma config FOSC = HSPLL_HS // HS oscillator avec PLL, HS utilisé par USB #pragma config PLLDIV =1 // PLLDIV = 1 #pragma config CPUDIV = OSC1_PLL2 // CPUDIV = Source #pragma config USBDIV =2 // Source Horloge USB = 96 MHz PLL #pragma config MCLRE #pragma config XINST #pragma config DEBUG #pragma config CCP2MX = ON = ON = ON = ON // MCLR pin enabled; RE3 input pin disabled // Configure le microcontrôleur jeu d'instructions étendu // Réserve les bits RB6 et RB7 pour le débogueur // CCP2 Connecté sur RC1 #pragma config PWRT #pragma config ICPRT = OFF // Désactivation du Power On Reset = OFF // Bit de Débogage dédié uniquement présent sur // boîtier 44 broches TQFP #pragma config LVP = OFF // Désactive l'alimentation unique pour programmer // RB5 peut être utilisé normalement // La tension sur MCLR varie entre 9V et 13V // durant la programmation #pragma config BOR = OFF // Désactive l'alimentation unique pour programmer #pragma config BORV =3 // Détection de la tension minimale #pragma config WDT = OFF // Arrêt du WatchDog #pragma config PBADEN = OFF // PORTB<4:0> configurés en Digital au Reset #pragma config FCMEN = OFF // Pas de test de défaillance de l'horloge #pragma config IESO = OFF // Pas d'autorisation de changement d'oscillateur #pragma config LPT1OSC = OFF #pragma config STVREN = OFF // Désactivation du Reset sur dépassement de pile // *********************************************************************************** 2.2. Fréquence d’oscillation et de cycle. La carte est muni d’un quartz de 4 MHz, avec la configuration ci-dessus (config.h), on passe par une PLL interne pour obtenir une fréquence de 96MHz que l’on divise par 2 => on obtient une fréquence d’oscillation de : Fosc = 48MHz. Il faut 4 périodes d’oscillation pour effectuer un cycle (voir Chapitre 1 (architecture PIC) page 6). => Fcycle = Fosc / 4 => Fcycle = 12MHz. 17 2.3. Le compilateur C18 et ses librairies. 2.3.1. La librairie du C18 (fonctions fournies par le compilateur). Le fichier d’aide sur les librairies se trouve dans le fichier : C:\mcc18\doc\hlpC18Lib.chm 2.3.2. Accès aux registres du PIC et aux bits avec le C18. Tous les registres et les bits contenus dans la documentation pdf du microcontrôleur sont rassemblés sous forme de structures et définis dans le fichier d'en-tete de Microchip <p18cxxx.h>. Il faut donc inclure ce fichier en début de programme : #include <p18cxxx.h> Pour accéder au registre entier ou à un bit du registre, il suffit de regarder la documentation technique du PIC afin de connaître les noms des registres et des bits du registre. Ex. : Ex. : Ex. : L’accès à un registre du PIC se fait directement en utilisant son nom : PORTD = 0x1A ; // force à 0001 1010 les 8 bits du portD L’accès à un bit d’un registre du PIC se fait en écrivant : nom_du_registre_bits.nom_du_bit TRISDbits.TRISD3 = 0 ; // force à 0 le bit TRISC3 du registre TRISC PORTDbits.RD3 = 1 ; // force à 1 le bit RD3 du registre PORTD. 2.3.3. Initialisation des bits de configuration du PIC. Il suffit d’inclure dans le fichier principal (contenant le void main() ) le fichier « config.h » créé dans le projet (voir chapitre 2.1 ci-dessus). L’ « include » doit se trouver après celui du fichier p18cxxx.h. Ex. : #include <p18cxxx.h> // pour pouvoir utiliser directement les noms des registres #include "config.h" // configure le PIC (horloge, ...) 2.3.4. Quelques règles de programmation. !! Chaque fichier source doit se terminer par une ligne vide. Pour être sûr qu’il y a une ligne vide, il est utile d’afficher le n° de ligne (chap. 1.7 ci-dessus) !! Le PIC ne contient pas de système d’exploitation. Le programme chargé ne doit donc jamais se terminer car sinon le compteur programme va exécuter les instructions qui suivent le programme dans la mémoire programme. On trouvera donc toujours une boucle infinie dans chaque programme. 18 Ex. : void main ( ) { init_ports ( ) ; while ( 1) { ……. // initialisation des ports d’E/S (une seule fois au début du programme // boucle avec une condition toujours vraie => infinie !! // instructions du programme exécutées en boucle ! } } 2.3.5. Les types des variables avec le C18. Ce tableau est tiré de la documentation du compilateur C18 contenue dans : C:\mcc18\doc\ hlpC18ug.chm 19 3. CARTE DE DEVELOPPEMENT. 20 21
© Copyright 2025 ExpyDoc