IUP SI 1 Examen Architecture des calculateurs 26 Avril 2004
Dur´ee 2h. Documents autoris´es.
1 G´en´eration d’un signal avec GPT1
Les registres de l’unit´e GPT1 du C167 sont initialis´es ainsi:
T2CON=0x25;
T3CON=0x2C0;
T4CON=0x26;
T2=20000;
T3=10000;
T4=10000;
DP3=0x08;
1. D´eduire de ces initialisations le mode de fonctionnement de chacun des temporisateurs.
2. Dessiner le chronogramme (´evolution en fonction du temps) de la valeur du registre T3 et de
celle du bit T3OTL sur un horizon d’environ 30 millisecondes.
3. Donner la p´eriode T du signal pr´esent sur la broche P3.3 ainsi que la valeur de son rapport
cyclique.
4. D´eterminer une expression g´en´erale permettant de calculer T en fonction des valeurs contenues
dans T2 et T4 et de la r´esolution de l’horloge tr.
5. Mˆeme question pour le rapport cyclique R.
6. En d´eduire les valeurs d’initialisations de T2 et T4 en fonction de T, tret R.
2 Communication s´erie
L’application propos´ee consiste `a traiter des requˆetes re¸cues par l’interm´ediaire de la ligne s´erie.
Une requˆete consiste en une demande d’acquisition d’un signal sur une entr´ee analogique. Elle
est simplement constitu´ee d’un nombre indiquant le num´ero du canal sur lequel doit se faire l’ac-
quisition.
La r´eponse `a la requˆete est la valeur exprim´ee en milli-volts (sous la forme d’un entier sur 16
bits) de la tension sur la broche correspondante. Elle est renvoy´ee par le micro-contrˆoleur sur la
ligne s´erie.
La communication se fait en asynchrone sur 8 bits sans parit´e avec 2 bits de stop `a 9600 bauds.
Les erreurs de transmission ne sont pas trait´ees.
On suppose que les fonctions suivantes sont fournies et accessibles en incluant dans le programme
la directive de compilation:
#include <com.h>
– Fonction d’initialisation de la liaison s´erie (hors registres d’interruptions).
void init_ASC0();
– Fonction qui renvoie la valeur en mV sur l’entr´ee canal.
int mesure(int canal);
– Fonction qui envoie sur la ligne s´erie l’entier valeur.
void emission(int valeur);
1. Ecrire un programme utilisant ces fonctions et permettant de r´epondre aux requˆetes re¸cues
(Ces requˆetes peuvent arriver n’importe quand).
2. Ecrire la fonction d’initialisation de l’unit´e s´erie ASC0: init ASC0.
3. Ecrire la fonction mesure.
4. Ecrire la fonction emission sachant que l’on envoie d’abord les bits de poids faible de l’entier.