Académique Documents
Professionnel Documents
Culture Documents
Travaux Diriges Microprocesseur Microcontroleur 1
Travaux Diriges Microprocesseur Microcontroleur 1
Travaux Dirigés
Microprocesseur et Microcontrôleur
Sylvain MONTAGNY
sylvain.montagny@univ-savoie.fr
Bâtiment chablais, bureau 13
04 79 75 86 86
TD 1
Rappels et jeu d’instruction
I. Système à microprocesseur
Un processeur 64 bits stocke les données binaires qu’il traite dans des circuits intégrés de
mémoire RAM. La capacité de chaque circuit mémoire est de 4 Mo, les données binaires étant
organisées en mots de 64 bits. La capacité totale de l’ensemble des mémoires vives est de 32
Mo.
Q1. De combien de circuits différents est constitué l’ensemble de la mémoire vive associée
à ce processeur ?
Q2. Donner le nombre de cases mémoires disponibles dans chaque circuit RAM ainsi que
le nombre total de cases mémoires pour l’ensemble des circuits.
Q3. Quelle doit être la taille minimum du bus d’adresse de ce processeur ? Quelle est
l’adresse la plus haute et l’adresse la plus basse (en hexadécimal) accessible par le
processeur ?
La taille du bus d’adresse sera désormais la taille minimum que vous venez de trouvez.
Q4. Parmi l’ensemble des bits constituant le bus adresse, donner le nombre de bits
réservés à la sélection d’un circuit mémoire (boitier) et le nombre de bits réservés à la
sélection d’un emplacement dans cette mémoire.
Q5. Donner les adresses de début et de fin des quatre premiers circuits en complétant le
tableau ci-dessous.
Circuits A21 A20 A19 A16 A15 A12 A11 A8 A7 A4 A3 A0 Adresses Hexadécimal
Fin
RAM 3
Début
Fin
RAM 2
Début
Fin
RAM 1
Début
Fin
RAM 0
Début
Tableau 1 : Adressage des circuits RAM
Q6. Représentez sur un schéma l’ensemble des circuits, du processeur et des bus (on ne
représentera que deux RAMs). On devra faire apparaitre clairement le nombre de fils sur
chaque partie des bus.
Q9. Quelle est la quantité mémoire disponible pour stocker des données dans votre
microcontrôleur ?
2. Jeu d’instruction
Q10. Combien de cycle instruction prend chacune des instructions ?
Le programme suivant est écrit en assembleur. Il fait varier la valeur de sortie du bit 0 du
PORTB. L’utilisateur voudrait réaliser un signal carré en sortie.
MOVLW FEh ;
MOVWF TRISB ; // Configuration du bit PORTB.0 en sortie
BOUCLE BCF TRISB,0;
BSF TRISB,0;
GOTO 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
microcontrôleur ?
Université de Savoie
Module ETRS-604 : Microprocesseurs & Microcontrôleurs
TD 2
Timer, Port E/S d’un microcontrôleur
Q2. Quels sont les bits qui permettent de sélectionner le mode compteur ou temporisateur
pour les Timers 0 et Timer 1 ? Quelle est la particularité du Timer 2 vis-à-vis de ces deux
modes de fonctionnement ?
Q3. Lors du fonctionnement en mode compteur pour le Timer 0, comment peut-on décider
du front déclenchant une incrémentation du compteur ?
Q6. Dans le cas ou le timer n’utilise pas de prescaler (PSA=1) quelle sera la période de
positionnement du bit de fin de comptage (overflow) TMR0IF.
Q7. Quelle valeur doit-on placée dans le TMR0 si nous souhaitons mesurer un temps de
156µs.
La période maximal du timer est très faible au regard de beaucoup d’applications. Ainsi, un
« Prescaler » peut être implémenté dans le fonctionnement des Timers.
Q9. Donner la configuration que vous choisiriez pour un débordement du Timer au bout
de 1,3ms.
2. Programmation du timer
Une méthode classique pour attendre un certain temps dans un programme est de réaliser une
boucle de temporisation souvent appelée par l’étiquette : TEMPO. Cette méthode est basée
sur la programmation d’une boucle en langage assembleur. En effet, en connaissant le nombre
d’instructions utilisées ainsi que le nombre de cycles pour exécuter ces instructions, on peut
aisément effectuer un temps d’attente. Cette méthode est cependant assez lourde puisque qu’il
faut prendre en compte toutes les instructions de notre boucle. Une méthode plus rigoureuse
est donc d’utiliser le timer disponible dans le microcontrôleur.
Q1. Quel doit être le fonctionnement des transistors P et N pour obtenir un « 1 » logique
en sortie ? Pour obtenir un « 0 » ?
Q2. Quelle doit être le fonctionnement des transistors P et N pour une configuration du
port A en entrée ? Quelle est le nom de cette structure de sortie logique.
Que le port soit configuré en entrée ou en sortie, il est toujours possible d’effectuer une
lecture du port.
Q3. Expliquez le fonctionnement d’une lecture du port A vers le bus de donnée interne
(Data Bus).
Q5. Quelle particularité possède la structure logique d’entrée de RA4 (bit 4 du port A) ?
Q6. Donner l’organigramme du programme qui allume la led lors de l’appui du bouton
poussoir, et qui éteint la led lors du relâchement.
TD 3
Les interruptions
Nous allons étudier deux microcontrôleurs dont la gestion des interruptions est sensiblement
différente.
Q3. Donnez la procédure pour autoriser l’ensemble des interruptions suivantes : le timer0,
la liaison série et le convertisseur A/D.
Q4. L’événement lié au module timer qui crée une interruption, est son débordement.
Retrouver les évènements liés aux autres modules qui créent interruptions. Vous remplirez la
2ème et la 3ième colonne du Tableau 1.
Q7. Si deux interruptions de niveau de priorité différent arrivent en même temps, c’est
l’interruption qui a la plus forte priorité qui s’exécutera en premier. Comment fait-on pour
départager deux priorités de même niveau qui arrivent en même temps ?
3. Vectorisation
Q8. Qu’est ce qu’un vecteur d’interruption ? Qu’est ce qu’une table des vecteurs
d’interruption ?
IE0
TF0
IE1
TF1
RI+TI
ADCI
PSMI
Q11. Combien de place mémoire possède t on pour coder l’ensemble de ce sous programme
d’interruption ? Que convient-il de faire si nous devons utiliser plus de place pour coder ce
sous programme ?
4. Traitement de l’interruption
On a vu que les évènements créant des interruptions sont gérés par le positionnement de flag
dans des registres.
Q12. Nous nous plaçons dans le cas ou nous avons pris en compte une interruption qui était
survenue. Quelle action faut-il alors éventuellement réaliser pendant le sous programme
d’interruption concernant ces flags liés à l’interruption.
Q13. Quelles sont les autres actions à réaliser au début du sous programme, et à la fin du
sous programme d’interruption ?
Q4. A quelle adresse du microcontrôleur devons nous implémenter le code de notre sous
programme d’interruption.
Q6. Une fois que notre programme principal a bifurqué vers l’adresse 0x0004, comment
fait t on pour savoir qu’elle interruption est réellement survenue ?
Dans le microcontrôleur ADuC812, chaque interruption pouvait être définie par deux niveaux
de priorité, ici il n’y a pas de niveau affecté. Si une interruption arrive alors qu’une autre est
déjà en cours, elle sera traitée lorsque la première routine se terminera.
2.2. Application
En réalité, le fonctionnement de notre application comme nous l’avons vu jusqu’ici ne
fonctionne pas. Ceci est du aux problèmes des rebonds du bouton poussoir.
Q9. Proposez un organigramme pour réaliser cette application sachant que toute la
gestion de ce système devra se dérouler en interruption.
TD 4
Gestion d’afficheur 7 segments
L’afficheur 7 segments de la carte de développement est constitué de la façon suivante :
Q2. Donner les valeurs à donner au port D afin d’afficher les nombres de 0, 1 et 2.
Q5. Réaliser l’organigramme d’un programme réalisant l’incrémentation des deux chiffres
affichés toutes les secondes.
Université de Savoie
Module ETRS-604
Microcontrôleur et Microprocesseurs
TD 5
Conversion Analogique/Numérique
Q1. Quelles sont les étapes d’une conversion AN ? Expliquer les 2 temps qui
constituent ces étapes ?
Q3. Expliquer ce qu’est le temps TAD. Quel est le temps minimum que l’on peut
admettre pour le temps TAD ?