View
190
Download
2
Category
Preview:
Citation preview
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Présentation des microcontrôleurs PIC16F87X
Vous devez avoir avec vous la photocopie de présentation des µC PIC.
La dénomination PIC est sous copyright de MicroChip, les autres fabricants sont dans l'impossibilité d'utiliser ce terme. Les deux premiers chiffres indiquent la catégorie du PIC : ici 16 indique un PIC de la famille Mid-Range (milieu de gamme) qui utilise des mots de 14 bits. Ensuite vous pouvez trouvez la lettre « L » qui indique que le PIC peut fonctionner avec une plage de tension beaucoup plus tolérante.Ensuite vous trouverez les lettres suivantes :• « C » : la mémoire programme est une EPROM ou plus rarement une EEPROM,• « CR » : la mémoire programme est de type ROM,• « F » : la mémoire programme est de type FLASH.
Brochage du PIC16F876Le micro contrôleur PIC16F876 appartient à la famille 16F87X de MICROCHIP. Les caractéristiques du PIC16F876 sont dans la troisième colonne.
Il existe deux types d'architectures pour les microcontrôleurs :1. Architecture de type Von NeuMann (68HC11)
La ROM contient les codes des instructions et les constantes. Par exemple, l'instruction LDAA #10 (charger la constante 10 dans l'accumulateur A) occupe deux adresses en ROM pour y loger le code hexadécimal de l'instruction ou opérande (ici $96) et la constante (ici 10).Le décodage d'une telle instruction nécessite plusieurs cycles d'horloge :- adresse AD sur le bus d'adresse, code $96 sur le bus de données,- adresse AD+A sur le bus d'adresse, valeur 10 sur le bus de données.
2. Architecture de type Harvard (PIC16F876)L'opérande est intégré à l'instruction. Un seul cycle d'horloge par instruction sauf pour les sauts et les branchements qui nécessitent deux cycles. Par exemple, l'instructionMOVLW 10 (charger le registre de travail W avec la constante 10) se décompose en code de l'opérande sur 6 bits et la constante 10 codée sur 8 bits. Le tout forme donc en mémoire programme un mot de 14 bits :instruction movlw -> 110000 00001010 <- constante 10Le jeu d'instructions est réduit (Reduced Instructions Set Computer : RISC) mais la vitesse de fonctionnement est élevée.
Le PIC16F876 est un microcontrôleur RISC d'architecture de type Harvard. Les mémoires programme et données et les bus correspondants sont séparés. Ceci permet au même instant d'exécuter l'instruction à l'adresse courante et de décoder l'instruction suivante (structure de type « pipeline »).
En interne l'horloge est quadriphasée, ce qui signifie que le temps d'exécution d'une instruction est égale à Fosc/4. Si vous utilisez un quartz à 4Mhz, la période sera donc de 250ns et le temps d'exécution pour une instruction sera de 4x250ns = 1us.
Schéma bloc du PIC16F876 et description de chaque brocheOrganisation de la mémoireIl existe trois blocs de mémoire dans un PIC : la mémoire programme, la mémoire de données et la mémoire EEPROM. Deux adresses sont réservées aux vecteur RESET (adresse $0000) et INTERRUPTION (adresse $0004).
Olivier DARTOIS Page 1
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Le reset peut être provoqué par :• la mise sous tension (POR : Power On Reset),• un niveau bas sur la broche MCLR (Master CleaR),• le chien de garde en cas de plantage du programme (WDT : Watch Dog Timer),• en cas de baisse de la tension d'alimentation (BOR : Brown-Out Reset).
Il existe 14 sources d'interruptions possibles (non détaillé ici, reportez-vous à la doc officielle).
Le registre d'options (Option_Reg register)Ce registre sert à positionner un certain nombre d'élément à l'initialisation du PIC. C'est très important car si le PIC est mal initialisé, il ne fonctionnera pas comme vous le souhaitez.Bit 7 : active ou désactive les résistances internes de tirage vers le haut (pull-up).
Les ports d'entrées/sorties et les registres de direction (PORTx et TRISx)Le PIC16F876 est équipé de 22 lignes d'entrées/sorties reparties en trois ports parallèles bidirectionnels :
• 6 lignes sur le port A : RA0 à RA5,• 8 lignes sur le port B : RB0 à RB7,• 8 lignes sur le port C : RC0 à RC7.
La plupart de ces lignes ont une double fonction suivant leur programmation.Le sens de direction des données (entrée ou sortie) est mémorisé dans des registres TRIS (TRansfert Input Set). TRISA est dédié au port A, TRISB au port B et TRISC au port C. Chaque ligne peut être configurés individuellement en entrée ou en sortie.La mise à « 1 » d'un bit du registre TRIS configure la ligne correspondante en entrée, un « 0 » configure la ligne en sortie.Au RESET, toutes les lignes sont configurées en entrées.
Le PORTA et le registre de direction TRISALe port A est un port bidirectionnel à 6 fils. Il cumule les fonctions d'E/S numériques, d'entrées analogiques et entrée du Timer0. Au reset, ces lignes sont en mode analogique.
Le PORTB et le registre de direction TRISBLe port B est un port bidirectionnel à 8 fils. Les lignes RB3,RB6 et RB7 peuvent être utilisées en E/S ou pour la programmation in-situ. Toutes les lignes du port B peuvent être reliées à une résistance de tirage vers le haut (voir registre Option_Reg). Les lignes RB4 à RB7 peuvent déclencher une interruption.
Le PORTC et le registre de direction TRISCLe port C est un port bidirectionnel à 8 fils. Toutes les entrées du port C sont des entrées trigger de schmitt. Ce port peut aussi servir pour le Timer1, la réalisation de signaux PWM (Pulse Width Modulation : modulation à largeur d'impulsions), la communication avec des périphériques I2C et enfin à dialoguer par voie série.
Olivier DARTOIS Page 2
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
TP sur les microcontrôleur PIC16F87X
Pour réaliser ce TP, vous avez besoin :
- du matériel suivant (disponible dans la boite du TP) :
● une carte de développement pour PIC16F876 avec un bloc alimentation ou une pile 9V● une carte interrupteurs et DELs avec une nappe HE10-26● un module ICD-U40 avec un câble USB et un câble RJ12● un module de conversion USB-Série avec un câble USB et une nappe HE10-10● une carte écran LCD graphique monochrome (écran LCD de Nokia 3310) avec boutons, DELs et
encodeur rotatif
- des logiciels suivants :
● PIC C Compiler : édition et compilation de programme en langage C pour les µC PIC,● TinyBootLoader : permet de dialoguer par voie série entre le PC et le PIC. Vos pouvez aussi
utiliser le logiciel HyperTerminal livré en standard avec Windows.
La plupart des logiciels nécessaires à la programmation des PIC sont disponibles sur internet.
Une version de démonstration du compilateur C est disponible à :http://www.ccsinfo.com/picc.shtml
Le programme TinyBootLoader est disponible ici :http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm
Méthode générale pour la programmation d'un PIC
1. Reliez le module ICD-U40 et le PC par l'intermédiaire du câble USB. Connectez le module ICD-U40 à la carte de test par l'intermédiaire du câble RJ12. Connectez si nécessaire la carte inters + dels avec une nappe et les connecteurs HE10-26, enfin alimentez la maquette en 9V (attention à la polarité) et allumez votre PC.Si vous devez dialoguer avec un PC par voie série, connectez le module de conversion USB-Série à la maquette (câble HE10-10) et le PC (câble USB).
2. Saisissez votre code source en langage C dans le logiciel « PIC C Compiler » et sauvegardez-le (Ex: test.c).
3. Compilez votre code source en langage C. Corrigez vos éventuelles erreurs. Si la compilation de votre code source se passe sans problème, vous obtenez un fichier au format HEX (Ex: test.hex).
4. Programmez votre PIC depuis l'environnement de développement.5. Débranchez le câble RJ12. Faire un « reset » du PIC en coupant l'alimentation et en la remettant. Votre
programme s'exécute de manière totalement autonome sinon vérifiez votre code source.
Olivier DARTOIS Page 3
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Utilisation de l'environnement de développement intégré (EDI) du compilateur C pour PIC de CCS
Nous allons présenter dans les pages suivantes l'utilisation de l'environnement intégré de développement en langage C pour PIC de l'éditeur CCS. La référence complète du langage C pour PIC est disponible sur le réseau dans le répertoire « Documents Eleves » puis « TEln » puis « PIC ». Une aide en ligne est aussi intégré au logiciel (en anglais bien sur :-).Pour lancer l'EDI, cliquez sur l'icône « PIC C Compiler » dans le dossier « Réseau Electronique » qui se trouve sur le bureau de Windows. Au lancement, vous obtenez la fenêtre suivante :
Vous remarquez que ce logiciel fonctionne avec un système d'onglet permettant d'accéder aux différentes fonctions de l'environnement de développement.
Cliquez sur la première icône qui représente un dossier ouvert. Puis choisissez « New » puis « Source File ». Vous obtiendrez une fenêtre qui vous demande d'enregistrer un nouveau fichier. Vérifiez que vous êtes bien dans votre répertoire personnel puis tapez le nom de votre programme dans la zone « Nom du fichier » (par ex: test.c) puis validez avec le bouton « Enregistrer ».
Vous obtenez alors la fenêtre suivante :
1. Vérifiez que le nom de votre fichier source apparaît bien (ici : test.c).2. Vous pouvez alors commencer à taper votre code source C dans la zone d'édition. Remarquez que
les lignes sont numérotées automatiquement.3. Quand vous avez fini votre saisie, sauvegardez votre fichier en cliquant sur « Save ».
Olivier DARTOIS Page 4
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Il faut ensuite compiler votre programme, c'est-à-dire convertir le fichier texte en langage C en une suite d'instructions compréhensible par le µC PIC :
Vous cliquez alors sur l'onglet « Compile » puis :
1. Vous vérifiez que vous compilez votre code source pour un PIC 16F (PCM 14 bit),2. Vous lancez la compilation en cliquant sur l'icône « Compile »,3. Si la compilation s'est déroulée correctement (sans erreur donc), vous pouvez programmer votre
PIC en cliquant sur l'icône « Program Chip ». et en sélectionnant « ICD ».
Si la compilation de votre code source se passe correctement vous obtiendrez alors la fenêtre ci-dessous :
1. Ce rectangle rappelle le nom de votre fichier et son emplacement.2. Ce rectangle indique le nombre d'erreurs (errors) et d'avertissements (warnings)
Olivier DARTOIS Page 5
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Dans le cas contraire vous obtiendrez la fenêtre ci-dessous avec un message d'erreur qui apparaitra en bas de la fenêtre (flèche 1), la ligne contenant l'erreur apparaitra d'elle-même (flèche 2):
Lorsque vous lancez la programmation de votre PIC, vous obtenez successivement les écrans suivants (attention ces écrans peuvent défiler trés rapidement) :
Connexion vers l'ICD.
Programmation du PIC.
Vérification de la programmation.
Exécution du programme.
Olivier DARTOIS Page 6
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Déverminage de vos programmes
Grâce au module ICD-U40, vous pouvez exécuter votre programme dans un mode spécial appellé mode « pas à pas ». Ce mode permet d'examiner à n'importe quel instant l'état des registres internes du PIC, d'avoir la valeur d'une variable, de lire le contenu de l'eeprom, etc...
Ce mode sert à analyser le fonctionnement d'un programme et suivre son déroulement lorsque celui-ci ne fonctionne pas de la manière attendu. Pour activer ce mode, suivez la procédure suivante :
1. La ligne suivante doit apparaitre dans votre code source en langage C : #DEVICE ICD=TRUE sinon le logiciel vous proposera de le rajouter automatiquement.
2. Cliquez sur l'onglet « Debug » puis sur l'icône « Enable Debbugger ». Patientez jusqu'à ce que tous les icônes soient actives.
3. Cliquez alors sur l'icône « Debug Window » puis sur l'option « Show All ». Vous devriez alors obtenir la capture ci-dessous :
1. Cette fenêtre permet de suivre l'évolution des différentes variables en cliquant sur les différents onglets disponibles.
2. L'icône « Run » permet d'exécuter le programme de manière « normale ». Recliquez sur ce même icône pour arrêter le programme.
3. L'icône « Single Step » vous permet d'exécuter votre programme en mode pas à pas. Chaque ligne du programme en langage C est exécuté puis le programme s'arrête jusqu'à ce que vous re-cliquiez sur cet icône.
4. Cette petite flèche verte vous indique la ligne qui va être exécuté lorsque vous êtes en mode pas à pas. Cette flèche change donc de ligne à chaque fois que vous cliquez sur l'icône « Single Step ».
5. En cas de problème, vous pouvez réinitialiser le PIC en cliquant sur l'icône « Reset ».6. Enfin il faut toujours quitter le mode de déverminage en cliquant sur l'icône « Disable ».
Olivier DARTOIS Page 7
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Utilisation du logiciel TinyBootLoader
TinyBootLoader est disponible sur le bureau de Windows dans le dossier « Réseau Electronique ». Au lancement vous obtenez la fenêtre suivante :
1. Vous vérifiez que la vitesse de dialogue sur la voie série est de 19200 bauds ou celle que vous avez programmé dans votre programme (commande #use RS232).
2. Vous choisissez le port de communication auquel est relié votre maquette.
Les étapes 3 et 4 ne sont pas nécessaire car vous ne programmerez pas le PIC avec TinyBootLoader.Si votre µC PIC envoie des informations ou doit recevoir des informations par la voie série, vous ne quittez pas le logiciel TinyBootLoader. Vous suivez les étapes ci-dessous :
1. Cliquez sur l'onglet « Terminal ».2. Cliquez sur le bouton « Open ». Si la communication s'effectue correctement les messages venant
du PIC s'affiche dans la fenêtre centrale. Pour arrêter la communication il suffit de cliquer sur le bouton « Close ».
3. Pour préparer des données à envoyer au PIC. Cliquez dans la zone pointée puis tapez votre texte.4. Pour l'envoyer au PIC, cliquez sur le bouton « Send ».
Olivier DARTOIS Page 8
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Simulation des PIC16F87X avec Isis
Lorsque vous avez compilé votre code source en langage C, vous pouvez le tester avec Isis 6.7. Pour cela, il faut saisir dans Isis votre schéma (prendre un PIC16F87X pour tester). Ensuite faites apparaître les caractéristiques du PIC, vous obtiendrez la fenêtre suivante :
Suivez la procédure suivante :
1. Appuyez sur le bouton « ? » pour récupérer votre programme en code hexadécimal (ici essai2.hex),2. Précisez la fréquence du quartz du PIC (pas besoin de quartz sur le schéma Isis) (ici 4MHz).3. Enfin vérifiez que le mot de programmation vaut 0x3D31. Validez vos choix en cliquant sur le bouton
« OK ».
Vous pouvez alors lancez une simulation active et tester votre programme.
Olivier DARTOIS Page 9
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Présentation des maquettesSchéma et implantation carte de développement:
RA0/AN02
RA1/AN13
RA2/AN2/VREF-4
RA4/T0CKI6
RA5/AN4/SS7
OSC1/CLKIN9
OSC2/CLKOUT10
RC1/T1OSI/CCP2 12
RC2/CCP1 13
RC3/SCK/SCL 14
RB7/PGD 28RB6/PGC 27
RB5 26RB4 25
RB3/PGM 24RB2 23RB1 22
RB0/INT 21
RC7/RX/DT 18RC6/T X/CK 17
RC5/SDO 16RC4/SDI/SDA 15
RA3/AN3/VREF+5
RC0/T 1OSO/T 1CKI 11
MCLR/Vpp/T HV1
U1
PIC16F876A
X1
CRYST AL
C122pF
C222pF
123456789
10
J1
HE10-10turgot
+5V
123456789
101112131415161718192021
242526
2223
J3
HE10-26
6 sorties
6E/S
VI1 VO 3
GN
D2
U27805J5
PIN
C60.1µF
C70.1µF
+5V
J6
PIN
C40.22µF
C547µF
S1ST
Maquette TP PIC
+5VVDD
VSS
P1_VREF+
POT H
+5V
J_AN0PIN
J_AN1PIN
J_AN4PIN
1
2
3
4
5
6J2
EMBRJ12T URG
+5V
PB6
PB7
VPP
PB6PB7
VPP
P2_VREF-
POTH
+5V
PB3uC
PB3_ICD
S2
ST
S3ST
PB3uC
PB3_EXT
PB3_EXT
PB3_ICD
R1220
L1LED
ProgrammationDéverminage
CommunicationVoie SérieJ_MASSE
PIN
R210K
+5V
TEln - Oct 2006
Implantation des composants:
Échelle 70%Implantation carte inter+dels:
Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7
Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7
26 25
2 1
PB0
PB1
PB2
PB3
PC0
PC1
PC2
PC3
PC4
PC5
PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7
PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
VCCGND
VCCGND
Carte Inters + DELs – Manip PIC 16F876
« 1 »
« 0 »
PC6
PC7
PB4
PB5
PB6
PB7
Implantation convertisseur USB-Série:
123456789
10
J1
HE10-10
Convertisseur
Série vers U
SB
SLP 1
RXL 2
TXL 3
PEN 4
TEN 5
TXD 6
RXD 7GND8
RI9
DCD10
DSR11
DTR12
CTS13
RTS14CUSB1
CONV_USB
BP_RESET
R110K
S1
ST
S2
ST
+5VConvertisseur USB-Série
Implantation :
Typon :
Olivier DARTOIS Page 10
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Carte Ecran LCD graphique Nokia 3310, Encodeur rotatif avec bouton, boutons et DELs:Cette carte dispose :
● d'une DEL verte (D2) reliée à la sortie PIN_C4,● d'une DEL rouge (D1) reliée à la sortie PIN_B3,● de deux boutons : K1 relié à PIN_B1 et K2 relié à PIN_B2,● d'un encodeur rotatif avec bouton sur l'axe, les sortie de l'encodeur sont reliées à
PIN_B4 et PIN_B5, le bouton est relié à PIN_B1.
Olivier DARTOIS Page 11
Olivier DARTOIS 09/2008
A
SW
CO
M
B
Encodeur
1 2
3 4
E1ENCOD_BTN_20A & B => Interruption INT_RB (RB4, RB5)SW => Interruption INT_EXT (RB0)
PB0
PB4 PB5
+5VSCLKSDINDATA/COMMANDCSMASSE
RESETHP1HP2
OSC (+CONDO)
LPH7779 - N
OK
IA3310123456789
10
J_LPH
LPH7779
C14.7uF
PC3PC5
+5V
PC1PC0
PC2
Resistances Pull-Up PortB activées
Nokia3310 - Encodeur - BPs pour TP PIC
K1BPT
K2BPT
PB1
PB2
123456789
101112131415161718192021
242526
2223
J1
HE10-26
+5V
PB0
PB1
PB2
PB3
PB4
PB5
R1330RES5
D1LED
PB3
PC0
PC1
PC2
PC3
PC4
PC5R2330RES5
D2LED
PC4
C2100nFCF21
R310KRES5
R410KRES5
C310nFCF21
C410nFCF21
Présentation de l'encodeur rotatif
Microcontrôleur PIC – Présentation et Méthode de programmation TEln
Plan de câblage de l'ensemble:
Olivier DARTOIS Page 12
Bit0
Bit1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
Bit0
Bit1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
Bit0
Bit1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
2625
21
PB
0
PB
1
PB2
PB
3
PC
0
PC
1
PC2
PC
3
PC
4
PC5
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
VC
CG
ND
VC
CG
ND
Car
te In
ters
+ D
ELs
– M
anip
PIC
16F
876
« 1
»
« 0
»
PC
6
PC
7
PB
4
PB5
PB
6
PB
7
NA
PPE
HE1
0-26
NAP
PE
HE1
0-10
CA
BLE
US
B
CA
BLE
US
BC
AB
LER
J12
BLO
C A
LIM
EN
TATI
ON
Car
te L
CD
+Enc
odeu
r
Recommended