- Matériaux nécessaires:
- Mémoire flash:
- ICSP (programmation série en circuit):
- Circuit et matériel:
- Graver le code à l'aide de MPLAB IPE:
Dans nos deux didacticiels précédents, nous avons discuté de la façon de démarrer avec PIC en utilisant le compilateur MPLABX et XC8, nous avons également créé notre premier programme de clignotement de LED avec PIC et l'avons vérifié par simulation. Il est maintenant temps pour nous de mettre la main sur le matériel. Dans ce tutoriel, nous allons construire un petit circuit sur une carte Perf pour faire clignoter la LED à l'aide de PIC. Nous allons vider le programme sur notre microcontrôleur PIC et vérifier le clignotement de la LED. Pour programmer le PIC MCU, nous utiliserons MPLAB IPE.
Matériaux nécessaires:
Comme indiqué dans notre didacticiel précédent, nous aurons besoin des matériaux suivants:
- PicKit 3
- PIC16F877A IC
- Support IC à 40 broches
- Conseil Perf
- OSC cristal 20 MHz
- Broches Bergstick femelle et mâle
- Condensateur 33pf - 2Nos, 100 uf et 10 uf cap.
- Résistance 680 ohms, 10K et 560ohm
- LED de n'importe quelle couleur
- 1Kit de soudure
- IC 7805
- Adaptateur 12V
Que se passe-t-il quand on "brûle" un microcontrôleur !!
Il est courant de télécharger le code dans un MCU et de le faire fonctionner à l'intérieur du MCU.
Pour comprendre cela, jetons un œil à notre programme
Comme nous pouvons le voir, ce code est écrit en langage C et cela n'aura aucun sens pour notre MCU. C'est là que la partie de notre compilateur entre en jeu; un compilateur est celui qui convertit ce code en une forme lisible par machine. Cette forme lisible par machine s'appelle le code HEX, chaque projet que nous créons aura un code HEX qui sera dans le répertoire suivant
** Votre emplacement ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Si vous êtes tellement intéressé de savoir à quoi ressemble ce code HEX, ouvrez-le simplement à l'aide du bloc-notes. Pour notre programme Blink, le code HEX ressemblera à ceci:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Il existe des moyens de lire ceci et de le comprendre et de l'inverser en langage d'assemblage, mais cela est complètement hors de portée de ce didacticiel. Donc, pour le mettre simplement en un mot; le HEX est le résultat logiciel final de notre codage et c'est ce qui sera envoyé par MPLAB IPE pour graver le MCU.
Mémoire flash:
Le code HEX est stocké dans la MCU dans un endroit appelé mémoire Flash. La mémoire flash est l'endroit où notre programme sera stocké à l'intérieur du MCU et exécuté à partir de là. Une fois que nous avons compilé le programme dans notre MPLABX, nous aurions obtenu les informations suivantes sur le type de mémoire sur la console de sortie
Puisque nous venons de compiler un petit programme clignotant à LED, le résumé de la mémoire montre que nous venons de consommer 0,5% de l'espace programme disponible et 1,4% de l'espace Data.
La mémoire du microcontrôleur PIC16F877 est essentiellement divisée en 3 types:
Mémoire de programme: Cette mémoire contient le programme (que nous avions écrit), après l'avoir gravé. Pour rappel, Program Counter exécute les commandes stockées dans la mémoire du programme, les unes après les autres. Depuis que nous avons écrit un tout petit programme, nous n'avons consommé que 0,5% de l'espace total. Il s'agit d'une mémoire non volatile, ce qui signifie que les données stockées ne seront pas perdues après la mise hors tension.
Mémoire de données: Il s'agit d'un type de mémoire RAM, qui contient des registres spéciaux tels que SFR (registre de fonction spéciale) qui comprend la minuterie de surveillance, la réinitialisation de Brown out, etc. et GPR (registre à usage général) qui comprend TRIS et PORT, etc. Les variables qui sont stockées dans la mémoire de données pendant le programme sont supprimés après avoir éteint le MCU. Toute variable déclarée dans le programme sera dans la mémoire de données. C'est aussi une mémoire volatile.
EEPROM de données (mémoire morte programmable effaçable électriquement): Une mémoire qui permet de stocker les variables suite à la gravure du programme écrit. Par exemple, si nous attribuons une variable «a» pour y enregistrer une valeur de 5 et la stocker dans l'EEPROM, ces données ne seront pas perdues même si l'alimentation est coupée. Ceci est une mémoire non volatile.
La mémoire de programme et l'EEPROM sont des mémoires non volatiles, appelées mémoire flash ou EEPROM.
ICSP (programmation série en circuit):
Nous programmerons notre PIC16F877A en utilisant l'option ICSP disponible dans notre MCU.
Maintenant, qu'est-ce que ICSP?
ICSP est un moyen simple qui nous aide à programmer un MCU même après qu'il est placé à l'intérieur de notre tableau de projet. Il n'est pas nécessaire d'avoir une carte de programmation séparée pour programmer le MCU, tout ce dont nous avons besoin est de 6 connexions du programmeur PicKit3 à notre carte comme suit:
1 |
VPP (ou MCLRn) |
Pour entrer en mode de programmation. |
2 |
Vcc |
Broche d' alimentation 11 ou 32 |
3 |
GND |
Ground PIN 12 ou 31 |
4 |
PGD - Données |
RB7. PIN40 |
5 |
PGC - Horloge |
RB6. PIN 39 |
6 |
PGM - Activation LVP |
RB3 / RB4. Pas obligatoire |
ICSP convient à tous les packages PIC; tout ce dont nous avons besoin est de retirer ces cinq broches (la 6ème broche PGM est facultative) du MCU à Pickit3 comme indiqué dans l'image ci-dessous.
Circuit et matériel:
Maintenant, nous avons notre code HEX prêt et nous savons également comment connecter notre PicKit 3 à notre PIC MCU en utilisant ICSP. Alors, allons-y et soudons le circuit à l'aide des schémas ci-dessous:
Dans le circuit ci-dessus, j'ai utilisé un 7805 pour réguler la sortie 5V de mon PIC MCU. Ce régulateur sera alimenté par un adaptateur 12V Wall Mart. La LED ROUGE est utilisée pour indiquer si le PIC est alimenté. Le connecteur J1 est utilisé pour la programmation ICSP. Les broches sont connectées comme indiqué dans le tableau ci-dessus.
La première broche MCLR doit être maintenue haute avec l'aide d'un 10k par défaut. Cela empêchera le MCU de se réinitialiser. Afin de réinitialiser le MCU, la broche MCLR doit être maintenue à la masse, ce qui peut être fait à l'aide du commutateur SW1.
La LED est connectée à la broche RB3 via une résistance de valeur 560 ohms (voir calculateur de résistance LED). Si tout va bien une fois que notre programme est téléchargé, ce voyant devrait clignoter en fonction du programme. L'ensemble du circuit est construit sur Perfboard en soudant tous les composants dessus, comme vous pouvez le voir sur l'image en haut.
Graver le code à l'aide de MPLAB IPE:
Pour graver le code, suivez les étapes ci-dessous:
- Lancez MPLAB IPE.
- Connectez une extrémité de votre PicKit 3 à votre PC et l'autre extrémité à vos broches ICSP sur la carte de performance.
- Connectez-vous à votre appareil PIC en cliquant sur le bouton de connexion.
- Recherchez le fichier Blink HEX et cliquez sur Programme.
Si tout se passe comme prévu, vous devriez voir le message de réussite à l'écran. Consultez le code et la vidéo ci-dessous pour une démonstration complète et utilisez la section des commentaires en cas de doute.
Je vous remercie!!!
Rencontrons-nous dans le prochain tutoriel où nous jouerons avec plus de LED et un interrupteur.