Regardez le tutoriel vidéo


L’objectif de ce cours est de vous apprendre à développer des systèmes électroniques basés sur des microcontrôleurs en utilisant le compilateur Microchip XC8.

MPLAB® X IDE est la nouvelle IDE (Integrated Development Environment) de Microchip et fonctionne sur des ordinateurs avec Windows®, Mac OS® ou Linux® pour développer des applications pour les microcontrôleurs PIC et remplace tous les anciens compilateurs MPLAB® C et HI-TECH.

XC8 est le nouveau compilateur C pour les microcontrôleurs PIC10, PIC12, PIC14, PIC16 et PIC18. Ce compilateur offre différents niveaux d’optimisation en fonction de vos besoins avec des téléchargements GRATUITS disponibles.

Vous pouvez télécharger une copie gratuite de MPLAB® X IDE et du compilateur XC8 à partir du site Web de Microchip.
Vous pouvez également télécharger le Guide de l’utilisateur du compilateur Microchip XC8 (MPLAB® XC8 Getting Started Guide en Anglais).
Pour les microcontrôleurs PIC32, vous pouvez télécharger le compilateur XC32 et pour les microcontrôleurs PIC24 et dsPIC, vous pouvez télécharger le compilateur XC16.

Créer un nouveau Projet

Nous allons créer un programme qui permet de faire clignoter une led connectée à la broche PORTB.0 avec un intervalle de 1 seconde. Le projet sera nommé « Flashing_LED« .

En supposant que vous avez déjà installé la dernière version du MPLAB X IDE et du compilateur XC8, vous pouvez commencer un nouveau projet en suivant ces quelques étapes ci-dessous illustrées par des captures d’écran. Nous allons utiliser PIC18F2220, mais les mêmes procédures peuvent être appliquées pour un autre modèle de microcontrôleur PIC.

Après ouverture du logiciel MPLABX (éditeur ou IDE) il nous faut créer un nouveau projet.
Le logiciel est en Anglais, nous allons proceder avec quelques commentaires en français.
Dans le menu « File » cliquer sur « New Project » ou autre possibilité en cliquant sur l’icône correspondant ou directement la combinaison de touches « ctrl + Maj + N ».

Dans la fenêtre qui s’ouvre il nous faut choisir : « Microchip Embedded » et « Standalone Project » puis « Next ».

Choisissez la famille PIC. Dans notre cas, car nous voulons utiliser PIC18F2220, nous allons sélectionner le Advanced 8-bit (PIC18)
Sélectionnez le PIC à utiliser. Dans notre cas, nous allons sélectionner PIC18F2220. Ensuite, cliquez sur « Next ».

Sélectionnez le PIC à utiliser dans la liste. Dans notre cas, nous allons sélectionner PIC18F2220. Puis cliquez sur  « Next ». Choisissez le matériel utilisé pour la programmation et le debug, nous allons utiliser Pickit3. Cliquez « Next ».

Tous les compilateurs Microchip installés sur votre ordinateur seront affichés ici. Sélectionnez XC8. Si vous ne le voyez pas, cela signifie que vous ne l’avez pas encore installé. Accédez au site Web Microchip pour installer un compilateur gratuit qui est entièrement fonctionnel mais sans optimisation de code. Cliquez sur « Next ».

Choisissez le nom du projet et le répertoire ou seront crée les fichiers correspondants en cliquant sur le bouton « Browse ». Cliquez sur « Finish » pour fermer l’assistant.


Configurer le microcontrôleur

Avant d’écrire le programme il faut configurer le microcontrôleur d’abord (type horloge, fréquence d’horloge, …..). C’est très important car le processeur risque de fonctionner de manière imprévisible ou ne pas fonctionner du tout.

Cliquez sur le menu « Window »,puis « Pic Memory Views » et enfin « Configuration Bits » pour obtenir une fenêtre qui permet de configurer le microcontrôleur.

Les réglages importants sont les sources d’horloge (oscillateur), la basse tension et la réinitialisation (MCLR, Watchdog timer …).
Activez toujours ce dont vous avez besoin et désactivez le reste.

C’est toujours recommandé de désactiver la programmation a basse tension à moins que c’est nécessaire pour éviter les réinitialisations possibles du processeur.

Pour obtenir une bonne configuration, c’est conseillé de lire le datasheet du microcontrôleur. Dans l’exemple ci dessous nous avons choisi: l’horloge interne donc pas besoin d’un oscillateur à cristaux externes, le watchdog est desactivé, la pin reset (MCLRE) desactivé donc pas nécessaire de réinitialiser le PIC avec le MCLR et pas besoin de connecter une résistance aussi, …

Cliquer sur « Generate Source Code to Output » pour obtenir dans un nouvelle fenêtre le résultat suivant:

Copiez le code généré et collez-le dans le fichier « header » ou de préférence dans le fichier « main ». le résultat obtenu est:

Vous pouvez également spécifier la fréquence de l’oscillateur avec la commande #define _XTAL_FREQ. La commande suivante ci-dessous définira la fréquence de l’oscillateur interne à 8MHz.

Une autre option consiste à coder les bits de configuration dans le fichier. Voici un exemple configuration à l’aide de la commande #pragma config:

En plaçant l’une de ces instructions de configuration #pragma après les instructions #include, c’est la même chose que de le faire avec le menu.
Les paramètres de configuration pour n’importe quel processeur PIC18 se trouvent dans le PIC18 Configuration Settings Addendum.

Paramètres d’horloge

Les paramètres de l’oscillateur dépendent de la fréquence de l’horloge, de la source d’horloge (cristal, RC …) et le choix d’utiliser une horloge interne ou externe. Les paramètres typiques de l’oscillateur sont XT, HS, EC, RC et INT.

Les réglages XT et HS sont destinés à être utilisés avec des oscillateurs à cristaux externes, XT est utilisé pour des cristaux de 4 MHz et moins, HS pour 4 MHz et plus. EC est destiné à être utilisé avec une source d’horloge externe TTL / CMOS. RC permet d’utiliser un résonateur RC externe (généralement 8 MHz et moins) et INT spécifie l’oscillateur interne des processeurs si équipé.
Cette figure montre comment un cristal peut être utilisé comme source d’horloge.

Vérifiez toujours le datasheet (la feuille de données) du PIC pour obtenir les valeurs précises des condensateurs C1 et C2 de l’oscillateur. Une capacitance élevée augmente la stabilité de l’oscillateur, mais augmente également le temps de démarrage.
Le tableau ci-dessous donne les valeurs recommandées.

Réinitialisation d’un microcontrôleur

Lorsqu’un microcontrôleur est réinitialisé, il démarre l’exécution du programme depuis le début du programme (adresse 0x0000).

Il existe des moments où une réinitialisation est nécessaire, cela peut être fait automatiquement (lorsqu’un microcontrôleur est dans une boucle sans fin pour éviter le gel, très basse tension pour éviter un fonctionnement inattendu …) ou même manuellement quand un utilisateur veut forcer au microcontrôleur à redémarrez son programme.
Ces opérations suivantes peuvent réinitialiser le microcontrôleur:

  • POR (Power On Reset: Réinitialisation suite a la mise sous tension)
  • MCLR reset
  • WDT reset (Watchdog timer: quand un microcontrôleur est dans une boucle sans fin pour éviter le gel)
  • BOR (Brown-out reset: Réinitialisation suite à une très basse tension  )
  • Reset instruction (instruction de réinitialisation)
  • Stack full reset
  • Stack underflow reset

Habituellement, les types de réinitialisation couramment utilisés sont le POR et la réinitialisation externe à l’aide de la broche MCLR.
La remise à zéro est générée automatiquement lorsque la tension d’alimentation est appliquée à la puce.
La broche MCLR doit toujours être connectée à la tension d’alimentation directement ou de préférence par une résistance de 10K.
Pour réinitialiser manuellement le microcontrôleur, le MCLR peut être mis à la terre, normalement avec un bouton-poussoir.
Si une réinitialisation manuelle n’est pas nécessaire, le MCLR peut être désactivé dans le logiciel.

Cette figure ci-dessous montre un circuit de réinitialisation.

Créer fichier principale « main.c »

Cliquez avec le bouton droit de la souris sur Fichiers sources, puis Nouveau, puis sélectionnez Fichier principal C. C’est ici où nous allons écrire notre programme principal.

Donnez un nom au fichier C, de préférence identique au nom du projet. Cliquer « Finish ».

Nous allons écrire le code pour clignoter une LED connectée à la pin 0 du PORTB comme indiqué sur la figure ci-dessous.

Faire clignoter une led est souvent le premier programme quand on aborde la programmation des microcontrôleurs.
Ce petit programme est l’occasion de présenter quelques notions sur le langage C utilisé pour les microcontrôleurs PIC de Microchip

Dans le fichier principal C, n’oubliez pas d’inclure notre fichier header ou tout autre fichier C que vous avez utilisé avec vos paramètres de bits de configuration comme indiqué à la ligne 11 ci-dessous.

Transformer le programme écrit « C » en un fichier « hex »

Nous allons transformer le programme écrit « C » en un fichier « hex » compatible avec le microcontrôleur. Cliquer sur « Run » et puis sur  « Build Project(Flashing_LED) ». S’il n’y a pas d’erreurs, la compilation doit réussir.

Pour obtenir le fichier Hex, ouvrez votre dossier de projet, dist, défaut, puis production. vous pouvez maintenant télécharger votre fichier Hex dans votre PIC avec votre programmeur

Clignote une LED avec MPLAB Code Configurator

Le MPLAB® Code Configurator (MCC) est un configurateur graphique de MPLAB X. Ce plugin permer de générer automatiquement le code en fonction des paramètres et des sélections effectués dans l’interface utilisateur graphique (GUI). L’avantage de MCC, il peut générer des codes non seulement pour PIC18F, mais aussi pour une large gamme de PIC incluant les séries PIC16F et PIC24.

Pour en savoir plus, lisez l’article: MPLAB® Code Configurator

Regardez le tutoriel vidéo


Vous trouverez ci-dessous la configuration des broches PORTB.0 à l’aide du Configurateur de code MPLAB (MCC). Dans cet exemple, nous utilisons un modèle PIC plus récent, le PIC18F26K20.

Voici le fichier Main.c:

Vous pouvez télécharger tous les fichiers de projet (code source MPLAB XC8 et design protéique Schematic) ci-dessous. Tous les fichiers sont compressés, vous devrez les décompresser (Téléchargez une version gratuite de l’utilitaire Winzip pour décompresser les fichiers).  

Télécharger: Flashing_LED.X

Télécharger: Flash LED Proteus  

Télécharger MPLAB Projet avec Code Configurator: Blink_LED

Télécharger Proteus Schéma avec PIC18F26K20: Blinking_LED Proteus