Professional Documents
Culture Documents
Travaux Dirigs
Microprocesseur et Microcontrleur
TD1 : Rappels et jeu dinstruction TD2 : Timer, Port E/S dun microcontrleur TD3 : Les interruptions TD4 : Gestion dafficheur 7 segments TD5 : Conversion Analogique/Numrique
TD 1
Rappels et jeu dinstruction
I. Systme microprocesseur
Un processeur 64 bits stocke les donnes binaires quil traite dans des circuits intgrs de mmoire RAM. La capacit de chaque circuit mmoire est de 4 Mo, les donnes binaires tant organises en mots de 64 bits. La capacit totale de lensemble des mmoires vives est de 32 Mo. Q1. De combien de circuits diffrents est constitu lensemble de la mmoire vive associe ce processeur ? Q2. Donner le nombre de cases mmoires disponibles dans chaque circuit RAM ainsi que le nombre total de cases mmoires pour lensemble des circuits. Q3. Quelle doit tre la taille minimum du bus dadresse de ce processeur ? Quelle est ladresse la plus haute et ladresse la plus basse (en hexadcimal) accessible par le processeur ? La taille du bus dadresse sera dsormais la taille minimum que vous venez de trouvez. Q4. Parmi lensemble des bits constituant le bus adresse, donner le nombre de bits rservs la slection dun circuit mmoire (boitier) et le nombre de bits rservs la slection dun emplacement dans cette mmoire. Q5. Donner les adresses de dbut et de fin des quatre premiers circuits en compltant le tableau ci-dessous.
Circuits
RAM 3
A16
A15
A12
A11
A8
A7
A4
A3
A0
Adresses Hexadcimal
RAM 2
RAM 1
RAM 0
Q6. Reprsentez sur un schma lensemble des circuits, du processeur et des bus (on ne reprsentera que deux RAMs). On devra faire apparaitre clairement le nombre de fils sur chaque partie des bus. Q7. Donnez un exemple darchitecture ralisant le dcodage dadresse.
1.
Q8. Quelle est la quantit mmoire disponible pour stocker le programme dans votre microcontrleur ? Pouvez vous retrouver la cohrence entre la taille de la mmoire programme et la taille du registre PC (Program Counter). Q9. Quelle est la quantit mmoire disponible pour stocker des donnes dans votre microcontrleur ?
2.
Jeu dinstruction
Q10. Combien de cycle instruction prend chacune des instructions ? Q11. Combien de cycle horloge prend chacune des instructions ? Le programme suivant est crit en assembleur. Il fait varier la valeur de sortie du bit 0 du PORTB. Lutilisateur voudrait raliser un signal carr en sortie. MOVLW MOVWF BCF BSF GOTO FEh ; TRISB ; TRISB,0; TRISB,0; BOUCLE;
BOUCLE
Q12. Donner le code C correspondant. Q13. En prenant en compte les temps de chacune des instructions, tracer le chronogramme du PORTB. Quelle remarque peut-on faire sur le rapport cyclique du signal par rapport au souhait initial du programmeur ? Application du TP : Q14. Quelle mesure pouvez-vous effectuer pour mesurer le temps de cycle instruction de ce microcontrleur ?
TD 2
Timer, Port E/S dun microcontrleur
On considre maintenant un cadencement du PIC 4Mhz, et une utilisation en mode temporisateur du Timer 0. Q5. Expliquer lutilit et le fonctionnement du module PRESCALER.
Q6. Dans le cas ou le timer nutilise pas de prescaler (PSA=1) quelle sera la priode de positionnement du bit de fin de comptage (overflow) TMR0IF. Q7. Quelle valeur doit-on place dans le TMR0 si nous souhaitons mesurer un temps de 156s. La priode maximal du timer est trs faible au regard de beaucoup dapplications. Ainsi, un Prescaler peut tre implment dans le fonctionnement des Timers. Q8. Remplir le tableau suivant relatif au temps de dbordement du Timer 0 en fonction du prescaler utilis.
0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
2 4 8 16 32 64 128 256
Q9. Donner la configuration que vous choisiriez pour un dbordement du Timer au bout de 1,3ms.
2.
Programmation du timer
Une mthode classique pour attendre un certain temps dans un programme est de raliser une boucle de temporisation souvent appele par ltiquette : TEMPO. Cette mthode est base sur la programmation dune boucle en langage assembleur. En effet, en connaissant le nombre dinstructions utilises ainsi que le nombre de cycles pour excuter ces instructions, on peut aisment effectuer un temps dattente. Cette mthode est cependant assez lourde puisque quil faut prendre en compte toutes les instructions de notre boucle. Une mthode plus rigoureuse est donc dutiliser le timer disponible dans le microcontrleur. Q10. Proposez un organigramme qui permettra de compter un temps de 256s (temps le plus lev sans prescaler) qui servira de priode pour excuter un petit programme quelconque. La fin du comptage sera surveille par le flag doverflow qui correspond la fin de comptage du timer. 256s Programme quelconque 256 s Programme quelconque 256 s etc linfini. Note : Un organigramme est une succession de rectangles (actions mener) et de losanges (tests) qui reprsentent lalgorithme du programme raliser. Q11. Proposez un code langage C pour cet organigramme.
Que le port soit configur en entre ou en sortie, il est toujours possible deffectuer une lecture du port. Q3. Expliquez le fonctionnement dune lecture du port A vers le bus de donne interne (Data Bus). Larchitecture du bit 4 du port A est prsente dans la datasheet. Q4. Q5. Quel est le nom de cette structure logique de sortie. Quelle particularit possde la structure logique dentre de RA4 (bit 4 du port A) ?
2.
Le schma ci-dessous reprsente une application simple dallumage dune led par appuis dun bouton poussoir.
Q6. Donner lorganigramme du programme qui allume la led lors de lappui du bouton poussoir, et qui teint la led lors du relchement. Note : Prenez soin de vrifier comment fonctionne le PORTA en sortie et le PORTB en entre. Q7. Ecrire le programme C correspondant.
TD 3
Les interruptions
Nous allons tudier deux microcontrleurs dont la gestion des interruptions est sensiblement diffrente.
1.
La documentation technique du microcontrleur ADUC812 dAnalog Device est donne en annexe. Q1. Q2. Combien de sources diffrentes peuvent interrompre le C ? Quappelle t-on le masquage dinterruption ? Quel registre est concern ?
Q3. Donnez la procdure pour autoriser lensemble des interruptions suivantes : le timer0, la liaison srie et le convertisseur A/D. Q4. Lvnement li au module timer qui cre une interruption, est son dbordement. Retrouver les vnements lis aux autres modules qui crent interruptions. Vous remplirez la 2me et la 3ime colonne du Tableau 1.
2.
Q5. Combien de niveaux de priorits peut-on choisir pour les interruptions ? Comment le niveau est- il slectionn ? Q6. Daprs le paragraphe interrupt priority et le tableau XXV, expliquez ce quil se passe si une interruption dune priorit suprieure intervient pendant une routine dinterruption de priorit infrieure ? Q7. Si deux interruptions de niveau de priorit diffrent arrivent en mme temps, cest linterruption qui a la plus forte priorit qui sexcutera en premier. Comment fait-on pour dpartager deux priorits de mme niveau qui arrivent en mme temps ?
3.
Vectorisation
Q8. Quest ce quun vecteur dinterruption ? Quest ce quune table des vecteurs dinterruption ? Q9. Source IE0 Remplir la 4me colonne du Tableau 1. Module matriel Explication de lvnement Adress Vector
TF0
IE1
TF1
RI+TI
ADCI
PSMI
Tableau 1 : Source d'interruption, vecteur et vnements
Q10. Lors dune interruption du Timer 0, quelle adresse le microcontrleur trouvera le sous-programme dinterruption correspondant ? Q11. Combien de place mmoire possde t on pour coder lensemble de ce sous programme dinterruption ? Que convient-il de faire si nous devons utiliser plus de place pour coder ce sous programme ?
4.
Traitement de linterruption
On a vu que les vnements crant des interruptions sont grs par le positionnement de flag dans des registres.
Q12. Nous nous plaons dans le cas ou nous avons pris en compte une interruption qui tait survenue. Quelle action faut-il alors ventuellement raliser pendant le sous programme dinterruption concernant ces flags lis linterruption. Q13. Quelles sont les autres actions raliser au dbut du sous programme, et la fin du sous programme dinterruption ?
1.
Q1. Q2.
Quel est lavantage de grer ce systme par interruption ? Dfinir le mot de configuration du registre INTCON.
Q3. Daprs le paragraphe 14.12- Context Saving During Interrupt de la documentation, quel est la sauvegarde qui est faite automatiquement par le microcontrleur ? Q4. A quelle adresse du microcontrleur devons nous implmenter le code de notre sous programme dinterruption. Q5. Raliser lorganigramme complet pour le programme de cette application.
2.
Dans le microcontrleur ADuC812, chaque interruption possdait un vecteur dinterruption particulier. Ici, nous nen possdons quun. Vous pourrez vous rfrer au paragraphe 14.11Interrupts pour rpondre aux questions suivantes. Q6. Une fois que notre programme principal a bifurqu vers ladresse 0x0004, comment fait t on pour savoir quelle interruption est rellement survenue ? Dans le microcontrleur ADuC812, chaque interruption pouvait tre dfinie par deux niveaux de priorit, ici il ny a pas de niveau affect. Si une interruption arrive alors quune autre est dj en cours, elle sera traite lorsque la premire routine se terminera. Q7. Dans le cas ou deux interruptions arrivent en mme temps, comment le microcontrleur fait pour choisir la routine dinterruption quil excutera ?
2.2. Application
En ralit, le fonctionnement de notre application comme nous lavons vu jusquici ne fonctionne pas. Ceci est du aux problmes des rebonds du bouton poussoir. Q8. Expliquez ce phnomne et proposer une solution pour le rsoudre.
Q9. Proposez un organigramme pour raliser cette application sachant que toute la gestion de ce systme devra se drouler en interruption. Note 1 : Le programme principal ne fera que boucler sur lui-mme Note 2 : Nous utiliserons le timer 1 pour inhiber les interruptions du bouton poussoir pendant un certain temps.
TD 4
Gestion dafficheur 7 segments
Lafficheur 7 segments de la carte de dveloppement est constitu de la faon suivante :
Q1. Reprenez le schma prcdent en reprsentant seulement lafficheur DIS3, et en le remplaant par les LED qui constituent un afficheur 7 segments? Q2. Donner les valeurs donner au port D afin dafficher les nombres de 0, 1 et 2.
Q3. Raliser lorganigramme dun programme ralisant laffichage du chiffre 0 sur lafficheur DIS3 Q4. Raliser lorganigramme dun programme ralisant laffichage de deux chiffres diffrents sur DIS3 et sur DIS2. Q5. Raliser lorganigramme dun programme ralisant lincrmentation des deux chiffres affichs toutes les secondes.
TD 5
Conversion Analogique/Numrique
Q1. Quelles sont les tapes dune conversion AN ? Expliquer les 2 temps qui constituent ces tapes ? Q2. Quelle recommandation importante est cite dans la documentation au chapitre 11.1 au sujet du temps dacquisition ? Donner le temps dacquisition typique que nous rencontrons pour un montage classique. Lire le chapitre 11.2 Q3. Expliquer ce quest le temps TAD. Quel est le temps minimum que lon peut admettre pour le temps TAD ? Q4. Quel sera donc le temps de conversion : conversion time ? En dduire le temps total de la conversion A/N.
Reprendre les 7 tapes de la documentation sur la ralisation dune conversion analogique numrique. Nous raliserons une application avec un chantillonnage dune valeur sur la voie 1 toutes les 500 ms. Nous fonctionnerons sans interruption avec un quartz 8 MHz. Q5. Q6. Donner lorganigramme entier de votre programme. Donner le code en langage C de chacune des tapes de votre organigramme.