Vous êtes sur la page 1sur 13

Universit de Savoie

Module ETRS-604



Travaux Pratiques
Microprocesseurs & Microcontrleurs




Sylvain MONTAGNY
sylvain.montagny@univ-savoie.fr
Btiment chablais, bureau 13
04 79 75 86 86



TP1 : Programmation sur microcontrleur PIC (1)
TP2 : Programmation sur microcontrleur PIC (2)
TP2 : Programmation sur microcontrleur PIC (3)




Retrouver tous les documents ncessaires au TP sur le site
www.master-electronique.com


Universit de Savoie
Module ETRS-604
Microprocesseurs et microcontrleurs

TP1
Programmation sur microcontrleur PIC


Objectifs : Mise en uvre des fonctions dun microcontrleur PIC en langage C
I. Prsentation
Les microcontrleurs sont des composants qui intgrent sur une mme puce toutes les
fonctions ncessaires une application ddie linformatique industrielle.
Processeur
Mmoires : (vives et mortes)
Timer
Liaison srie
Convertisseur analogique-numrique
Port dentre/sortie

Ces microcontrleurs sont la base dun grand nombre dapplications industrielles et leur
fonctionnement peut tre transpos la plupart des familles de microcontrleurs. On se
propose de dcouvrir la totalit dune chane de dveloppement des microcontrleurs PIC.
Ces microcontrleurs dvelopps par la socit Microchip sont extrmement rpandu dans le
milieu industriel grce leur simplicit et leur cot rduit. Le microcontrleur utilis sera le
16F877 ou le 16F877A.

Le synoptique de la Figure 1 rappelle le cycle de cration dun programme excutable pour un
processeur.

2-Compilateur
3-Linkeur
4-Chargeur
Mmoire
Bibliothques
Fichier source
MonProg.ASM
MonProg.C
Fichier Objet
MonProg.OBJ
Fichier excutable
Mon Prog.HEX

1-diteur de texte

Figure 1 : synoptique dun cycle de compilation
II. Prise en main de lenvironnement
1. La carte de dveloppement
Vous disposez dune carte propose par Mikroelektronika qui permet de raliser beaucoup
dapplication. Les lments qui peuvent tre relis au microcontrleur sur cette carte sont :
Les boutons poussoir,
Les leds
Un port srie
Des entres analogiques
Un cran LCD
Un port USB
Un capteur de temprature numrique

1.1. Alimentation et communication avec la carte
La connexion de la carte avec le PC se fait avec la connexion USB (le port USB de gauche sur
la carte). Cette communication par USB est aussi utilise pour lalimentation de la carte.
1.2. La suite logiciel et matriel de Mikroelektronika
Nous utiliserons lenvironnement dvelopp par Mikroelektronika qui rassemble :
La carte de dveloppement EasyPIC
Loutil de dveloppement logiciel : mikroC (diteur de texte, compilateur et diteur de
liens)
Le chargeur du programme excutable en mmoire : PicFlash
Le debugger : MikroICD Debugger

Lensemble des ports dE/S du composant install sur son support peut tre reli au choix par
des Leds, des boutons poussoirs, ou simplement dports pour tre visualis sur
loscilloscope. Les connexions de ces diffrents lments se font par des cavaliers et des
interrupteurs. La documentation explique trs bien les diffrentes options disponibles.
1.3. Utilit dune carte de dveloppement
Celles-ci permettent de faire des tests dapplication avant la mise en production dun produit.
La carte de dveloppement permet donc davoir une connexion directe entre le PC et le
microcontrleur afin de connatre en temps rel les valeurs des registres ou de nimporte quel
emplacement mmoire du microcontrleur. Cette liaison de DEBUG (connexion entre PC et
microcontrleur) nest pas dfinitive mais seulement temporaire la dure de dveloppement
et de test du programme. Celle-ci linconvnient de prendre 2 broches dentre sortie du PIC
(Pins 6 et 7 du port B).
Une autre forme de test, moins puissante mais qui ne prend aucune ressource au
microcontrleur est la simulation. Le code nest alors pas charg dans la cible
(microcontrleur) et le code sexcute sur le PC en simulation.

1.4. Les modes de compilation
Lors de la compilation, deux configurations peuvent tre envisages :
Le mode Release : Le code gnr est dbarrass de toutes les informations de
debugage (ex : numro de ligne, communication avec le PC, etc). Le code pourra
tre simul sur ordinateur mais en aucun cas avec le dbuggeur.
Le mode Debug : Les informations de debugage sont lies au fichier excutable. Le
fichier est donc plus important et permet une utilisation du dbuggeur. Les broches 6
et 7 du port B seront utilises.

2. Dveloppement dune application
Avant de lancer lenvironnement de dveloppement crez un rpertoire de travail sur votre
compte. Tous vos fichiers seront rassembls dans ce rpertoire. Recopiez dans votre rpertoire
le fichier clignotement.c :

1. void main (void)
2. {
3. TRISB=0xF0;
4. while(1){
5. PORTB=0x0F;
6. delay_ms(500);
7. PORTB=0x00;
8. delay_ms(500);
9. }
10. }

Dune faon gnrale, pour tout projet, les tapes suivantes doivent tre ralises :
Cration dun nouveau projet
Paramtrage du projet (options de compilation, choix du composant cible, options de
lditeur de lien)
Ajout de fichiers (sources, librairies) au projet
Compilation du projet qui gnrera les fichiers suivants :
fichier.asm : un fichier en langage assembleur avec les codes machines
correspondant chaque instruction et les adresses mmoire du code.
fichier.lst : mme information que le fichier.asm avec en plus la rsolution des
adresses pour les variables utilises.
fichier.hex : un fichier en langage machine qui peut tre transfr en mmoire
programme du microcontrleur laide dun chargeur.

Note : Dans de nombreux cas, les valeurs par dfaut des options du compilateur et de lditeur
de lien (linker) fonctionnent dans un premier temps.
Q1. Quelle est la frquence de cadencement du microcontrleur de votre platine ?
Lancez le logiciel MikroC et raliser les tapes de dveloppement dune application (cration
dun projetetc..) jusqu' la compilation du programme clignotement.c . Vous essayerez
de trouver de faon intuitive comment raliser ces tapes une une.
3. Chargement du programme en mmoire
Ceci est ralis avec PicFlash v7.07 qui est intgr linterface de dveloppement. Il va servir
transfrer le fichier excutable (clignotement.hex) dans la mmoire du microcontrleur.
Licne correspondante au chargeur est situe droite ( ou F11). Le code compil
auparavant sera directement charg en mmoire du composant spcifi.
4. Lancement du programme
En mode release, le programme est lance automatiquement aprs son chargement en
mmoire. (Aucun debugage possible)
5. Configuration de la carte
Vous devez vous rfrer systmatiquement la documentation de la carte lorsque vous
souhaitez raliser une application.
III. Applications
1. Mesure du temps de cycle du processeur
En reprenant lexemple du TD, mettez en place une application permettant de mesurer le
temps de cycle instruction du processeur. Noublier pas de bien faire la configuration de la
carte afin de pouvoir visualiser les donnes du PORTB sur les broches dextension.
Q2. Modifier le programme prcdent afin de raliser cette mesure de temps de cycle.
Justifiez ce que vous visualisez loscilloscope.
Q3. Est-ce cohrent avec les 8 MHz du cadencement du microcontrleur ?
2. Dtermination de la persistance rtinienne
La persistance rtinienne est la sensation davoir une image fixe due au changement trop
rapide dtat de la led. Nous allons essayer de dterminer la persistance rtinienne de nos
yeux en utilisant les fonctions de temporisation notre disposition. Les temporisations sont
trs pratiques et trs souvent utilises en programmation industrielle. Vous pouvez retrouver
ces fonctions de temporisation en tapant le mot cl delay dans laide.

Pour le calcul de la persistance rtinienne, on se propose de raliser un programme qui ajuste
la dure ltat haut et ltat bas dun signal carr sur la broche 0 du PORTB. Cette dure
sera slectionnable suivant le bouton poussoir appuy sur le PORTC comme prciser ci-
dessous.
PORTC, bit 0 : 2 ms
PORTC, bit 1 : 5 ms
PORTC, bit 2 : 10 ms
PORTC, bit 3 : 13 ms
PORTC, bit 4 : 15 ms
PORTC, bit 5 : 18 ms
PORTC, bit 6: 20 ms
PORTC, bit 7: 22 ms
Q4. Dessiner sur votre feuille le schma du montage que vous voulez raliser. Expliquer
les configurations des interrupteurs que vous faites sur la platine.
Q5. Ecrivez et tester le programme en prcisant la persistance rtinienne que vous avez
trouvez.
3. Appareil photographique
On dsire utiliser le PIC16F877A pour raliser une partie de la gestion dun appareil
photographique. Lobjectif du logiciel implant sur cette architecture de microcontrleur est
de permettre de dterminer la vitesse dobturation, de grer le flash, et de prciser le nombre
de photos utilises.
Commande de prise de vue (bouton dclencheur) : 1 bit.
Mesure de lintensit lumineuse de la scne photographie : 1 bits
Nombre de photos ralises (16 poses au maximum) : 4 bits
Slection de la commande manuelle ou automatique du flash : 1 bit
Commande du Flash : 1bit
3.1. Incrmentation du nombre de photos
On propose dinterconnecter les ports A et B aux divers signaux dentres et de sortie du
systme de la manire suivante :
Dclenchement de la prise de vue : Bit 0 du Port A en entre. Si le bit est au niveau 1
alors le dclencheur est press. Cela sera ralis par un bouton poussoir.
Nombre de photos : Bits 0 3 du Port B en sortie. Affichage en binaire sur les leds.

Rappel : La PORTA est un port Multiplex, cela signifie quil est utilis pour deux choses
diffrentes. Il peut tre utilis en mode Analogique (pour le convertisseur AN) ou en mode
numrique (pour les ports dentre sortie numrique). Vous devez rgler le registre ADCON1
afin de configurer ce port en mode numrique.
Q6. Raliser un programme qui, chaque appui sur le dclencheur, incrmente le nombre
de photos prises.
3.2. Commande du flash
On rajoute notre application une commande dun flash pour amliorer la luminosit de
certaines scnes. Le flash sera soit inactif, soit utilis en mode automatique. C'est--dire quil
se dclenchera lorsque la mesure dclairage est infrieure un seuil donn par un capteur
dintensit. Ce capteur est symbolis par un bouton poussoir sur le bit 2 du Port A.

Le flash sera command de la manire suivante :

Figure 2 : Chronogramme de la commande du flash
Les connexions utilises seront les suivantes :
Mode de fonctionnement du flash : Bit 1 du Port A en entre. Si le bit A1 est au
niveau 1 le mode du flash est automatique sinon il est inactif.
Mesure de lintensit lumineuse pour louverture du diaphragme : Bits 2 du Port A en
entre. Cela sera ralis par un bouton poussoir. Si le bit est 1, la scne est sombre,
sinon lintensit lumineuse est suffisante (pas besoin du flash).
Commande du flash : Bit 4 du Port B. Une LED symbolisera le flash.
Q7. Modifiez votre programme C afin de faire fonctionner la commande du flash

600ms
Dclencheur
Flash
t
t

Universit de Savoie
Module ETRS-604
Microprocesseur & Microcontrleur

TP2
Programmation sur microcontrleur PIC


Objectifs : WatchDog TIMER & Gestion des interruptions sur un microcontrleur en C
I. Etude du WatchDog
Q1. Expliquer le rle du WatchDog dans un systme microcontrleur.
1. Mise en vidence du fonctionnement du WatchDog
Pour illustrer le fonctionnement du WatchDog, ditez le programme principal de
chien_garde.c suivant dans un nouveau projet :

1. void main( void)
2. {
3. PORTB.F0 = 0;
4. TRISB.F0 = 0; /* PORTB.F0 en Sortie */
5. PORTB.F0 = 1; /* Allumage de la led */
6. Delay_ms(100);
7. while (1) {
8. PORTB.F0 = 0;
9. }
10. }

Transfrer ce fichier HEX dans le PIC une fois en validant le WatchDog et une autre fois sans
slectionner loption WatchDog. Le changement des fusibles ou device flags du
WatchDog se font dans Project>Edit Project.

Q2. Valider les diffrences de fonctionnement avec et sans WatchDog.
2. Dveloppement dune application avec le WatchDog
Pour illustrer totalement le fonctionnement du WatchDog on se propose de coder une
simulation de plantage dun logiciel. Le plantage du logiciel sera simul par une boucle
infinie. Lorganigramme du programme est le suivant:


Q3. Mettre en place lapplication ci-dessus sans la gestion du WatchDog. Vrifier que le
plantage du logiciel est bien effectif.
Allumer PORTB.F0
TEMPO 100 ms
Eteindre PORTB.F0


PORTA.F0
appuy ?
Plantage : Boucle infinie
>>while(1) ;
Non
Oui
Allumer PORTB.F0
Q4. Mettre en place lapplication ci-dessus avec gestion du WatchDog. Vrifier que le
RESET du microcontrleur seffectue bien lorsque celui-ci plante (rentre dans la boucle
infinie).
Q5. Expliquer quelle instruction il faut utiliser priodiquement pour viter le RESET du
microcontrleur lorsque le programme fonctionne normalement. Que fait cette instruction
exactement?
II. Etude des interruptions
1. Prsentation des interruptions
Ce microcontrleur peut tre interrompu par des sources multiples. En revanche il ne dispose
que dun seul vecteur dinterruption. Ce vecteur est en fait ladresse 0x0004 de lespace
programme.
Aprs une interruption il est donc ncessaire que le sous-programme dinterruption identifie
linterruption qui a t active. Il remontera la source de linterruption laide des bits dtat
associs aux interruptions (exemple : Flag T0IF=1 pour un overflow du Timer 1).
2. Exemple de gestion des interruptions
Le programme gestion_IT.c propose une illustration du fonctionnement de ces interruptions.
Vous pouvez rcuprer ce fichier sur lespace etudiant du site www.master-electronique.com
Analyser le contenu de ce programme dexemple.
Q6. Parmi ces 3 interruptions, laquelle est la plus prioritaire dans le cas o deux sources
dinterruption deviennent actives en mme temps ?
Q7. Comment peut-on modifier les priorits relatives de ces 3 interruptions ?
Q8. Faire un schma du microcontrleur avec les Leds et les boutons poussoir qui
permettront de valider le fonctionnement de ce programme. Configurer votre carte
correctement. Tester et expliquer son fonctionnement.
3. Interruption timer
On dsire gnrer une note proche du La (frquence 440Hz) Ce signal carr priodique doit
tre disponible sur le Bit1 du port A et sera visualis sur loscilloscope. Ce fonctionnement est
analogue celui du clignotement tudi lors du TP prcdent. La principale diffrence rside
dans le fait que lon utilisera linterruption du timer pour gnrer les dures ltat haut et
ltat bas du signal priodique et non la procdure delay_ms().
Q9. Modifier le programme gestion_IT.C pour raliser la gnration de cette note en
utilisant linterruption Timer.
III. Accordeur de guitare
Dans cette partie on se propose dutiliser le microcontrleur dfini prcdemment pour
raliser un accordeur de guitare.
4. Gnration dune note
Laccord dune guitare peut tre ralis laide dun diapason. La note mise par le diapason
est un LA (440 Hz). Elle correspond la 5
me
corde dune guitare joue vide.
Q10. Proposer un programme qui gnre la note LA , lorsque lon appuie sur un bouton
poussoir.
5. Modification de la corde accorder.
A laide des 2 boutons Suivante et Prcdente on souhaite pouvoir modifier la note
gnre par laccordeur. Il sera alors possible daccorder une nouvelle corde de la guitare.
Lorsque lon appuie sur le bouton Suivante on passe laccord de la corde suivante et
lorsque cest le bouton Prcdente cest laccord de la corde prcdente. Par exemple une
fois la 5
me
corde accorde on peut gnrer la note qui correspond la 4
me
corde si lon a
appuy une fois sur la touche Prcdente .
Les notes et les frquences associes chaque corde joue vide sont :
6
me
corde : Mi 3=330Hz 5
me
corde : La 3 =440Hz
4
me
corde : R 4 =588Hz 3
me
corde : Sol 4 =830Hz
2
me
corde : Si 4 =988Hz 1
re
corde : Mi 5 =1320Hz
Q11. Proposer un programme C intgrant les interruptions permettant de gnrer les 6
notes de chaque corde dune guitare. Les dtections des appuis des touches notes
suivantes et note prcdente seront scrutes dans le main().
Q12. Proposer le mme programme en intgrant cette fois seulement la fonction note
suivante dont la dtection de lappui de la touche est gre par une interruption externe.

Universit de Savoie
Module ETRS-604
Microprocesseurs et microcontrleurs

TP3
Programmation sur microcontrleur PIC


Objectifs : Mise en uvre et utilisation des afficheurs 7 segments, multiplexage
laffichage, gestion de laffichage par interruption.
I. Prsentation
Les microcontrleurs doivent souvent rendre compte de certaines informations au monde
extrieur au moyen dafficheurs (en gnral des afficheurs 7 segments). Pour Piloter les 7
segments et le point dun afficheur, il est ncessaire de disposer de 8 signaux logiques (et un
autre supplmentaire pour activer lafficheur) comme par exemple ceux dun port dun
microcontrleur. Lorsque quun seul afficheur est commander, un port du microcontrleur
lui sera ddi (plus un signal logique supplmentaire issu dun autre port pour activer
lafficheur). En revanche, si 4 afficheurs sont piloter, il devient rdhibitoire dutiliser autant
de port du microcontrleur que dafficheurs : il faut alors utiliser la technique du multiplexage
laffichage o un seul port pilotera chaque afficheur mais seulement un moment donn.
II. Mise en uvre dun afficheur
Nous souhaitons raliser un compteur allant de 0 9 chaque fois que lon appuie sur un
bouton poussoir. Un autre bouton poussoir permettra le dcomptage de 9 0. On grera aussi
le dpassement : si on est 9 et que le BP comptage est de nouveau appuy, on repasse 0
(mme principe pour le dcomptage : si on est 0 on repasse 9). On prvoira aussi un autre
bouton poussoir pour effectuer une remise zro tout moment.
Q1. Afficher le chiffre 0 sur lafficheur DIS0.
Note : Pensez utiliser loutil ddi AFFICHEUR 7 SEGMENTS dans le menu :
Tools --> Seven Segment Convertor
Q2. Ecrire et tester le code dune fonction C Affiche_Chiffre qui prend un nombre
entier N comme argument et renvoie un nombre non sign sur 8 bits (unsigned char). Ces 8
bits permettront de dlivrer les bons niveaux logiques affecter au port D pour afficher le
nombre N sur lafficheur DIS0.

Q3. Ecrire lapplication finale.
III. Multiplexage et persistance rtinienne
Q4. Raliser un programme cyclique (qui tourne en permanence) qui utilisera les 4
afficheurs en faisant apparatre successivement pendant 500 ms : dabord un S sur
lafficheur DIS3, puis un T sur lafficheur DIS2, ensuite un I sur lafficheur DIS1 et
enfin un C sur lafficheur DIS0.
Note : Pour obtenir une TEMPO de 500 ms, on pourra utiliser la fonction :
delay_ms (Nb de milliseconde)
Q5. Modifiez votre programme afin que lon puisse observer le sigle STIC en entier
sans effet dintermittence.
IV. Application : minuteur
Q6. Ecrire le code dune fonction C Separe_DU (sparation des Dizaines et des
Units) qui prend un nombre entier N (infrieur ou gal 59) comme argument et qui spare
alors les dizaines et les units en plaant ces deux nombres dans deux variables diffrentes de
type entier.
Q7. Concevez un programme qui permet de raliser les fonctionnalits dun minuteur
pouvant au maximum donn un temps jusqu' 10 minutes avec une prcision gale la
seconde.
Note 1 : Les afficheurs DIS0 et DIS1 afficheront les secondes prcises de 0 59, lafficheur
DIS2 affichera en permanence un point et enfin lafficheur DIS3 affichera les minutes
prcises de 0 9.

Note 2: Un BP dmarrera le comptage, un BP larrtera et enfin un BP permettra la RAZ du
minuteur.

Nota 3: Pensez utiliser linterruption timer0 (quil faudra paramtrer comme dans le TP2)
pour un rafrachissement correct des afficheurs afin que notre il nait pas la sensation
dintermittence ou de scintillement.
V. Application Convertisseur A/N
Raliser une conversion analogique / numrique dune valeur comprise entre 0V et 5V
rglable laide du potentiomtre de votre platine.
Q8. Dans un premier temps, afficher les 8 bits de poids fort sur les leds du PORTB.

Q9. Dans un deuxime temps, affich les valeurs en dcimal ( de 0 1023 ) sur les
afficheurs 7 segments.