You are on page 1of 9

Lyce Technique Pierre Emile Martin STS Systmes Electroniques 1re anne

INTRODUCTION AU MICROCONTROLEUR ET A SA PROGRAMMATION

Ce document a pour objet de prsenter trs succinctement le microcontrleur et la chane de dveloppement pour pouvoir raliser rapidement des manipulations avec un C PIC de Microchip et une chane de dveloppement comprenant le logiciel de programmation graphique Multiprog.

1) PRESENTATION RAPIDE
Un microcontrleur (C) est un composant (un circuit intgr) qui permet de raliser un traitement automatique de linformation. Les C sont trs utiliss dans les petits systmes lectroniques. Ils supervisent le fonctionnement.

Informations d'entre

Traitement automatique C

Informations,actions de sortie

Voici un exemple dutilisation dun C dans un petit systme, un rcepteur dmissions tlvises par satellite : Tche ralise Commande de dplacement de parabole de rception Informations dentre Informations de sortie Impulsions pour le dplacement souhait, 2 informations pour commander le envoyes par le dmodulateur au travers dplacement dans les 2 du cble dantenne Impulsions en provenance du bloc moteur sens sur le dplacement effectif Le C est plac dans un botier ct du moteur qui commande le dplacement de la parabole. Dans cet exemple, le C doit traiter les informations qui lui sont envoyes en srie par le dmodulateur pour rcuprer le dplacement demand. Il doit ensuite commander le moteur. Lors du dplacement, des impulsions sont envoyes. Le C compte ces impulsions et coupe lalimentation du moteur lorsquil en a compt le nombre correspondant au dplacement dsir. Le traitement automatique de linformation consiste en lexcution par le P dune suite de tches lmentaires appele instructions. Lensemble de ces instructions constitue le programme. Ce programme, dit programme excutable, est enregistr dans la mmoire interne du C. Le programme excutable est du binaire. On utilise souvent le code hexadcimal pour le reprsenter de faon plus compacte. Ce programme est incomprhensible un humain. Exemple : 1F283F3083160313850083128501FF30BC

Introduction au C et sa programmation / Philippe Morenton LT PE Martin Bourges

Le programme excutable est obtenu partir dun programme source crit dans un langage de programmation volu plus ou moins facilement comprhensible par un humain. Pour obtenir le composant programm depuis le programme source, on utilise une chane de dveloppement. On sintresse ici une chane de dveloppement qui permet dcrire le programme source en langage graphique, avec des algorigrammes, avec le moins possible de texte entrer au clavier.

Chane de dveloppement Algorigramme source Programme excutable C cible

Carte cible

+ carte dinterface Ordinateur + logiciels La chane de dveloppe est constitue dun ordinateur, de plusieurs logiciels et dune carte dinterface entre lordinateur et la carte cible.

Le fonctionnement du C et la chane de dveloppement ncessaires la programmation sont introduits ici au travers dun exemple volontairement trs simple. Un cours de synthse sur les microcontrleurs et microprocesseur aura lieu aprs les manipulations.

Le logiciel utilis pour la saisie des algorigrammes source est Multiprog. Il permet la traduction automatique des algorigrammes en un programme en langage C. Multiprog lance ensuite automatiquement un compilateur (CC5X) qui traduit ce programme en langage C en programme excutable. Un programmateur (Castorprog) est ensuite automatiquement lanc pour enregistrer le programme excutable dans le C cible, en

Introduction au C et sa programmation / Philippe Morenton LT PE Martin Bourges

utilisant une petite carte dinterface connecte au PC par une liaison USB et la carte cible par un cble avec connecteur RJ.

Introduction au C et sa programmation / Philippe Morenton LT PE Martin Bourges

Schma de la carte cible utilise


J1 JACK5,5 1 2 3 1 D1 2 1 U1 7805 IN F E R C11 1uF 2 Vss OUT 3 VDD C1 100n J3 1 2 1 3 2 4 3 4

1N4001

JP1 2 1

C12 100n

Connecteur pour RC[0..5] carte dextension


P2 VDD C13 100n RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 1 3 5 7 9 11 13 15 17 19 21 23 25 JP2 1 3 5 7 9 11 13 15 17 19 21 23 25 2 4 6 8 10 12 14 16 18 20 22 24 26 2 4 6 8 10 12 14 16 18 20 22 24 26 RC5 RC4 RC3 RC2 RC1 RC0 VDD R7 680 LD4 POT1

Alimentation

Bornier v is

P3

Les condensat eurs de 1F peuv ent tre remplacs par des condensateurs de 100nF av ec certaines v ersions de MAX232

MAQUETTE POUR TPs avec le PIC 16F877


VDD U2

10k

VDD

Composants pour interface RS232. VDD Ncessaire pour les changes avec un 6 U4 1
C7 1uF 1 3 4 5 11 10 12 VCC C1+ C12VCC-1.5V

RC0 1 RC1 2 RC2 3 4

J4 1 2 3 4

C14 1uF

RC3 1 RC4 2 RC5 3 4

J5 1 2 3 4

VDD R8 100k 1 R9 1k RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3/VREF MCLR/Vpp RA4/TOCKI RA5/AN4/SS RBO/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 2 3 4 5 6 7

R6 680 C8 1uF LD3

2 6 C15 1uF C16 1uF Borniers v is 5 9 4 8 3 7 2 6 1 P1

C2+ -2VCC+1.5V C2-

R2 10k BP3 RD[0..7] BP2

connecteur HE10

BP1

33 34 35 36 R1 37 10k 38 39 RB6 40 RB7 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 RB[6..7] RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7

SW1 RC6 8 7 RC7 6 5 1 2 3 4

14 7 13 0V MAX232 5 1 SW3 8

C9 33pF C10 33pF

RCO/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL 13 OSC1/CLKIN RC4/SDI/SDA RC5/SDO RC6/TX/CK XTAL1 RC7/RX/DT 16MHz 14 R10 0 OSC2/CLKOUT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

Boutons i

RC[6..7]

VDD

RR2 10k RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 R11 R13 R15 R17 10k 10k 10k 10k RR1 680 LD6 LD7 LD9 LD10 LD12 1 2 3 4 5 6 7 8

Connecteur RS232 DB9 Mle pour cble NULL MODEM

R12 R14 R16 R18 SW2

10k 10k 10k 10k

16 15 14 13 12 11 10 9

RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 PIC16F877

RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 VDD 1 2 3 4 5 6 J2 1 2 3 4 5 6

Interrupteurs sur PORT C. Inter ouvert 1 Inter ferm 0

1 2 3 4 5 6 7 8

16 LD5 15 14 13 LD8 12 11 10 LD11 9

les LEDs sont dconnectables pour ne pas charger le port D lors de son utilisation avec le connecteur HE10

C
RB7 RB6

Connecteur pour module ICD


Brochage conf orme Microchip

Title Size A Date:

LEDs sur PORT D


Maquette 0 PIC16F877 Sortie TP LED teinte
Document Number

Connecteur pour carte interface de la chane de dveloppement

Schm a s tructurel pour im plantation


Sheet 1

Sortie

LED
of 1

Rev 1

Sunday , February 05, 2006

Introduction au C et sa programmation / Philippe Morenton LT PE Martin Bourges

Le C utilis a toutes les broches situes droite sur le schma ci-dessus qui peuvent utilises individuellement en entres ou en sorties. Avec la maquette cible, certaines broches doivent imprativement tre utilises en entres et dautres en sorties. Par exemple, si on utilise les LEDs de la maquette, il faut que tout le PORTD (RD0 RD7) soit utilise en sorties. Le choix du sens de transfert seffectue en crivant un mot (=8 bits) dans un registre interne. Cette opration est transparente lutilisateur avec Multiprog.

2) UTILISASTION DE LA CHAINE PROGRAMME ELEMENTAIRE

DE

DEVOLEPPOMENT

AVEC

UN

1 Lancement de Multiprog Il faut crer un nouveau projet ou ouvrir le fichier dun projet dj existant. 2 Crer un nouveau projet (Fichier/Nouveau ou icne avec bords bleus) la bote de dialogue Configuration du projet souvre. Dans notre exemple, on utilise cette bote uniquement pour choisir le sens de transfert pour les entres/sorties.

Le port D est configur en sortie pour permettre la commande des LEDs 3 Aprs avoir valid, une nouvelle feuille de travail apparat. On peut alors enregistrer le projet. 4 Il faut choisir la carte dinterface utilise pour la programmation du PIC cible : dans notre exemple Castor USB.

5 On peut ensuite dessiner le ou les algorigrammes. Dans notre exemple, il ny a quun seul algorigramme :

Introduction au C et sa programmation / Philippe Morenton LT PE Martin Bourges

Plac avec le bouton dbut Plac avec le bouton while Choisi avec la bote de dialogue Condition qui souvre automatiquement lors du placement du symbole while Plac avec le bouton fin Plac avec le bouton calcul

Plac avec un des boutons liaisons Plac avec le contextuel lien menu

Ecrit sur la ligne n1 de la bote de saisie Calcul qui souvre automatiquement lors du placement du symbole calcul.

Tant que la condition dcrite lintrieur du symbole est vraie, on continue le traitement sur la sortie horizontale. Dans le cas contraire, on va sur la sortie avec une boule. Ici =1 signifie que la condition est toujours vraie. Le programme ne passe jamais vers la sortie fin . Le traitement PORTD=PORTC est dans une boucle sans fin. Une fois que le C cible est programm, le programme ne sarrte jamais tant que la carte est alimente. Dans notre exemple, la seule ligne dcriture entre au clavier est PORTD=PORTC. Le programme permet de placer sur le port D, o sont connectes les LEDS, les valeurs lues sur le port C, o sont cbls les interrupteurs. 6 Aprs avoir enregistr les modifications apportes au projet, il faut lancer la traduction automatique Algorigramme programme source en langage C + algorithme (uniquement pour visualisation). Ceci seffectue avec le bouton qui a la forme dune flche. La bote de dialogue ci-contre souvre : Si on choisit Compilation sans mise au point , le programme sexcutera en vitesse normale aprs la programmation du C cible. Si on choisit Compilation avec mise au point , le programme sexcutera plus basse vitesse et on verra sur lalgorigramme le droulement du programme. Un carr rouge entourera le symbole correspondant la partie du programme en train dtre excute. On choisit ici Compilation sans mise au point . 7 Aprs la traduction automatique, on peut visualiser lalgorithme et le programme en langage C correspondant lalgorigramme de dpart. Il suffit de cliquer sur les onglets Algorithme et Programme C.

Introduction au C et sa programmation / Philippe Morenton LT PE Martin Bourges

Extrait de lalgorithme Procdure (Initialisation) Configuration des diffrents ports

Algorigramme de dpart

Extrait du programme C #pragma chip PIC16F877 #include <int16CXX.H> void init(void) { TRISA=0x3F; PORTA=0x00; TRISB=0xFF; PORTB=0x00; TRISC=0xFF; PORTC=0x00; TRISD=0x00; PORTD=0x00; TRISE=0x07; PORTE=0x00; ADCON1=0x06; } //Programme Principal void main(void) { init(); while ((1)) { PORTD=PORTC; } }

Commentaires

Programme Principal DEBUT Appel de la procdure d'initialisation TANT QUE ((1)) FAIRE PORTD=PORTC FIN TANT QUE FIN

Procdure dinitialisation Les lignes qui suivent permettent dcrire des valeurs dans des registres de commande. On fixe ici le sens de transfert de chacune des E/S et la valeur 0 sur les sorties. Les valeurs crire dans les registres sont donnes dans la documentation technique du C.

Traduction automatique

Le programme commence ici

Il nest pas ncessaire de comprendre le programme en langage C pour programmer correctement une application.
Introduction au C et sa programmation / Philippe Morenton LT PE Martin Bourges 7

8 Il faut maintenant lancer la traduction automatique programme en langage C programme excutable puis la programmation via la carte dinterface. Ceci seffectue en cliquant sur le bouton CC5X (nom du logiciel pour la traduction automatique). Des botes dinformation apparaissent brivement durant les oprations : La traduction automatique programme en langage C programme excutable sappelle la compilation.

9 Aprs la fin de lapplication, le programme sexcute automatiquement. On peut alors dbrancher la carte dinterface qui nest plus ncessaire. On peut examiner les fichiers crs par le compilateur. Il nest pas ncessaire de comprendre le contenu des fichiers pour programmer correctement une application. Extrait du programme en langage C (pic.c dans le dossier dinstallation de Multiprog) void init(void) { TRISA=0x3F; PORTA=0x00; TRISB=0xFF; PORTB=0x00; TRISC=0xFF; PORTC=0x00; TRISD=0x00; PORTD=0x00; TRISE=0x07; PORTE=0x00; ADCON1=0x06; } //Programme Principal void main(void) { init(); while ((1)) { PORTD=PORTC; } } END Avec le programme de lexemple, il y a 36 mots programms en mmoire du PIC. Extrait du fichier en langage dassemblage (1 ligne = une instruction du C) (pic.asm dans le dossier dinstallation de Multiprog) init MOVLW 0x3F BSF 0x03,RP0 BCF 0x03,RP1 MOVWF TRISA BCF 0x03,RP0 CLRF PORTA Fichier utilis pour la progammation (pic.hex dans le dossier dinstallation de Multiprog) :100000001E283F30831603 13850083128501FF30BD :10001000831686008312860 1FF30831687008312C1 :10002000870183168801831 28801073083168900AF :10003000831289010630831 69F0008000120831275 :080040000313070888001F 28C4 :00000001FF La partie du programme pour linitialisation comprend 29 instructions du C 29 mots en mmoire du C CALL init m001 BCF 0x03,RP0 BCF 0x03,RP1 MOVF PORTC,W MOVWF PORTD GOTO m001 Cette partie correspond 6 instructions 6 mots en mmoire du C

Introduction au C et sa programmation / Philippe Morenton LT PE Martin Bourges

3) QUELQUES ELEMENTS DU FONCTIONNEMENT DU C


Avec lexemple utilis, une fois linitialisation effectue, le C effectue quelques instructions en boucle. Les plus importantes sont : Mnmonique MOVF PORTC,W Signification / Remarque Copier les tats logiques du port C (8 entres) dans un registre interne appel W (Working register = registre de travail) MOVF = MOVe (dplacer, ici copier convient mieux) File (ici registre). Ce qui suit indique la source et la destination. Lexcution de cette instruction prend 4 cycles de lhorloge de squencement du C. Sur la maquette pdagogique cette horloge a une frquence de 16MHz. La dure de lexcution du programme est donc de 0,25s Copier les tats logiques du registre W dans le registre de sortie du port D. MOVWF = MOVe W to F. Ce qui suit indique la destination. Lexcution de cette instruction prend 4 cycles de lhorloge de squencement du C. Sur la maquette pdagogique cette horloge a une frquence de 16MHz. La dure de lexcution du programme est donc de 0,25s

MOVWF PORTD

Chacun des codes des instructions ci-dessus est rang en mmoires une adresse quon peut dterminer dans le fichier utilis pour la programmation (il faut tre un spcialiste). En dformant un peu pour simplifier lexplication, le C dlivre ladresse dune instruction, lit le code de cette instruction et lexcute. Il dlivre ensuite ladresse de linstruction suivante, etc. GOTO m001 Cette instruction permet au C de dlivrer ensuite ladresse de linstruction repre par ltiquette m001

La dure dexcution dun passage dans la boucle sans fin de lexemple est trs courte : environ 1,5 s.

Introduction au C et sa programmation / Philippe Morenton LT PE Martin Bourges

You might also like