guide de developpement pour pic 18f4550 module ii2 sommaire

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