TP Initiation langage C avec un microcontrôleur PIC
Matériels :
Une carte PICdem2+ avec ICD2 (+ adaptateur 9VDC et cordons )
Un PC avec les logiciels PCWH ( Compilateur C pour PICs de CCS) et MPLAB De Microchip Documentations (Algorigramme - Initiation au langage C ) + diaporama
Activités (surlignée) Acquis En cours d’acquisition
(aide du professeur) Non- acquis Préparation A1-1 Préparer, intégrer et assembler le
matériel
A1-2 Paramétrage logiciel A1-3 Tester et valider
Installation A2-1 Participer à la préparation sur site A2-2 Mettre en place, raccorder, tester et
valider les supports de transmission A2-3 Mettre en place les équipements, les
logiciels, configurer, paramétrer, tester et valider
Maintenance A3-1 Effectuer la maintenance préventive A3-2 Effectuer la maintenance corrective Organisation A4-1 Réaliser la prise en charge du matériel
A4-2 S’informer et se documenter A4-3 Participer à la relation clientèle A4-4 Respecter les obligations légales et
réglementaires
A4-5 Participer à la gestion de son activité Autonomie de l’élève
Signature de l’enseignant
Prise en compte et restitution du matériel.
Signature :
INTRODUCTION
Le PIC18F242 (ou PIC18F452) est le micro contrôleur retenu comme support d'apprentissage de la logique micro programmée. Il pourra être utilisé pour réaliser les fonctions Traitement de l'information souvent présentent dans les systèmes techniques étudiés. Il sera alors chargé d'exploiter les informations d'entrée (bouton poussoir, capteur, clavier,…) de manière à commander les parties opératives ( LED, buzzer, affichage, commande de moteur, électrovanne,…).
Un microcontrôleur est un circuit intégré comprenant un microprocesseur , de la mémoire (mémoire vive RAM et mémoire morte ROM) , une (ou plusieurs) interface de communication permettant les échanges avec les périphériques.
1) FONCTIONNEMENT DU MICRO-CONTROLEUR.
Le microcontrôleur fonctionne à l'aide d'un programme réalisant le traitement de l'information et d'interfaces de communication avec l'extérieur matérialisées par les ports d'entrée/sortie.
Initiation au micro contrôleur PIC18Fxx2
Traitement de des informations
(micro contrôleur PIC18F242)
Parties Opératives
(commande de moteur, LED, buzzer, ….)
Informations d'entrée
(Boutons poussoirs, Clavier, Capteurs, …).
PORTA
Traitement de l'information
(programme)
Interface de communication
(Ports d'Entrée/Sortie)
PORTB
PORTC
Générateur de fréquence
Démarrage du programme
PIC18F242
Les ports E/S possèdent jusqu'à 8 bits rattachés chacun à une broche du boîtier et pouvant être configurés individuellement soit en entrée soit en sortie, par programme.
Le programme ne peut réaliser qu'une seule instruction (commande) à la fois. On parle de logique séquentielle.
Les instructions sont réalisées au rythme de l'oscillateur (une instruction toutes les 4 périodes de l'oscillateur).
Le microcontrôleur se place en début de programme à chaque impulsion (à l'état bas) sur la broche MCLR (en général à la mise sous tension ou lors de l'appui sur le bouton RESET).
Symbole et implantation du PIC18F242:
Vss br 8 et br 19 (Masse )
Vdd br 20 (+5V DC)
2) CARACTERISTIQUES TECHNIQUE DU PIC18F242 (Le bus de données étant sur 8 bits, ce microcontrôleur est un µC 8 bits))
Mémoire programme : 8 kmot (un mot est constitué de deux octets).
Le PIC18F242 possèdent une mémoire programme de 8 kmot, ce qui lui permet d'enregistrer 8 *1024= 8192 instructions. C'est une mémoire de type ROM FLASH : on peut effacer ou programmer électriquement la mémoire programme et le programme est conservé après une mise hors tension.
Mémoire des variables : 768 octets
Cette mémoire est utilisée lors de l'exploitation des informations d'E/S (calculs et résultats intermédiaires). Elle est de type RAM, c'est à dire que son contenu est perdu après une mise hors tension.
Fréquence maximale de l'oscillateur : 40 MHz
La fréquence de l'oscillateur peut aller jusqu'à 40 MHz, soit une instruction toutes les 100ns.
Trois ports d'E/S
Chaque bit des ports est rattaché à une broche du boîtier et peut être configurer en entrée ou en sortie. En outre ils sont tous configurables pour une application plus spécifique (Conversion Analogique Numérique pour le PORTA, transmission série pour le PORTC, PWM et capture d'impulsions pour le PORTB, …).
Dispose de 70 instructions pour l'écriture des programmes.
3) PROGRAMMATION DU MICRO-CONTROLEUR.
La programmation du microcontrôleur se fait en langage machine. Ce langage étant peu compréhensible, le programmeur écrit le programme dans un fichier source en langage évolué : assembleur, langage C, basic, etc.
Dans notre cas l’écriture du programme du PIC se fait en langage C avec le compilateur PCWH de CCS . La compilation génère le code machine qui sera transféré dans la mémoire du microcontrôleur avec l'outil de développement MPLAB IDE de MicroChip.
La mise au point du programme permet d'observer le déroulement du programme. Elle peut se faire :
-soit en simulation (l’ordinateur simule le comportement du microcontrôleur )
-soit en débogage (debugger) auquel cas le programme est transféré dans le microcontrôleur cible à l’aide du module ICD2. Il est connecté d'une part à l'ordinateur par la liaison USB et d'autre part à la carte cible (microcontrôleur) par un connecteur RJ11 spécifique.
Le module ICD2 permet également de programmer le micro-contrôleur pour un fonctionnement autonome de la carte cible (on supprime alors la liaison avec l’ordinateur).
Liaison avec l’ordinateur (câble
USB).
Module ICD2
Liaison avec la carte cible (câble spécifique,
connecteur RJ11) Carte cible
4) PREMIERS PROGRAMMES AVEC LA CARTE PICDEM2+
4-1) programme 1
On souhaite réaliser un programme qui allume les quatre DEL connectées sur les ports RB0 à RB3 lorsque l'on appuie sur un bouton poussoir connecté sur RA4.
Montage simplifié de l'application :
Matériel à utiliser :
• Carte PICDEM 2 + (vérifier la mise en place du cavalier J9 pour valider le buzzer et du cavalier J6 pour valider les 4 leds )
• Adaptateur +9VDC pour alimenter la carte cible
• Carte ICD2
• Cordons (1 USB + cordon de liaison entre carte ICD2 et carte cible)
• 1 PC
• Logiciels : PCWH de CCS et MPLAB de Microchip
La carte ICD2 est auto-alimentée via le cordon USB par l’ordinateur. Ne pas brancher le cordon adaptateur +9VDC à cette carte.
Flécher le sens de l’information pour les leds repérées D1 à D4 et le bouton poussoir SW1 En déduire l’état logique obtenu en RA4 si SW1 est appuyé.
Repérer le quartz et donner sa fréquence d’oscillation.
L'organisation du programme (algorigramme) est la suivante :
Les commentaires :
Les commentaires sont nécessaires à la compréhension du fichier source. Ils font le
lien entre l’algorigramme et le listing du fichier source. Ils sont introduits par le caractère // . Les mots situés après le caractère // ne sont pas interprétés par le compilateur.
ALGORITHME : Début algorithme
Faire RB3 à RB0 en sortie , RA4 en entrée
Tant que 1=1 (boucle sans fin)
Si RA4 = 0 Alors
Faire RB0 à RB3 =1 Sinon
Faire RB0 à RB3 = 0 Fin Si
Fin tant que Fin algorithme
Travail demandé :
A partir du fonctionnement souhaité et de l’algorigramme, compléter le listing du programme source fourni ci-dessous (parties encadrées).
Retrouver sur le programme les différentes étapes de l’algorigramme (prendre 5 couleurs différentes
Pic 18F452 à 4MHz
Test bouton poussoir RA4 = 0 →BP appuyé RA4
= 0 ?
oui non
Boucle sans fin
Instruction à utiliser :
If …….else…. (voir le document initiation au langage C)
Fonctions à utiliser : set_tris_x(valeur) , output_x , input_x (voir l’aide du logiciel PIC C)
A partir du diaporama :
Editer , compiler ce programme avec le compilateur C de CCS. (imprimer votre listing avec en entête votre nom (en commentaire))
Programmer le PIC 18F242 (ou PIC 18F452) avec MPLAB (voir le diaporama pour la procédure) .
Vérifier le fonctionnement du programme.
Listing du programme
void main() // programme principal {
setup_adc_ports(NO_ANALOGS); // fonctions insérées par le « Wizard » de PCWH setup_adc(ADC_OFF); // pour initialiser le µC PIC 18Fxx2 à 4Mhz setup_spi(FALSE); // et paramétrer les ports
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
set_tris_a(0b ) ; // à compléter PORT A en entrée (0b= valeur en binaire)
set_tris_b(0b ) ; // à compléter PORT B en sortie
//RB0 à Rb3 à 0 leds éteintes
while (TRUE) //permet de créer une boucle sans fin ( ou while(1) ) {
if ( !input(PIN_A4) ) // ou if ( input(PIN_A4) = = 0) {
//RB0 à RB3 à 1
}
else {
// RB0 à RB4 à 0
}
} }
Signature du professeur :
4-2) programme 2
Cahier des charges : 4 leds clignotent pendant 200ms si le bouton poussoir RA4 est appuyé, sinon elles sont éteintes.
ALGORIGRAMME
ALGORITHME : Début algorithme
Faire RB0 à RB3 en sortie , RA4 en entrée Faire RB0 à RB3 à 0
Tant que 1=1
Tant que RA4 = 0 Faire
RB0 à RB3 = 1 Temprisation 0.2s RB0 à RB3 = 0 Temporisation 0.2s Fin tant que
Fin tant que Fin algorithme Travail demandé :
PIC 18F452 à 4MHz
A partir du fonctionnement souhaité, faire le programme source (imprimer le listing avec votre nom en entête). Tester ce programme.
Instructions : while (voir document initiation au langage C) Fonctions : set_tris_x(valeur) ; output ; input ; delay (voir l’aide du logiciel PIC C)
4.3) TP chenillard simple défilement A. Présentation
Cahier des charges : réaliser un chenillard qui a un seul sens de défilement. La première LED à s'allumer est la LED1 reliée à RB0. La LED2 s’allume 0,5 seconde plus tard et ainsi de suite jusqu’à la LED4. Ce cycle recommence ensuite indéfiniment tant que le bouton poussoir RA4 est appuyé (sinon les leds sont éteintes).
B. Algorigramme
Initialisation du PIC 18F452 (à 4Mhz) RA4 en entrée RB0 à RB3 en sorties Déclaration d’une variable entière« valeur » sur 8bits
(PORT B) = 0
RA4 =1 ?
Valeur
<=
0000 1000 ?
Temporisation de 0.5s Décalage à gauche de 1 bit de la variable valeur
non
oui non oui
valeur = 0000 0001
décalage de n bits à gauche ( << ) : x = y << n
B O U C L E F O R
(PORTB) = valeur
Boucle répéter… tant que
C.Algorithme
DEBUT ALGORITHME
FAIRE RB0 à RB3 en sortie et RA4 en entrée Déclarer la variable « valeur » (entier sur 8 bits)
TANT QUE 1=1 (boucle sans fin)
Répéter
PORTB=0
Tant que RA4 = 1 (test BP si relâché )
POUR valeur = (00000001) 2 valeur initiale
à valeur <= 0000 1000 condition
et par décalage à gauche de 1 modification
FAIRE (PORTB) = valeur
FAIRE Temporisation 0,5s
FIN POUR
FIN TANT QUE
FIN ALGORITHME
Aide : utiliser la condition do … while et la boucle For… (voir document initiation au langage C) Travail à faire :
Faire le programme de cet ordinogramme (ajouter votre nom en commentaire) et le tester.
Imprimer ce programme et encadrer sur celui-ci, les différentes étapes de l’algorigramme.
4.4) TP chenillard à deux sens de défilement
A. Présentation
Cahier des charges : réaliser un chenillard à deux sens de défilement. La première LED à s'allumer est la LED1 reliée à RB0. La LED2 s’allume 0,5 seconde plus tard et ainsi de suite jusqu’à la LED4.
Ensuite, c’est au tour de la LED3 de s’allumer pour revenir à la LED1. (la condition , pour que le chenillard démarre , est que le bouton poussoir RA4 soit appuyé sinon les leds sont éteintes.)
Travail à faire :
Faire l’algorigramme, l’algorithme et le programme de ce cahier des charges.
Aide : utiliser le décalage logique à gauche puis le décalage logique à droite avec des boucles for Tester votre programme et le faire vérifier à votre professeur.
Imprimer ce programme et encadrer sur celui-ci, les différentes étapes de l’algorigramme.
Signature du professeur :
Signature du professeur :
MCLR/Vpp 1
RA0/AN0 2
RA1/AN1 3
RA2/AN2/VREF- 4
RA3/AN3/VREF+
5
RA4/T0CKI 6
RA5/AN4/SS/LVDIN 7
RE0/RD/AN5 8 RE1/WR/AN6 9 RE2/CS/AN7 10 OSC1/CLKI
13
RA6/OSC2/CLKO 14
RC0/T1OSO/T1CKI 15
RC2/CCP1 17 RC3/SCK/SCL 18
RD0/PSP0 19 RD1/PSP1 20 RD2/PSP2 21 RD3/PSP3 22 RD4/PSP4 27 RD5/PSP5 28 RD6/PSP6 29 RD7/PSP7 30 RC4/SDI/SDA 23 RC5/SDO 24 RC6/TX/CK 25 RC7/RX/DT 26
RB0/INT0 33
RB1/INT1 34
RB2/INT2 35
RB3/CCP2B 36
37 RB4 RB5/PGM 38
RB6/PGC 39
RB7/PGD 40
RC1/T1OSI/CCP2A 16
U1
PIC18F452
D714D613D512D411D310D29D18D07
E6RW5RS4
VSS1 VDD2 VEE3
VCC GND VEE
VCC = 5V
RA4
R2
4k7
Q1
2N2222
R4
470
R5
2k2
LS1
SOUNDER
50%
RV1
5k
D2
LED-RED
D3
LED-RED
D4
LED-RED
D5
LED-RED
R21
470
R22
470
R23
470
R24
470
J6
JUMPER
D1
LED-GREEN
R15
470
J9
JUMPER
VCC X1
Quartz 4MHz
J7
JUMPER
RB0
RB1
RB3 RB2