Poly TP
Poly TP
Poly TP
Travaux Pratiques
Microprocesseurs & Microcontrleurs
TP1 : Programmation sur microcontrleur PIC (1) TP2 : Programmation sur microcontrleur PIC (2) TP2 : Programmation sur microcontrleur PIC (3)
TP1
Programmation sur microcontrleur PIC
Objectifs : Mise en uvre des fonctions dun microcontrleur PIC en langage C
1. 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.
1-diteur de texte
2-Compilateur
Fichier Objet MonProg.OBJ
3-Linkeur
Bibliothques Fichier excutable MonProg.EXE Mon Prog.HEX
4-Chargeur
Mmoire
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.
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 :
o fichier.asm : un fichier en langage assembleur avec les codes machines correspondant chaque instruction et les adresses mmoire du code. o fichier.lst : mme information que le fichier.asm avec en plus la rsolution des adresses pour les variables utilises. o 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 en mode Release. Vous essayerez de trouver de faon intuitive comment raliser ces tapes une une. Q2. Avant de tester sur la platine, visualiser le code gnr par le compilateur (View>View Assembly). Il sagit du fichier clignotement.asm. Expliquer les instructions importantes qui sont utilises pour linitialisation et le pilotage des leds. Q3. Daprs la documentation EasyPic User Manual sur les switches et sur les LED, dessiner le montage que vous souhaitez raliser sur votre feuille pour faire fonctionner cette application. Prciser alors les rglages apporter sur la carte pour que cela fonctionne.
3. Applications
3.1. Mesure du temps de cycle du processeur
Le temps de cycle est le temps dexcution dune instruction. En faisant passer successivement 1 (une instruction) puis 0 (une instruction) le bit 0 du port B, on peut mesurez loscilloscope le temps de cycle du processeur. Mettre le switch 2 (SW2) convenablement afin davoir accs au mesure directement sur les broches de la carte droite. Reprer lendroit o vous pouvez accder cette mesure daprs le manuel page 32. Q4. Modifier le programme prcdent afin de raliser cette mesure de temps de cycle. Justifiez ce que vous visualisez loscilloscope. Q5. Est-ce cohrent avec les 8 MHz du cadencement du microcontrleur ? Donner une explication cohrente sachant que daprs la documentation, un temps cycle (=une priode dinstruction) correspond 4 priode dhorloge.
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
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. Q9. Modifiez votre programme C afin de faire fonctionner la commande du flash
TP2
Programmation sur microcontrleur PIC
Objectifs : WatchDog TIMER & Gestion des interruptions sur un microcontrleur en C
1. Etude du WatchDog
Q1. Expliquer le rle du WatchDog dans un systme microcontrleur.
Raliser un projet et compiler ce fichier. 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. A laide de ces tests et de la documentation (chapitre 14.1 et 14.13 de la datasheet) expliquer les diffrences de fonctionnement entre ces 2 configurations.
Q8. Faire un schma du microcontrleur avec les Leds et les boutons poussoir qui permettront de valider le fonctionnement de ce programme. Compilez cet exemple et transfrez-le dans le PIC (sans WatchDog). Expliquer et Tester son fonctionnement.
3. Accordeur de guitare
Dans cette partie on se propose dutiliser le microcontrleur dfini prcdemment pour raliser un accordeur de guitare.
TP3
Programmation sur microcontrleur PIC
Objectifs : Mise en uvre et utilisation des afficheurs 7 segments, multiplexage laffichage, gestion de laffichage par interruption.
1. 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.
Partie hardware
Q1. Analysez ce schma puis expliquez qualitativement son fonctionnement. Quel est notamment le rle des broches Ra0 Ra3 du port A et celui de toutes les broches du port D. Q2. Prcisez alors les rglages (Switch SW2 en particulier) apporter sur la carte EasyPIC4 pour que le fonctionnement des 4 afficheurs soit possible.
Partie software
Q3. Quels niveaux logiques doit on prsenter sur chacune des sorties du port D pour pouvoir afficher le chiffre 0 ou la lettre U sur un seul afficheur. Donnez alors la valeur sous binaire, dcimale ou hexadcimale que doit prendre le port D (pour 0 etU).
Nota: pensez utiliser loutil ddi AFFICHEUR 7 SEGMENTS dans le menu : Tools --> Seven Segment Convertor Q4. Ecrire 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 (celui le plus droite). Q5. Ralisez un programme qui permet de tester la fonction FormatAffichChiffre . Ce programme pourra par exemple tre un compteur allant de 0 9 chaque fois que lon appuie sur un bouton poussoir (BP). 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.
4. Application : minuteur
Q8. Ecrire le code dune fonction C Separe_DU 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. Q9. 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. Nota 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. Nota 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.