1 Génération d`un signal avec GPT1 2 Communication série

publicité
IUP SI 1
Examen Architecture des calculateurs
26 Avril 2004
Durée 2h. Documents autorisés.
1
Génération d’un signal avec GPT1
Les registres de l’unité GPT1 du C167 sont initialisés ainsi:
T2CON=0x25;
T3CON=0x2C0;
T4CON=0x26;
T2=20000;
T3=10000;
T4=10000;
DP3=0x08;
1. Déduire de ces initialisations le mode de fonctionnement de chacun des temporisateurs.
2. Dessiner le chronogramme (évolution 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ériode T du signal présent sur la broche P3.3 ainsi que la valeur de son rapport
cyclique.
4. Déterminer une expression générale permettant de calculer T en fonction des valeurs contenues
dans T2 et T4 et de la résolution de l’horloge tr .
5. Même question pour le rapport cyclique R.
6. En déduire les valeurs d’initialisations de T2 et T4 en fonction de T, tr et R.
2
Communication série
L’application proposée consiste à traiter des requêtes reçues par l’intermédiaire de la ligne série.
Une requête consiste en une demande d’acquisition d’un signal sur une entrée analogique. Elle
est simplement constituée d’un nombre indiquant le numéro du canal sur lequel doit se faire l’acquisition.
La réponse à la requête est la valeur exprimée en milli-volts (sous la forme d’un entier sur 16
bits) de la tension sur la broche correspondante. Elle est renvoyée par le micro-contrôleur sur la
ligne série.
La communication se fait en asynchrone sur 8 bits sans parité avec 2 bits de stop à 9600 bauds.
Les erreurs de transmission ne sont pas traitées.
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érie (hors registres d’interruptions).
void init_ASC0();
– Fonction qui renvoie la valeur en mV sur l’entrée canal.
int mesure(int canal);
– Fonction qui envoie sur la ligne série l’entier valeur.
void emission(int valeur);
1. Ecrire un programme utilisant ces fonctions et permettant de répondre aux requêtes reçues
(Ces requêtes peuvent arriver n’importe quand).
2. Ecrire la fonction d’initialisation de l’unité série 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.
IUP SI 1
3
Examen Architecture des calculateurs
26 Avril 2004
Mesure de période
On utilise l’unité CAPCOM1 en mode capture pour mesurer la période d’un signal TTL. Le
signal est connecté à la broche CC4IO du C167 et le timer T1 est utilisé sans rechargement (T1REL=0).
La mesure de la période se fait entre deux fronts descendants du signal. Après la capture permettant
de déterminer la période, T1 est réinitialisé à 0 pour la capture suivante.
3.1
Initialisations
1. On choisit la résolution de T1 permettant d’obtenir la meilleure précision. Quelle est cette
résolution? et quelle est la période maximale que l’on peut mesurer sans débordement de T1?
2. Quelle est la période minimale (et donc la fréquence maximale) mesurable sachant que l’on
veut une précision meilleure que 1%?
3. Quels sont les registres à programmer pour réaliser la capture sachant que l’on veut générer
une interruption de niveau 5 (groupe 0) sur chaque front descendant du signal à mesurer?
Quelles sont les initialisations nécessaires de ces registres?
3.2
Mesure
On suppose que l’interruption provoquée par un front descendant du signal à mesurer correspond
à la fois à la fin d’une période (et donc à sa mesure) et au début d’une nouvelle période.
Donner le code de la fonction d’interruption correspondante. Le résultat (fréquence du signal)
exprimé en Hertz sera stocké dans la variable globale float FREQ.
4
Signal PWM
On souhaite générer un signal périodique, dont une période est représentée sur la figure suivante,
en utilisant l’unité PWM du C167.
84ms
2ms
100ms
1. Quel est le mode de fonctionnement de PWM qui permet de générer un signal de ce type?
Sur quel bit de quel port peut-on récupérer le signal?
2. Donner la programmation des registres de contrôle PWMCON0 et PWMCON1 de l’unité
PWM permettant de générer ce signal.
3. Déterminer les valeurs à donner aux différents registres PPx et PWx utilisés. Justifier vos
réponses.
Téléchargement