Programmation des micro-contrôleurs

Simuler des programmes des microcontrôleurs sous l'environnement de développement intégré MPLAB:

MPLAB IDE est un environnement gratuit de programmation pour les microcontrôleurs de la famille Micro chip. L’environnement intègre un éditeur d’assembleur, un débogueur complet ainsi que tous les outils permettant de gérer les programmateurs de composants. La possibilité d’intégrer un compilateur C dans l’environnement de développement MPLAB s’inscrit directement dans la politique du service qui est d’utiliser des langages de programmation évolués dans les développements en électronique.

Création d'un nouveau projet

  1. Lancer la suite logicielle MPLAB IDE à partir de l’icône qui se trouve sur votre bureau.
  2. Cliquer sur Project >> Project Wizard …
  3. Cliquer sur Suivant > puis sélectionner PIC18F4520 dans le menu déroulant Device.
  4. Cliquer sur Suivant > puis sélectionner « Microchip MPASM Toolsuite » et « MPASM Assembler » afin de pouvoir programmer en Assembleur.
  5. Cliquer sur Suivant > puis dans le champ « Project Name » saisir le nom du projet (ex : interrupteur) et dans le champ « Project Directory » aller chercher à l’aide du bouton « Browse », le dossier créé au début : tp1/interrupteur.
  6. Cliquer sur Suivant > et ajouter les fichiers P18F4520.inc et CONFIG.inc au projet à l’aide du bouton « Add »
  7. Cliquer sur Suivant > puis sur Terminer.

Édition du programme

  1. Créer un nouveau fichier dans le projet, File >> Add New Files to Project… L’enregistrer dans le répertoire projet avec l’extension asm (ex : prog.asm) MPLAB Editor se lance.
  2. Saisir le programme « Interrupteur » et enregistrer.
  3. Penser à ajouter des commentaires au programme pour montrer que vous avez bien compris les différentes instructions. Une ligne de commentaire commence par « ; ».

Compilation

Les sections suivantes fournissent des informations de base sur l'administration du site.

Cliquer sur Project >> Build All … ou sur l’icône de la barre de menu ou encore Ctrl+F10 pour compiler le projet complet. Erreurs et warnings sont signalés dans la fenêtre Output ainsi que le résultat de la compilation SUCCEEDED ou BUILD FAILED. En double-cliquant sur une erreur ou un warning dans la fenêtre Output, vous serez amener directement à la ligne concernée dans votre programme.  

Simulation

Les sections suivantes fournissent des informations de base sur l'administration du site.

Avant d’envoyer un programme au μC, vous pouvez tester son fonctionnement dans le simulateur (Debugger) MPLAB SIM. Pour lancer le simulateur, cliquer sur Debugger >> Select Tool >> MPLAB SIM. Une nouvelle barre d’outils est ajoutée ainsi qu’un onglet « MPLAB SIM » dans la fenêtre Output. Le simulateur fonctionne selon trois modes : 

  1. le mode Step By Step qui permet de faire une exécution pas à pas du programme (vous êtes alors l’horloge du μC).
  2. le mode Animate qui exécute automatiquement le programme mais à une vitesse réduite pour que l’on puisse suivre l'éxécution.
  3. le mode Run où le programme est exécuté automatiquement à la vitesse du PC. Dans les deux premiers modes, nous obtenons des résultats au fur et à mesure de la simulation alors que dans le dernier, les résultats ne sont visibles que lorsque la simulation est stoppée. Dans ce paragraphe, nous nous intéressons aux modes Animate et Step By Step car ils nous permettent de voir qu’elle est l’influence des entrées sur les sorties.
  4. Le réglage de la fréquence de l’oscillateur utilisé se fait dans Debugger >> Settings …. Dans notre cas c’est 4 Mhz.

Entrées : Stimulus

Comme son nom l’indique cette fonctionnalité permet de prévoir les événements d'entrées de manières synchrones (les dates sont connues avant la simulation) et asynchrones (les événements sont déclenchés durant la simulation par l’utilisateur). Les différents événements sont enregistrés dans une table (Workbook). Pour en créer une:

    cliquer sur Debugger >> Stimulus >> New Workbook. Dans le cas, par exemple, où on souhaite créer les événements suivants :
  1. à t = 0, initialisation de RA4 à 1 (bouton S2 relâché),
  2. à t = 10 cycles, on appuie sur S2 (RA4 = 0),
  3. on veut également pouvoir inverser l’état de RA4 quand on le souhaite.

L’onglet « Pin / Register Actions » de la fenêtre « Stimulus » permet la saisie des événements en programmant leurs dates d’arrivée (événements synchrones). Démarche de création d’événements synchrones :

– Ajouter une colonne RA4 au tableau d’événement (bouton « Clic here to Add Signals »)

  1. Rechercher RA4 dans la liste « Available Signals » et l’ajouter à la liste « Selected Signals »
  2. Remplir la table d’événement (Time, RA4) avec (0,1) (10,0) (25,1)
  3. Choisir cyc (cycle) comme base de temps dans menu « Time Units »
  4. Enregistrer la table (bouton « Save Workbook »
L’onglet « Asynch » de la fenêtre « Stimulus » permet de pré-programmer des boutons (colonne « Fire ») à la génération d’événement (événements asynchrones). Démarche de création d’événement asynchrone : tout d'abord il faut Saisir RA4 dans la colonne « Pin/SFR » de la première ligne Le menu de la colonne « Action » propose cinq types d’action :
  1. Set High : RA4 = 1
  2. Set Low : RA4 = 0
  3. Toggle : RA4 = RA4
  4. Pulse High : RA4 = la largeur de l’impulsion est réglée dans les colonnes « Width » et « Units ».
  5. Pulse Low : RA4 =
  6. Choisir « Toggle » pour inverser RA4
  7. Enregistrer la table (bouton « Save Workbook »)
Appliquer l’échéancier d’événement (bouton « Apply ») Après chaque changement dans l’échéancier d’événement, cliquer sur « Apply » afin que ces changements soient pris en compte par la simulation.

Sorties : Watch & Logic Analyzer

Afin de suivre et de visualiser les résultats de simulation, MPLAB SIM intègre divers outils dont :
  1. La fenêtre « Watch » (menu View >> Watch) qui affiche le contenu des différents registres du μC et des différentes variables du programme. La sélection et la validation des registres et variables à afficher se fait à travers les deux menus déroulants et les deux boutons « Add SFR » et « Add Symbol ». Un clic droit sur un des éléments observés permet l’accès à la boîte de dialogue « Properties » afin de régler le format d’affichage de l’élément (ex : Hex, Binary, Single Bit, ...) mais aussi de sauvegarder, exporter, … le tableau « Watch ». Il est aussi possible de faire glisser des éléments de la fenêtre « Editor » vers la fenêtre « Watch ».
  2. La fenêtre « Logic Analyzer » permet l’affichage des éléments logiques (1 bit) en fonction du « Time Base ». Le choix des éléments à afficher se fait à l’aide du bouton « Channels ». Pour le projet « interrupteur », on souhaite afficher : – les registres TRISA et TRISB sous forme hexadécimale – les registres PORTA, PORTB et W sous forme binaire – les bits RA4 et RB0

Simulation du programme en mode Animate

Maintenant que les entrées et sorties de la simulation sont configurées, on peut lancer la simulation. Avant toutes choses, afin d’initialiser le μC, il est nécessaire d’effectuer un « Reset » en cliquant sur le bouton puis cliquer sur le bouton « Animate » et observer les fenêtres « Watch » et « Logic Analyzer ». Arrêter l’animation à l’aide du bouton , faire un nouveau « Reset », relancer l’animation, ouvrir l’onglet « Asynch » de la fenêtre « Stimulus », agir sur RA4 et observer les résultats.

Vous pouvez également faire avancer le programme pas à pas (mode « Step By Step ») avec le bouton « Step

Into » . On notera que les boutons « Step Over » et « Step Out » permettent respectivement une exécution pas

à pas avec une exécution automatique des sous-programmes et une exécution jusqu’à la fin des sous-programmes.

 

 

Programmation des microcontrôleurs 16F8xx

Exemple: 

programme permettant de générer un signal PWM de période 125 µs et avec un rapport cyclique variable en modifiant la valeur de CCPR1L. la valeur de CCPR1L a été fixée à 100. Cette valeur pourra être modifiée pour faire varier le rapport cyclique. vous pouvez visualiser La sortie à l'aide d'un oscilloscope sur la broche 13 du 16F873. (PortC.2)


Void main ()
{
      RISC=0x00 ; // Port C en sortie
      T2CON=0b00000111 ; // prescaler et postscaler =1, timer 2 on 
      PR2=124 ; // définit la période du signal PWM
      CCPR1L=100 ; // au départ la valeur du signal // Modifiez cette valeur pour modifier le rapport cyclique
      CCP1CON=0b00001100 ; //
      CCP1CON.5 :4 = bits de poids fort du cycle = 0, mode PWM
}