- Se préparer pour la programmation:
- Création d'un nouveau projet à l'aide de MPLAB-X:
- Apprendre à connaître les registres de configuration:
- Définition des bits de configuration dans MPLAB-X:
- Programmation de PIC pour faire clignoter une LED:
- Schéma de circuit et simulation Proteus:
Ceci est le deuxième tutoriel de notre série de tutoriels PIC. Dans notre tutoriel précédent Premiers pas avec PIC Microcontroller: Introduction à PIC et MPLABX, nous avons appris les bases de notre microcontrôleur PIC, nous avons également installé le logiciel requis et acheté un nouveau programmeur PicKit 3 que nous utiliserons bientôt. Nous sommes maintenant prêts à commencer avec notre premier programme de clignotement de LED utilisant le PIC16F877A. Nous allons également en apprendre davantage sur les registres de configuration dans ce didacticiel.
Ce tutoriel s'attend à ce que vous ayez installé le logiciel requis sur votre ordinateur et que vous connaissiez quelques notions de base décentes sur le PIC MCU. Sinon, veuillez revenir au didacticiel précédent et commencer à partir de là.
Se préparer pour la programmation:
Depuis que nous avons décidé d'utiliser le PIC16F877A, avec le compilateur XC8, commençons avec leur fiche technique. Je recommande à tout le monde de télécharger la fiche technique PIC16F877A et le manuel du compilateur XC8, car nous y ferons référence fréquemment au fur et à mesure que nous progressons dans notre tutoriel. C'est toujours une bonne pratique de lire la fiche technique complète de n'importe quel MCU avant de commencer à programmer avec lui.
Maintenant, avant d'ouvrir notre MPLAB-X et de commencer la programmation, il y a peu de choses de base dont il faut être conscient. Quoi qu'il en soit, puisque c'est notre premier programme, je ne veux pas vous haranguer avec beaucoup de théorie mais nous nous arrêterons ici et là pendant que nous programmons et je vais vous expliquer les choses en tant que telles. Si vous n'avez pas assez de temps pour lire tout cela, jetez un coup d'œil et sautez dans la vidéo en bas de la page.
Création d'un nouveau projet à l'aide de MPLAB-X:
Étape 1: Lancez l'IDE MPLAB-X que nous avons installé dans la classe précédente, une fois chargé, il devrait ressembler à quelque chose comme ça.
Étape 2: Cliquez sur Fichiers -> Nouveau projet, ou utilisez le raccourci clavier Ctrl + Maj + N. Vous obtiendrez le POP-UP suivant, à partir duquel vous devrez sélectionner Projet autonome et cliquer sur Suivant.
Étape 3: Nous devons maintenant sélectionner notre appareil pour le projet. Tapez donc PIC16F877A dans la section déroulante Sélectionner un périphérique . Une fois cela fait, cela devrait être comme ça, puis cliquez sur Suivant.
Étape 4: La page suivante nous permettra de sélectionner l'outil pour notre projet. Ce serait PicKit 3 pour notre projet. Sélectionnez PicKit 3 et cliquez sur suivant
Étape 5: La page suivante vous demandera de sélectionner le compilateur, sélectionnez le compilateur XC8 et cliquez sur Suivant.
Étape 6: Dans cette page, nous devons nommer notre projet et sélectionner l'emplacement où le projet doit être enregistré. J'ai nommé ce projet comme Blink et l'ai enregistré sur mon bureau. Vous pouvez le nommer et l'enregistrer de la manière que vous préférez. Notre projet sera enregistré dans un dossier avec l'extension .X, qui peut être directement lancé par MAPLB-X. Cliquez sur Terminer une fois terminé.
Étape 7: C'est tout !!! Notre projet a été créé. La fenêtre la plus à gauche montrera le nom du projet (Here Blink), cliquez dessus pour que nous puissions voir tous les répertoires à l'intérieur.
Afin de commencer la programmation, nous devons ajouter un fichier C Main, dans notre répertoire de fichiers Source. Pour ce faire, cliquez simplement avec le bouton droit sur le fichier source et sélectionnez Nouveau -> Fichier principal C, comme indiqué dans l'image ci-dessous.
Étape 8: La boîte de dialogue suivante apparaîtra dans laquelle le nom du fichier C doit être mentionné. J'ai encore nommé dans Blink, mais le choix vous appartient. Nommez-le dans la colonne Nom du fichier et cliquez sur Terminer.
Étape 9: Une fois le fichier principal C créé, l'EDI l'ouvrira pour nous avec quelques codes par défaut, comme indiqué ci-dessous.
Étape 10: Voilà maintenant, nous pouvons commencer à programmer notre code dans le fichier C-main. Le code par défaut ne sera pas utilisé dans nos tutoriels. Alors supprimons-les complètement.
Apprendre à connaître les registres de configuration:
Avant de commencer à programmer un microcontrôleur, nous devons connaître ses registres de configuration.
Alors, quels sont ces registres de configuration, comment et pourquoi devrions-nous les définir?
Les dispositifs PIC ont plusieurs emplacements qui contiennent les bits de configuration ou les fusibles. Ces bits spécifient le fonctionnement fondamental de l'appareil, tel que le mode oscillateur, la minuterie de surveillance, le mode de programmation et la protection par code. Ces bits doivent être définis correctement pour exécuter le code, sinon nous avons un périphérique qui ne fonctionne pas . Il est donc très important de connaître ces registres de configuration avant même de commencer avec notre programme Blink.
Afin d'utiliser ces registres de configuration, nous devons lire la fiche technique et comprendre quels sont les différents types de bits de configuration disponibles et leurs fonctions. Ces bits peuvent être définis ou réinitialisés en fonction de nos exigences de programmation à l'aide d'un pragma de configuration.
Le pragma a les formes suivantes.
#pragma config setting = state-value #pragma config register = valeur
où paramètre est un descripteur de paramètre de configuration, par exemple WDT, et état est une description textuelle de l'état souhaité, par exemple OFF. Considérez les exemples suivants.
#pragma config WDT = ON // activer le minuteur de surveillance #pragma config WDTPS = 0x1A // spécifier la valeur de post-échelle du minuteur
SE DÉTENDRE!!….. RELAX !!…. RELAX !!…...
Je sais que cela nous est trop passé par la tête et que la configuration de ces bits de configuration peut sembler un peu difficile pour un débutant !! Mais ce n'est certainement pas le cas avec notre MPLAB-X.
Définition des bits de configuration dans MPLAB-X:
Microchip a rendu ce processus fatiguant beaucoup plus facile en utilisant des représentations graphiques des différents types de bits de configuration. Alors maintenant, pour les définir, nous devons simplement suivre les étapes ci-dessous.
Étape 1: Cliquez sur Window -> PIC Memory View -> Configuration Bits. Comme indiqué ci-dessous.
Étape 2: Cela devrait ouvrir la fenêtre Bits de configuration en bas de notre IDE, comme indiqué ci-dessous. C'est l'endroit où nous pouvons définir chacun des bits de configuration en fonction de nos besoins. J'expliquerai chacun des bits et son objectif au fur et à mesure que nous progressons dans les étapes.
Étape 3: Le premier bit est le bit de sélection de l'oscillateur.
Le PIC16F87XA peut être utilisé dans quatre modes d'oscillateur différents. Ces quatre modes peuvent être sélectionnés en programmant deux bits de configuration (FOSC1 et FOSC0):
- Cristal LP basse consommation
- Cristal XT / Résonateur
- Cristal / résonateur haute vitesse HS
- RC Résistance / Condensateur
Pour nos projets, nous utilisons un Osc 20Mhz, nous devons donc sélectionner le HS dans la liste déroulante.
Étape 4: Le bit suivant sera notre bit d'activation de l'horloge de surveillance.
Le Watchdog Timer est un oscillateur RC sur puce à fonctionnement libre qui ne nécessite aucun composant externe. Cet oscillateur RC est séparé de l'oscillateur RC de la broche OSC1 / CLKI. Cela signifie que le WDT fonctionnera même si l'horloge sur les broches OSC1 / CLKI et OSC2 / CLKO de l'appareil a été arrêtée. Pendant le fonctionnement normal, une temporisation WDT génère une réinitialisation de l'appareil (Watchdog Timer Reset). Le bit TO dans le registre d'état sera effacé lors d'un délai d'expiration de l'horloge de surveillance. Si la minuterie n'est pas effacée dans notre codage logiciel, l'ensemble du MCU sera réinitialisé à chaque dépassement de la minuterie WDT. Le WDT peut être définitivement désactivé en effaçant le bit de configuration.
Nous n'utilisons pas WDT dans notre programme alors effaçons-le, en sélectionnant OFF dans la liste déroulante.
Étape 5: Le bit suivant sera le bit du minuteur de mise sous tension.
La minuterie de mise sous tension fournit une temporisation nominale fixe de 72 ms à la mise sous tension uniquement à partir du POR. Le Powerup Timer fonctionne sur un oscillateur RC interne. La puce est conservée en réinitialisation tant que le PWRT est actif. La temporisation du PWRT permet au VDD de s'élever à un niveau acceptable. Un bit de configuration est fourni pour activer ou désactiver le PWRT.
Nous n'aurons pas besoin de tels retards dans notre programme, alors désactivons cela également.
Étape 6: Le bit suivant sera la programmation basse tension.
Le bit LVP du mot de configuration permet la programmation ICSP basse tension. Ce mode permet de programmer le microcontrôleur via ICSP à l'aide d'une source VDD dans la plage de tension de fonctionnement. Cela signifie seulement que VPP ne doit pas être amené à VIHH mais peut à la place être laissé à la tension de fonctionnement normale. Dans ce mode, la broche RB3 / PGM est dédiée à la fonction de programmation et cesse d'être une broche d'E / S à usage général. Pendant la programmation, VDD est appliqué à la broche MCLR. Pour entrer en mode de programmation, VDD doit être appliqué au RB3 / PGM à condition que le bit LVP soit défini.
Désactivons LVP pour pouvoir utiliser RB3 comme broche d'E / S. Pour ce faire, désactivez simplement cette option à l'aide de la liste déroulante.
Étape 7: Les bits suivants seront les bits EEPROM et de protection de la mémoire programme. Si ce bit est activé, une fois que le MCU est programmé, personne ne récupérera notre programme à partir du matériel. Mais pour l'instant, laissons tous les trois désactivés.
Une fois les paramètres définis comme indiqué, la boîte de dialogue devrait ressembler à ceci.
Étape 8: Cliquez maintenant sur Générer le code source vers la sortie, notre code sera généré maintenant, copiez-le simplement avec le fichier d'en-tête et collez-le dans notre fichier C Blink.c, comme indiqué ci-dessous.
Voilà notre travail de configuration est terminé. Nous pouvons avoir cette configuration pour tous nos projets. Mais si vous êtes intéressé, vous pouvez jouer avec eux plus tard.
Programmation de PIC pour faire clignoter une LED:
Dans ce programme, nous allons utiliser notre microcontrôleur PIC pour faire clignoter une LED connectée à une broche d'E / S. Jetons un coup d'œil sur les différentes broches d'E / S disponibles sur notre PIC16F877A.
Comme indiqué ci-dessus, le PIC16F877 dispose de 5 ports d'entrée / sortie de base. Ils sont généralement désignés par PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD) et PORT E (RE). Ces ports sont utilisés pour l'interfaçage d'entrée / sortie. Dans ce contrôleur, «PORT A» n'a que 6 bits de largeur (RA-0 à RA-5), «PORT B», «PORT C», «PORT D» n'ont que 8 bits de largeur (RB-0 à RB-7, RC-0 à RC-7, RD-0 à RD-7), «PORT E» n'a que 3 bits de largeur (RE-0 à RE-2).
Tous ces ports sont bidirectionnels. La direction du port est contrôlée à l'aide des registres TRIS (X) (TRIS A utilisé pour définir la direction de PORT-A, TRIS B utilisé pour définir la direction de PORT-B, etc.). Le réglage d'un bit TRIS (X) '1' définira le bit PORT (X) correspondant comme entrée. L'effacement d'un bit TRIS (X) '0' définira le bit PORT (X) correspondant comme sortie.
Pour notre projet, nous devons faire de la broche RB3 du PORT B une sortie pour que notre LED puisse y être connectée. Voici le code pour le clignotement de la LED avec le microcontrôleur PIC:
#comprendre
Nous avons d'abord spécifié la fréquence Crystal externe en utilisant #define _XTAL_FREQ 20000000. Ensuite, dans la fonction void main () , nous avons indiqué à notre MCU que nous allions utiliser le RB3 comme broche de sortie (TRISB = 0X00;) . Puis finalement une boucle while infinie est utilisée pour que le clignotement de la LED continue indéfiniment. Pour faire clignoter une LED, nous devons simplement l'allumer et l'éteindre avec un retard notable.
Une fois le codage terminé, créez le projet à l'aide de la commande Exécuter -> Construire le projet principal. Cela devrait compiler votre programme. Si tout va bien (comme il se doit), une console de sortie en bas de l'écran affichera un message BUILD SUCCESSFUL, comme indiqué dans l'image ci-dessous.
Schéma de circuit et simulation Proteus:
Une fois que nous avons construit un projet et si la construction est réussie, un fichier HEX aurait été généré en arrière-plan de notre IDE. Ce fichier HEX se trouve dans le répertoire ci-dessous
Cela peut varier pour vous si vous avez enregistré dans un autre emplacement.
Maintenant, ouvrons rapidement Proteus que nous avons installé précédemment et créons des schémas pour ce projet. Nous n'allons pas expliquer comment faire cela car cela sort du cadre de ce projet. Mais ne vous inquiétez pas, c'est expliqué dans la vidéo ci-dessous. Une fois que vous avez suivi les instructions et construit les schémas, cela devrait ressembler à ceci
Pour simuler la sortie, cliquez sur le bouton de lecture dans le coin inférieur gauche de l'écran après avoir chargé le fichier Hex. Il devrait faire clignoter la LED connectée au RB3 du MCU. Si vous rencontrez un problème, veuillez regarder la vidéo, si elle n'est toujours pas résolue, utilisez la section des commentaires pour obtenir de l'aide.
Nous avons maintenant réalisé notre premier projet avec un microcontrôleur PIC et vérifié la sortie à l'aide d'un logiciel de simulation. Allez modifier le programme et observez les résultats. Jusqu'à ce que nous nous rencontrions sur notre prochain projet.
Ohh attendez !!
Dans notre prochain projet, nous allons apprendre comment faire fonctionner cela sur un matériel réel. Pour cela, nous aurons besoin des outils suivants pour les garder prêts. Jusque-là, BON APPRENTISSAGE !!
- PicKit 3
- PIC16F877A IC
- Support IC 40 broches
- Conseil Perf
- Cristal OSC 20Mhz
- Broches Bergstick femelle et mâle
- Condensateur 33pf - 2Nos
- Résistance 680 ohms
- LED de n'importe quelle couleur
- Kit de soudure.