Vous êtes sur la page 1sur 19

CHAPITRE 5:

INTERFACES DU 68HC11 & GESTION DU TIMER

SUPPORT DE COURS S4-SMI


IHSSANE OUADNOUNI
E-MAIL: I.OUADNOUNI@GMAIL.COM
INTERFACE PARALLÈLE

 Ce type d’interface, répartie sur plusieurs ports (maximum 8 bits), permet de prendre en compte des états
logiques appliqués en entrée (état de capteurs) ou de générer des signaux binaires en sortie (commande
d’actionneurs).
 Les broches de ces ports peuvent donc être configurées en entrée ou en sortie.
 On trouve généralement :
 Un registre de direction pour une configuration en entrée ou en sortie,
 Un registre de donnée recopiant les états logiques de chaque broche de port,
 Un registre d’option permettant plusieurs configurations en entrée ou en sortie.
INTERFACE PARALLÈLE
INTERFACE PARALLÈLE

 Caractérisée par un transfert simultané de tous le bits d’un même mot.


 Nécessite autant de conducteurs qu’il y a de bits à transmettre et un conducteur commun (liaison asymétrique)
ou autant de paires que de fils si la masse n’est pas commune (liaison symétrique).
 Un conducteur supplémentaire peut être utilisé pour transmettre un signal qui assurera la synchronisation entre
les intervalles d’émission et ceux de réception
 Autorise une grande vitesse de transmission (débit).
 Un coût élevé (nombre de conducteurs)
 Une distance franchissable limitée réservent la transmission parallèle aux liaisons de processeur à processeur.
INTERFACE SÉRIE

 Les données envoyées ou reçues se présentes sous la forme d’une succession temporelle (sur un seul bit) de
valeurs binaires images d’un mot.
 Nécessite une interface de conversion pour sérialiser les bits à l'émission (conversion parallèle/série) et les dé-
sérialiser à la réception (conversion série/parallèle).
 Ne nécessite, pour la transmission des données, que deux conducteurs, d’un coût moins important, elle est utilisé
pour les transmissions sur des distances importantes.
 Les vitesses de transmission et de réception doivent être identiques (bits/s ou bauds).
 Modes simplex, half-duplex et full-duplex
INTERFACE SÉRIE
INTERFACE SÉRIE
LE CONVERTISSEUR ANALOGIQUE NUMÉRIQUE:

 Le CAN intégré dans les microcontrôleurs est généralement du type “Approximations successives”.
 Il possède plusieurs entrées multiplexées accessibles via les broches des ports de l’interface parallèle.
 Le CAN possède normalement 2 registres :
 Un registre de données contenant le résultat de la conversion,
 Un registre de contrôle permettant de lancer et de surveiller la conversion.
LE CHIEN DE GARDE:

 Ce dispositif est un système anti-plantage du microcontrôleur. Il s’assure qu’il n’y ait pas d'exécution prolongé
d’une même suite d’instructions.
 Un compteur pré-chargeable se décrémente régulièrement au rythme de la fréquence d’horloge.
 Si aucun pré-chargement n’est effectué avant qu’il n’atteigne la valeur “0” un Reset est généré relançant ainsi le
microcontrôleur.
NB: Il faut donc penser à pré-charger régulièrement ce chien de garde par programme lorsqu’il est activé.
TIMER

 Le Timer permet de réaliser les fonctions suivantes :


 Génération d’un signal périodique modulé ou non en largeur d’impulsion,
 Génération d’une impulsion calibrée,
 Temporisation,
 Comptage d'événements.

 Plusieurs registres associés au Timer permettent de configurer les différents modes décrits précédemment.
TIMER 68HC11

 Les boucles d’attente ainsi que la gestion du signal PWM nécessitent l’utilisation du Timer.
 Le cœur de ce dernier est un registre de 16 bits, TCNT, qui s’incrémente à chaque pulsation de l’horloge.
 Le facteur prescale, défini par les bits PR1 et PR0, détermine combien de pulsations d’horloge sont nécessaires
pour incrémenter d’une unité le registre TCNT.
 Un programme de base dans lequel on utilise le système Timer est similaire aux autres programmes :
 Il faut en premier lieu configurer les registres de contrôle,
 écrire dans un registre de données si nécessaire ;
 on attend qu’un indicateur soit mis dans un certain état,
 on efface ensuite celui-ci et on vient écrire ou lire dans un registre de données si nécessaire.
TIMER 68HC11

 Exemple : configuration du facteur prescale


Les b//its PR0 et PR1 se trouvent dans le registre interne TMSK2 dont l’adresse est $1024
$1024 TOI RTII PAOVI PAII 0 0 PR1 PR0 TMSK2

Dans le but d’avoir le temps de voir le compteur osciller, nous allons abaisser la fréquence du timer au 1/16 de sa valeur =
(fréquence du quartz)/2, en mettant PR1 et PR0 du registre TMSK2 ($1024) à 1: PR0=PR1=1.
Si fréquence de quartz =4Mhz donc la fréquence d’oscillation = 2Mhz et donc la fréquence du compteur =2Mhz/16.
Configuration: PR0 PR1 Fréquence
LDX #$1024 // Le registre d’indexe X pointe sur le TMSK2 Compteur

BSET X,0 // configuration du bit PR0 du TMSK2 à 1 0 0 F/1


BSET X,1 // configuration du bit PR1 du TMSK2 à 1 0 1 F/2
1 0 F/8
1 1 F/16
TIMER 68HC11

 Le module Output Compare, appartenant au


système Timer, permet de générer des signaux carrés
tel qu’un signal PWM.
 On peut également déclencher une exécution d’une
séquence sans pour autant générer un signal sur une
sortie.

module Output Compare


TIMER 68HC11

 Exemple : Calcul du temps de cycle


On suppose que PR0=PR1=0
la fréquence du quartz = 8MHz
Le temps de cycle étant le temps nécessaire pour que le TCNT passe de (0000)Hex à (FFFF)Hex soit 216 périodes
d’horloge:
TH= 1/(Fréquence d’oscillation)= 1/(4*106)=0,25 10-6 secondes
Tcycle= 216 * TH= 216 * 0,25 10-6 =16,384 ms
Donc le TCNT passe de (0000)Hex à (FFFF)Hex en 16,384 ms.
TIMER 68HC11

 On écrit dans le registre TOCx, le registre TCNT


compte les pulsations de l’horloge.
 Quand la valeur du registre TCNT atteint la valeur du
registre TOCx:l’indicateur OCxF est mis à l’état haut.
 Ces indicateurs sont situés dans le registre TFLG1.
 L’indicateur OCxF est mis à l’état haut, il se passe un
événement qui dépend des registres TCTL1 et TMSK1
 Le bit d’interruption associé OCxI dans le registre
TMSK1 détermine si une interruption est générée dans
le cas d’une comparaison réussie.
TIMER 68HC11

 Pour réaliser une temporisation de 5ms on aura pas besoin d’attendre un cycle en entier:
Tempo=5ms il faut donc charger un TOC on choisit le TOC1
$1016 15 14 13 12 11 10 9 8 TOC1

$1017 7 6 5 4 3 2 1 0 TOC1

 Calcul de la valeur à charger au TOC1


Valeur = (tempo*216)/temps de cycle= (5.10-3*65536)/16,384.10-3 =20000
Donc la valeur à charger au TOC1 est 20000 une fois le TCNT arrive à 20000 le OC1F se mettra au niveau haut.
C’est-à-dire que le temps correspondant à la temporisation est écoulé.

$1023 OC1F OC2F OC3F OC4F I4/O5F IC1F IC2F IC3F TFLG1
TIMER 68HC11

 Programme de la temporisation < Temps de cycle


On considère l’exemple précédent
La temporisation =5ms et le Temps de cycle = 16,384ms (TCNT passe de 0000 à FFFF)
LDD #20000 // Charger dans un registre 16 bits la valeur à laquelle on compare le TCNT
STD $1016 // Charger le TOC1 par cette valeur
LDX #$1023 // Le registre d’indexe pointe sur le TFLG1 siège du bit de comparaison OC1F
B1 BRCLR X,7 B1 // Teste le 7ème bit de X s’il est égal à 0 dans ce cas il se branche à B1.
Une fois le OC1F passe à 1 on sort de la boucle et donc le temps de la temporisation est écoulé.
TIMER 68HC11
 Programme de la temporisation > Temps de cycle
Dans ce cas de figure, la temporisation nécessite un ou plusieurs cycle de passage du TCNT de (0000)Hex à (FFFF)Hex
 Prenons pour exemple une temporisation de 250ms pour un MC alimenté par un quartz de 2MHz:
Pour abaisser la fréquence on utilise le facteur de prescale, soit PR0=0 et PR1=1 ainsi on va diviser la fréquence
d’oscillation par 8.
 1ère étape : calculer le temps de cycle
Temps de cycle = 216 *1/8*(fréquence du quartz)/2 = 8,192ms.
 2ème étape : calculer le nombre de fois que le TCNT doit passer de (0000)Hex à (FFFF)Hex
Ratio = temporisation / temps de cycle = 250.10-3/8,192.10-3 = 30,52
Donc le TCNT doit passer de (0000)Hex à (FFFF)Hex 31 fois et programmer 0,52 d’un cycle comme dans l’exemple précédent.
 3ème étape : observer le bit TOF du registre interne TFLG2 pour surveiller le débordement du TCNT et à chaque fois on le
remis à 0 pour calculer le nombre de débordement correspondant au ration calculé:
$1025 TOF RTIF PAOVF PAIF 0 0 0 0 TFLG2
TIMER 68HC11
 Exemple de programme de temporisation
LDX #$1024 // Le registre d’indexe X pointe sur le TMSK2
BCLR X,0 //Configuration du bit PR0 du TMSK2 à 1 Prescale de division par 8
BSET X,1 // Configuration du bit PR1 du TMSK2 à 1
LDAA #31 // Charger le compteur de nombre d’itération
LDX #$1025 // Le registre d’indexe X pointe sur le TFLG2
B1 BRCLR X,7 B1 // Teste le 7ème bit de TFLG2 s’il est égal à 0 dans ce cas il se branche à B1.
DECA
BNE B1
LDD #20000 // Charger dans un registre 16 bits la valeur à laquelle on compare le TCNT
STD $1018 // Charger le TOC2 par cette valeur
LDX #$1023 // Le registre d’indexe pointe sur le TFLG1 siège du bit de comparaison OC2F
B2 BRCLR X,6 B2 // Teste le 6ème bit de TFLG1 s’il est égal à 0 dans ce cas il se branche à B2.

Vous aimerez peut-être aussi