IUP SI 1 Examen Architecture des calculateurs 26 Avril 2004
Dur´ee 2h. Documents autoris´es.
Correction
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. eduire de ces initialisations le mode de fonctionnement de chacun des temporisateurs.
T2 est utilis´e en rechargement de T3 sur fronts montants de T3OTL
T3 est en timer, r´esolution 400ns, d´ecompteur, sortie T3OUT activ´ee.
T4 est utilis´e en rechargement de T3 sur fronts descendants de T3OTL
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.
T4=10000
T3
T2=20000
0
T3OTL
12ms (400ns x 30000)
3. Donner la p´eriode T du signal pr´esent sur la broche P3.3 ainsi que la valeur de son rapport
cyclique.
eriode T=30000x400ns=12ms, Rapport cyclique:2/3
4. 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.
T= (T2 + T4)tr
5. eme question pour le rapport cyclique R.
R=T2
T2 + T4
6. En d´eduire les valeurs d’initialisations de T2 et T4 en fonction de T, tret R.
On d´eduit des deux expressions pr´ec´edentes:
T2 + T4 = T
tr
et T2 + T4 = T2
R
d’ou: T2 = RT
tr
et T4 = (1 − R)T
tr
IUP SI 1 Examen Architecture des calculateurs 26 Avril 2004
2 Communication s´erie
L’application propos´ee consiste `a traiter des requˆetes re¸cues par l’interm´ediaire de la ligne 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 renvoee 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 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).
#include<c167.h>
#include<gnutrap.h>
#include<com.h>
TRAP_noMD()x2B,reception);
void reception()
{
int V,canal;
canal=S0RBUF;
V=mesure(canal);
emission(V);
}
void main()
{
init_ASC0();
S0RIC=0x4C; // IT niveau 3
SET_SFRBIT(IEN);
while(1);
}
2. Ecrire la fonction d’initialisation de l’unit´e s´erie ASC0: init ASC0.
void init_ASC0()
{
S0CON=0x8019; // S0R=1, S0BRS=0, S0REN=1, S0STP=1, S0M=1
S0BG=65;
SET_SFRBIT(DP3.10);
SET_SFRBIT(P3.10);
}
IUP SI 1 Examen Architecture des calculateurs 26 Avril 2004
3. Ecrire la fonction mesure.
int mesure(int canal)
{
int M;
ADCON=canal;
SET_SFRBIT(ADST);
WAIT_UNTIL_BIT_SET(ADCIR);
CLR_SFRBIT(ADCIR);
M=(ADDAT & 0x3F)*5./1024.; // conversion en mV
return M;
}
4. Ecrire la fonction emission sachant que l’on envoie d’abord les bits de poids faible de l’entier.
void emission()
{
S0TBUF=valeur & 0x00FF;
WAIT_UNTIL_BIT_SET(S0TBIR);
CLR_SFRBIT(S0TBIR);
S0TBUF=(valeur >> 8) & 0x00FF;
WAIT_UNTIL_BIT_SET(S0TBIR);
CLR_SFRBIT(S0TBIR);
}
3 Mesure de p´eriode
On utilise l’unit´e CAPCOM1 en mode capture pour mesurer la p´eriode d’un signal TTL. Le
signal est connect´e `a la broche CC4IO du C167 et le timer T1 est utilis´e sans rechargement (T1REL=0).
La mesure de la p´eriode se fait entre deux fronts descendants du signal. Apr`es la capture permettant
de d´eterminer la p´eriode, T1 est r´einitialis´e `a 0 pour la capture suivante.
3.1 Initialisations
1. On choisit la esolution de T1 permettant d’obtenir la meilleure pr´ecision. Quelle est cette
esolution? et quelle est la p´eriode maximale que l’on peut mesurer sans d´ebordement de T1?
esolution min: 400ns
eriode max: 26,2ms
2. Quelle est la p´eriode minimale (et donc la fr´equence maximale) mesurable sachant que l’on
veut une pr´ecision meilleure que 1%?
eriode min=100 x 400ns=40 µs
Fequence max=1/P´eriode min=25 kHz
3. Quels sont les registres `a programmer pour r´ealiser la capture sachant que l’on veut g´en´erer
une interruption de niveau 5 (groupe 0) sur chaque front descendant du signal `a mesurer?
Quelles sont les initialisations ecessaires de ces registres?
CCM1=0x0A
CC4IC=0x54
T01CON=0x4000 (T1R=1)
3.2 Mesure
On suppose que l’interruption provoqu´ee par un front descendant du signal `a mesurer correspond
`a la fois `a la fin d’une eriode (et donc `a sa mesure) et au d´ebut d’une nouvelle p´eriode.
IUP SI 1 Examen Architecture des calculateurs 26 Avril 2004
Donner le code de la fonction d’interruption correspondante. Le r´esultat (fr´equence du signal)
exprim´e en Hertz sera stock´e dans la variable globale float FREQ.
void mesure()
{
FREQ=2.5E6/CC4;
T1=0;
}
4 Signal PWM
On souhaite en´erer un signal eriodique, dont une eriode est repr´esent´ee sur la figure suivante,
en utilisant l’unit´e PWM du C167.
84ms 2ms
100ms
1. Quel est le mode de fonctionnement de PWM qui permet de g´en´erer un signal de ce type?
Sur quel bit de quel port peut-on ecup´erer le signal?
Il faut utiliser les canaux 0 et 1 en mode rafale. La sortie se fait sur POUT0
(P7.0). On choisit une esoultion de 3,2µs
2. Donner la programmation des registres de contrˆole PWMCON0 et PWMCON1 de l’unit´e
PWM permettant de en´erer ce signal.
PWCON0=0x0013 (PT0=1, PT1=0, PTR0=1, PTR1=1)
PWMCON1=0x1001 (PEN0=1, PM0=PM1=0, PB01=1)
3. eterminer les valeurs `a donner aux diff´erents registres PPx et PWx utilis´es. Justifier vos
eponses.
PP0 = 100ms
3,2µs 1 = 31249 (P´eriode=100ms)
PP1 = 2ms
3,2µs 1 = 39999 (P´eriode=2ms)
P W 0 = 84
100 (PP0 + 1) = 26250 (Rapport cyclique=0,16)
P W 1 = PP1+1
2= 20000 (Rapport cyclique=0,5)
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !