• Aucun résultat trouvé

TP Initiation langage C avec un microcontrôleur PIC

N/A
N/A
Protected

Academic year: 2022

Partager "TP Initiation langage C avec un microcontrôleur PIC"

Copied!
11
0
0

Texte intégral

(1)

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 :

(2)

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

(3)

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

(4)

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

(5)

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.

(6)

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

(7)

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 :

(8)

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

(9)

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

(10)

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 :

(11)

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

Références

Documents relatifs

l'interrupteur S s’ouvre pour assurer le blocage de la tension. La conversion commence, elle est réalisée en 12 T AD , à la fin, le bit GO_DONE repasse à 0, le drapeau ADIF passe à

Ensuite une fenêtre apparaît, vous demandant si vous voulez imprimer à partir de votre compte personnel ou d’un compte de facturation (appelé ici « compte partagé »).. Si

Choisir le nombre de copies et le le compte à partir duquel le montant sera déduit et cliquer sur « Document à envoyer ». Glisser le document à imprimer dans la zone prévue ou

Elle doit son nom à Leonardo Fibonacci qui, dans un problème récréatif posé dans l'ouvrage Liber abaci publié en 1202, décrit la croissance d'une population de lapins : « Un

 A l’aide d’un programme, calculez les images de 3 ; de 9 puis de -6 par la fonction h..  Comparez les fonctions

microcontrôleur PIC.. Lancer le compilateur C PCW.. Sélectionner le pic choisi ainsi que la fréquence de l’oscillateur.. Pour charger le programme dans un microcontrôleur PIC

A l'issue de chaque exercice, l'enseignant doit vérifier la solution proposée et le programme de test, et peut demander des corrections ou modifications..

Lecture contrôlée d’un entier Procedure lecture ( var n :integer);.