université du québec École de technologie supérieure gpa770: microélectronique appliquée Éric...
TRANSCRIPT
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-1
CONTENU DU COURS
A. MISE EN CONTEXTE
B. CONCEPTS LOGICIELS
(PROGRAMMATION EN ASSEMBLEUR ET
EN C)
C. CONCEPTS MATÉRIELS
(COMPOSANTS D’UN MICROCONTRÔLEUR)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-2
Partie C − Concepts matériels
C.1 Configurations matérielles: architecture du système, mémoire, et ports d’e/s
C.2 Gestion d’exceptions:réponses aux remises-à-zéro et aux interruptions avec le 68HC12vecteur et priorité d’exceptions, et routines de service d’interruption
C.3 Module de temporisation: module de temporisation standard du 68HC12saisie des entrées et comparaison de sorties
C.4 Convertisseurs analogique-numérique:processus de conversionsystème de conversion du 68HC12
C.5 Interfaces de communications sérielles:communications sérielles avec un microcontrôleurinterfaces sérielles multiples du 68HC12: SCI et SPI
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-3
Sommaire de la section C.3
C.3 Module de temporisation: 1)Concepts fondamentaux
2)Module de temporisation standard (TIM)
3)Capter des entrées (IC) − saisie des paramètres d’un signal
4)Comparer des sorties (OC) − génération de signaux précis
5)Accumuler des impulsions (PA)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-4
C.3(1) Concepts fondamentauxRôle des types de sous-systèmes dans le 68HC12: a) CPU12: unité de traitement central
gestion d’exceptions: interrompre l’exécution normal d’un programme
b) Bus: le module LIM combine DATA, ADDR et CTRL
c) Mémoire: stocker des configurations (bloc), des variables (RAM) , des programmes (ROM) et des vecteurs
d) Périphériques d’entrée/sortie: ports d’entrée/sortie: échanger des données avec le monde externetemporisation: capter des entrées, générer des sorties, accumuler des impulsions, PWM conversion de données: convertir un signal analogique en codes binaires non-signés communication sérielle: échanger de données par communications asynchrones (SCI) et synchrones (SPI)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-5
C.3(1) Concepts fondamentaux
Sous-système de temporisation
Fonction globale: permet de gérer des interfaces avec des événements précis dans le temps
Principales composants:1. TIM – Module de temporisation standard: mesurer des
entrées, générer des sorties, compter des événements externes
2. PWM – Module de modulation de longueur d’impulsions: générer des signaux dont la longueur d’impulsions varie
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-6
C.3(1) Concepts fondamentaux
MC9S12C32
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-7
C.3(1) Concepts fondamentaux
PWM/IOC/PTT
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-8
C.3(1) Concepts fondamentaux
Module d’horloge: le 68HCS12 utilise des signaux d’horloges internes, chacun dérivé d’une horloge primaire.
Le module TIM utilise le Bus Clock dérivé de la fréquence du cristal ÷ 2
XTAL = 16MHz ÷ 2 = 8MHz = Bus Clock
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-9
C.3(1) Concepts fondamentaux
Caractéristiques fondamentales d’un signal numérique:
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-10
Sommaire de la section C.3
C.3 Module de temporisation: 1)Concepts fondamentaux
2)Module de temporisation standard (TIM)
3)Capter des entrées (IC) − saisie des paramètres d’un signal
4)Comparer des sorties (OC) − génération de signaux précis
5)Accumuler des impulsions (PA)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-11
C.3(2) Module TIMFonctions principales du TIM:1. IC (‘Input Capture’): permet de mesurer les
caractéristiques d’un signal numérique en entréeexemple: il peut être programmé pour mesurer une longueur d’impulsion, la fréquence, la période et le cycle de service d’un train d’impulsions
2. OC (‘Output Compare’): permet de générer un signal numérique très précis en sortie
exemple: il peut être programmé pour générer un signal avec fronts d’ondes périodiques, des impulsions, etc.
3. PA (‘Pulse Accumulate’): permet de compter des événements internes ou externes
exemple: il peut être programmé pour compter des impulsions provenant d’un module externe
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-12
C.3(2) Module TIM
Composants matériels du TIM:
A. Compteur binaire programmable à 16 bits qui tourne continuellement
incrémenté par l’horloge Bus Clockpoint de référence pour synchronisation
B. Circuiterie pour gérer 8 canaux d’entrée/sortie indépendants
chaque canal exploite le compteur binaire comme référenceLes canaux 0 à 7 peuvent être IC ou OC et le canal 7 peut, en plus, être utilisé pour le PA.
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-13
C.3(2) Module TIM
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-14
C.3(2) Module TIM
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-15
C.3(2) Module TIM
A. Compteur binaire à 16 bits Cœur du TIM – un compteur programmable à 16 bits qui compte constamment selon les impulsions de Bus Clock:
[$0046] TSCR1: le module TIM est activé en fixant le bit TEN = 1 (‘Timer Enable’) dans ce registre
ensuite le compteur progresse de $0000 → $FFFF, retourne à $0000 et continu à compter (débordement à chaque 216 impulsions)
remarque: Les fonctions IC, OC et PA du TIM sont synchronisées à partir du compteur
binaire
$46
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-16
C.3(2) Module TIM
A. Compteur binaire à 16 bits
Bus Clock
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-17
C.3(2) Module TIM
A. Compteur binaire à 16 bits La valeur du compteur est stockée dans 1 registre à 16 bits: (‘Timer Counter Register High et Low’)
[$0044:$0045] TCNT (hi): (lo) registre MSB:LSB
On y accède avec des instructions de 2 octets:
LDD, STD, etc.
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-18
C.3(2) Module TIM
A. Compteur binaire à 16 bits
Drapeau de débordement:
débordement = le compteur tourne de $FFFF → $0000
[$004F] TFLG2 (‘Timer Flag Register 2’) – le 68HCS12 active le bit d’état TOF pour un débordement
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-19
C.3(2) Module TIM
A. Compteur binaire à 16 bits
Fréquence du compteur binaire:
la fréquence de Bus Clock peut être divisée par un facteur de réduction d’échelle
[$004D] TSCR2 (‘Timer System Control Register 2’) – ce facteur est programmé par l’usager, à travers des bits PR[2:0]
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-20
C.3(2) Module TIMA. Compteur binaire à 16 bits
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-21
C.3(2) Module TIM
A. Compteur binaire à 16 bits
Exemple codé 3-1: étapes minimums requises pour exploiter le compteur binaire
1. fixer le facteur de réduction avec le bits PR[2:0] du registre TSCR2 pour l’intervalle de comptage désirée
2. fixer le bit TEN du registre TSCR1 pour activer le compteur
Question: Quel est le temps écoulé au débordement si PR = 101?
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-22
C.3(2) Module TIM
B. Canaux d’entées/sorties
Fonction IC/OC: 8 canaux individuels pour manipuler des signaux
chaque canal peut être configuré pour IC ou OCinterne: [$0240] PORT T PTT est associé aux 8 canauxexterne: broches IOC[7:0] sont associées aux 8 canaux
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-23
C.3(2) Module TIM
B. Canaux d’entées/sorties
Fonction PA – accumulation d’impulsions 16 bits: 1 canal peut compter des événements externes
le dernier canal du TIM peut être configuré pour PAinterne: partage le bit PTT7 du PORT T externe: la broche IOC7/PAI est liée à l’accumulateur
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-24
C.3(2) Module TIM
B. Canaux d’entées/sorties
[$0040] TIOS (‘Timer IC/OC Select’) permet d’indiquer les canaux qui sont utilisés pour:
IC: si on fixe un 0 in au bit correspondant
OC: si on fixe un 1 in au bit correspondant
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-25
C.3(2) Module TIMB. Canaux d’entées/sorties
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-26
C.3(2) Module TIMEnsemble des registres TIM pour IC/OC:
TIOS EQU $0040 ;choix (capter entrées)/(comparer sorties)
CFORC EQU $0041 ;comparaison forcé
OC7M EQU $0042 ;masque comparer sorties 7
OC7D EQU $0043 ;données comparer sorties 7
TCNT (hi):(lo) EQU $0044 ;valeur du compteur (haut)
EQU $0045 ;valeur du compteur (bas)
TSCR1 EQU $0046 ;contrôle du système 1
TCTL1- TCTL4 EQU $0048-004B ;contrôle des fronts 1-4
TIE – TSCR2 EQU $004C-$004D ;masques pour les interruptions 1-2
TFLG1 - TFLG2 EQU $004E-$004F ;drapeaux des interruptions 1-2
TC0 - TC7 EQU $0050-$005E ; capter entrées ou comparer sorties 0-7
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-27
C.3(2) Module TIM
Registres essentiels pour configurer le TIM:
[$0046] TSCR1 (pour ‘Timer Source Control 1’)
TEN doit être fixé à ‘1’ afin d’activer le compteur binaire dans le TIM
[$004D] TSCR2 (pour ‘Timer Source Control 2’)
PR[2:0] spécifie le nombre d’étages division-par-2 (réduction d’échelle) qu’on veut insérer entre MCLK et le compteur binaire du TIMTOI permet de générer un INT de débordement (si le TOF=1)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-28
C.3(2) Module TIMRegistres essentiels pour configurer le TIM:
[$0044:$0045] TCNT(hi):(lo) (pour ‘Timer Counter Register High/Low’)
contient la valeur du compteur binaire à 16 bits
[$0060] PACTL (pour ‘PA Control Register’)PAEN doit être fixé à ‘1’ afin d’activer le système d’accumulation d’impulsionsCLK[1:0] offrent d’autres alternatives comme base de temps à TCNT
[$0040] TIOS (‘Timer IC/OC Select’) permet d’indiquer quels canaux sont en IC ou en OC
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-29
C.3(2) Module TIM
Gestion des interruptions avec le TIM
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-30
C.3(2) Module TIMGestion des interruptions avec le TIM
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-31
Sommaire de la section C.3
C.3 Module de temporisation: 1)Concepts fondamentaux
2)Module de temporisation standard (TIM)
3)Capter des entrées (IC) − saisie des paramètres d’un signal
4)Comparer des sorties (OC) − génération de signaux précis
5)Accumuler des impulsions (PA)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-32
C.3(3) Capter des entrées (IC)
Objectif: mesurer les paramètres clés d’un signal numérique en entrée
Concept général:le TIM permet de capter la valeur du compteur binaire lorsqu’un événement a lieu:
événement ≡ un front montant, un front descendant, ou un front quelconque sur le signal en entréel’événement d’intérêt est définit par l’usager
l’usager peut ensuite calculer le temps écoulé entre deux événements d’intérêt
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-33
C.3(3) Capter des entrées (IC)
Circuit IC pour un canal n = 0, 1, ..., 7:
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-34
C.3(3) Capter des entrées (IC)
Capter la valeur du compteur:
le circuit capte une vue instantanée du compteur lors d’un événement (un front) sur le signal en entrée
l’usager doit définir les événements qu’il veut détecter:
[$004A:$004B] TCTL3:TCTL4 (pour ‘Timer Control Registers 3 et 4’) 2 bits/canal indiquent le front
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-35
C.3(3) Capter des entrées (IC)
Sélection du front pour le signal en entrée:
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-36
C.3(3) Capter des entrées (IC)
Lorsqu’un événement (un front) a lieu:
1. [$004E] TFLG1 – le drapeau CnF correspondant au canal n (n = 1...7) est activé:
pour une remise à zéro du drapeau, il s’agit d’écrire un ‘1’ au bit CnF à désactiver (et ‘0’ aux autres bits)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-37
2. [$008C] TIE – interruption correspondant au canal n est activé (si le masque est désactivé, CnI=1)
3. [$0050:$0005F] TCn (hi):(lo) – une vue instantanée du compteur est stockée sur 16 bits
C.3(3) Capter des entrées (IC)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-38
C.3(3) Capter des entrées (IC)
Processus général pour un IC: (approche ‘polling’)
1. Configurer le canal en mode IC (TIOS)2. Fixer les paramètres du compteur (TEN, PR[2:0])
3. Mesurer le temps ‘start’:
1. choisir un type de front avec EDGnB:EDGnA (TCTL3-4)2. surveiller le drapeau CnF du canal n (TFLG1)3. quand CnF devient actif, stocker le contenu de TCnH:L en mémoire
4. Mesurer le temps ‘stop’:
1. effectuer une remise-à-zéro du CnF, en écrivant un ‘1’ au bit correspondant de TFLG1
2. si nécessaire, choisir un différent type de front avec EDGnB:EDGnA3. surveiller encore le drapeau CnF, et stocker le contenu de TCnH:L en
mémoire quand ce bit devient actif
5. Calculer la différence entre les deux valeurs en mémoire, et multiplier par Tc (la période du compteur)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-39
C.3(3) Capter des entrées (IC) Cas 1: mesurer la longueur d’impulsions (Ls) pour un signal actif bas sur le canal 3
1. configurer le canal 3 en entrée dans TIOS
2. fixer Tc (PR[2:0]dans TSCR2) et TEN=1
3. mesurer le temps start:1. spécifier qu’on veut détecter un front descendant: EDG3B:EDG3A = ’10’2. surveiller le drapeau C3F dans TFLG13. quand ce bit devient actif, stocker le contenu de TC3H:L en mémoire
MOVW TC3, start4. faire une remise-à-zéro de C3F en lui écrivant un ‘1’ dans TFLG1 avec MOVB
4. mesurer le temps stop:1. spécifier qu’on veut détecter un front montant: EDG3B:EDG3A = ’01’2. surveiller le drapeau C3F dans TFLG1, et quand il devient actif, stocker le contenu de
TC3H:L en mémoire
MOVW TC3, stop3. calculer la différence, stop – start, et la longueur d’impulsion du signal,
Ls = (stop - start)Tc
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-40
C.3(3) Capter des entrées (IC)
Cas 2: mesurer la période (Ts) pour un signal sur le canal 4 avec un résolution de 0.5 µsec, et avec un horloge de 8MHz
1. fixer Tc = 0.5μsec (alors PR[2:0]=‘010’ dans TSCR2) et TEN=12. configurer le canal 4 en entrée dans TIOS3. mesurer le temps start:
1. spécifier qu’on veut détecter un front descendant: EDG3B:EDG3A = ’10’2. surveiller le drapeau C4F dans TFLG13. quand ce bit devient actif, stocker le contenu de TC4H:L en mémoire
MOVW TC4, start
4. mesurer le temps stop:1. faire une remise-à-zéro de C4F en lui écrivant un ‘1’ dans TFLG1 (MOVB) 2. surveiller le drapeau C4F dans TFLG1, et quand il devient actif, stocker le
contenu de TC4H:L en mémoire
MOVW TC4, stop5. calculer la différence, stop – start, et la période du signal:
Ts = (stop - start) Tc
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-41
C.3(3) Capter des entrées (IC)
Exemple: code pour mesurer la période d’un signal (Ts) périodique connecté au canal 2 du module TIM
Ts : mesure le temps écoulé entre 2 fronts montants successifs
configure le canal 2 du TIM pour capter un signal d’entrée
on suppose que la fréquence de MCLK est 8 MHz, et on fixe la réduction d’échelle pour le diviser par 4
la fréquence d’horloge pour le compteur est alors de 2 MHz, et donc Tc = 0.5 sec
MAIN-initialize
TIMER_INIT MEAS_PER
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-42
C.3(3) Capter des entrées (IC)
Exemple: diagramme de flots de données
Initialiser les registres et masques:TMSK2, TCTL4, TIOS et TSCR
Déclarer des variables:start et period
Remise-à-zéro du drapeau C2F
1er front?
Remise-à-zéro du drapeau C2Fstocker compteur dans start
2e front?
Calculer la période
TSCR2 TSCR1
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-43
C.3(3) Capter des entrées (IC)
;*************************************************; Définitions
TSCR2_IN equ $02 ;désactiver TOI=0, reduction d’échelle=4 TCTL4_IN equ $10 ;config IC2 pour détecter front montantTIOS_IN equ $00 ;choisir le canal comme IC TSCR1_IN equ $80 ;activer le compteur TENCLR_CH2 equ $04 ;masque RAZ du drapeau canal 2
;*************************************************; Programme principale
ORG $0800 EDGE_1: ds.w 1 ;variablesPERIOD: ds.w 1
ORG $4000 LDS #$1000 ; initialiser le pointeur de
pile DEBUT: BSR TIMERINIT ; SR initialise compteur BSR MEAS_PER ; SR measure la période
Fin: BRA Fin
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-44
C.3(3) Capter des entrées (IC)
;*************************************************; TIMERINIT: sous-routine qui initialise TIM pour IC2
TIMERINIT CLR TIE ; configurer le canal 2
LDAA #TSCR2_IN
STAA TSCR2
LDAA #TCTL4_IN
STAA TCTL4
LDAA #TIOS_IN
STAA TIOS
LDAA #TSCR1_IN
STAA TSCR1 ; activer le compteur
RTS
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-45
C.3(3) Capter des entrées (IC) ;*************************************************; MEAS_PER: sous-routine mesure la période entre ; 2 fronts montants (version ‘polling’ ou balayage)
MEAS_PER LDAA #CLR_CH2 ;RAZ du drapeau IC2 STAA TFLG1 WTFLG1 BRCLR TFLG1, #$04, WTFLG1 ;attendre le front 1 LDD TC2 ;charger la valeur TC2 STD EDGE_1 ;stocker le temps du front 1
LDAA # CLR_CH2 ; RAZ du drapeau IC2 STAA TFLG1 WTFLG2 BRCLR TFLG1, #$04, WTFLG2 ;attendre front 2 LDD TC2 ;charger la valeur de TCNT SUBD EDGE_1 ;calculer la période: D-
Edge1 STD PERIOD RTS
END
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-46
C.3(3) Capter des entrées (IC)
Calcule du temps écoulé entre 2 événements:
cas 1: 0 débordement
t = stop - start
cas 2: 1 débordement
t = stop - start
(ignore le bit C du
CCR lors de la
soustraction)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-47
C.3(3) Capter des entrées (IC)
Calcule du temps écoulé entre 2 événements:cas 3: n débordements
t = (stop-start) + n x 216
t = (stop-start) + (n-1) x 216
t = n x 216
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-48
Sommaire de la section C.3
C.3 Module de temporisation: 1)Concepts fondamentaux
2)Module de temporisation standard (TIM)
3)Capter des entrées (IC) − saisie des paramètres d’un signal
4)Comparer des sorties (OC) − génération de signaux précis
5)Accumuler des impulsions (PA)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-49
C.3(4) Comparer des sorties (OC)
Objectif: générer des signaux numériques en sortie avec une grande précision
l’usager peut générer un niveau de tension sur une broche selon des caractéristiques désirées:
impulsion active sur transition basse ou haute, avec ou sans un délaisignal répétitif selon une certaine fréquence et cycle de servicesignal dont la longueur d’impulsion varie comme un PWM (Pulse Width Modulation)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-50
C.3(4) Comparer des sorties (OC)
Circuit OC pour un canal n = 0, 1, .., 7:
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-51
C.3(4) Comparer des sorties (OC)
Générer des signaux en sortie:
le circuit compare 2 registres (16 bits) internes TCnH:TCnL au compteur binaire
si TCnH:TCnL = TCNTH:TCNTL, alors un front désiré est produit sur la broche de sortie PTn du port T
[$0048: $0049] TCTL1:TCTL2 (pour ‘Timer Control Registers 1 et 2’) 2 bits/canal indiquent le front montant et/ou front descendant du signal
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-52
C.3(4) Comparer des sorties (OC)
Sélection du front pour le signal en sortie:le front spécifique sur la broche de sortie OCn peut être soit montant, soit descendant ou soit inversé.
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-53
C.3(4) Comparer des sorties (OC)
Lorsque TCnH:TCnL = TCNTH:TCNTL
1. [$004E] TFLG1 – le drapeau CnF du canal n s’activepour une remise à zéro du drapeau, il s’agit d’écrire un ‘1’ au bit CnF à désactiver (et ‘0’ aux autres bits)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-54
2. [$004C] TIE – interruption correspondant au canal n est activé (si le masque est désactivé, CnI=1)
3. le front spécifié dans OMn:OLn a lieu sur la broche de sortie correspondante du port T
C.3(4) Comparer des sorties (OC)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-55
C.3(4) Comparer des sorties (OC)
Processus général pour OC:
1. configurer le canal en mode OC (TIOS)2. choisir le type de front désiré avec OMn:OLn (TCTL1-2)3. fixer les paramètres du compteur binaire (TEN, PR[2:0])4. calculer NI ≡ le nombre d’incréments du compteur par Ts
(période du signal à générer): NI = fc / fs
5. avant chaque événement: stocker au registre TCn la valeur future de temps auquel on veut créer le front:a. accéder la valeur actuel de TCNTb. stocker la somme TCNT + α(%) * NI dans TCnH:L
6. après l’événement: effectuer une remise-à-zéro du CnF, en écrivant un ‘1’ au bit correspondant de TFLG1
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-56
C.3(4) Comparer des sorties (OC)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-57
C.3(4) Comparer des sorties (OC)
Exemple: générer un signal carrée de 1 kHz avec un cycle de service de 50% sur le canal 2 du TIM
le canal 2 du module TIM (IOC2) est configuré pour généré un signal de sortie
on suppose que la fréquence de Bus Clock est de 8 MHz, et on fixe la réduction d’échelle pour le diviser par 4
la fréquence d’horloge pour le compteur à 16 bits est alors de 2 MHz (période de Tc = 0.5 sec)
alors:un période de 1 kHz correspond à NI = 2000 impulsionsα = 50% haut (actif): 1000 impulsions ($3E8 en hex)1-α = 50% bas (inactif): 1000 impulsions ($3E8 en hex)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-58
C.3(4) Comparer des sorties (OC)
Exemple: diagramme de flots de données
Initialiser les registres et masques:TMSK2, TCTL2, TIOS et TSCR
Charger TC2 avec la valeur initial du compteur
Activer le sous-système de temporisation
C2F=1?
Mise-à-zéro de TC2H
Remise-à-zéro du drapeau C2F
TSCR1 TSCR2
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-59
C.3(4) Comparer des sorties (OC)
;*************************************************; Définitions
TSCR2_IN EQU $02 ;désactiver TOI, reduction d’échelle=4
TCTL2_IN EQU $10 ;initialise OC2 avec toggle
TIOS_IN EQU $04 ;config canal 2 comme OC
TSCR1_IN EQU $80 ;activer les compteur, RAZ du drapeau
;*************************************************; Programme principale
ORG $4000 JSR TIMERINIT ; sr initialise le compteur DONE JSR SQ_WAVE ; sr génere un onde carrée
BRA DONE ; branch. infiniEND
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-60
C.3(4) Comparer des sorties (OC)
;*************************************************; TIMERINIT: sous-routine qui initialise TIM pour OC2
TIMERINIT CLR TIE ;désactiver les interruptions
MOVB #TSCR2_IN,TSCR2 ;désactiver ovf, réd.d’éch.=4
MOVB #TCTL2_IN,TCTL2 ;OC2 ‘toggle’ chaque compare
MOVB #TIOS_IN,TIOS ;config canal 2 comme OC
MOVW #$03E8,TC2 ;charger TC2 avec compte initial
MOVB #TSCR1_IN,TSCR1 ;activer et config le compteurRTS
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-61
C.3(4) Comparer des sorties (OC)
; SQWAVE: sous-routine pour générer le front d’ondes
SQ_WAVE BRCLR TFLG1,#$04,SQ_WAVE ;balayage de C2F
LDD TC2 ;charger la valeur de TC2
ADDD #$03E8 ;addit. la valeur du compteur
STD TC2 ;fixer le prochain t de transition
MOVB #$04,TFLG1 ; écrire un ‘1’ à C2F
RTS
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-62
C.3(4) Comparer des sorties (OC)
Exemple: générer un signal carrée de 1 kHz avec un cycle de service active haut de 30% au canal 0 du TIM
le canal 0 du module TIM (IOC0) est configuré pour compare un signal de sortie
on suppose que la fréquence de MCLK est de 8 MHz, et on fixe la réduction d’échelle pour le diviser par 8
la fréquence d’horloge pour le compteur à 16 bits est alors de 1 MHz (période Tc = 1 sec)
alors:un période de 1 kHz correspond à NI = 1000 impulsionsα = 30% haut (actif): 300 impulsions
1 - α = 70% bas (inactif): 700 impulsions
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-63
C.3(4) Comparer des sorties (OC)
TSCR1TSCR2
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-64
C.3(4) Comparer des sorties (OC) ORG ROMStart
DEBUT: BSET TSCR2, 3 ;facteur d’échelle 8 → 1 Mhz
BSET TIOS, 1 ;choisir le canal 0 pour fonction OC
MOVB #1, TCTL2 ;fixer un ‘toggle’ comme action
BSET PTT, 1 ;activer la broche PT0 à 1
BSET TSCR1, $80 ;activer le compteur
LDD TCNT ;charger la valeur du compteur
ADHI ADDD #300 ;fixer le temps pour comparer avec compteur
STD TC0 ;stocker reg 0 au comparateur
HIGH BRCLR TFLG1, 1, HIGH ;balayage: attend le drapeau COF
MOVB #$01,TFLG1 ; RAZ du drapeau COF
LDD TC0
ADDD #700 ;fixer le temps pour comparer avec compteur
STD TC0
LOW BRCLR TFLG1, 1, LOW ;balayage: attend le drapeau COF
MOVB #$01,TFLG1 ; RAZ du drapeau COF
LDD TC0
BRA ADHI
END
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-65
Sommaire de la section C.3
C.3 Module de temporisation: 1)Concepts fondamentaux
2)Module de temporisation standard (TIM)
3)Capter des entrées (IC)− saisie des paramètres d’un signal
4)Comparer des sorties (OC)− génération de signaux précis
5)Accumuler des impulsions (PA)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-66
C.3(5) Accumulateur d’impulsions (PA)
Fonction: compter le nombre d’impulsions en exploitant le compteur binaire
Modes d’opération:1. mode compteur d’événements: permet de compter les
fronts d’ondes (spécifiés par l’usager) qui ont lieu sur la broche d’entrée de l’accumulateur (PAI)
2. mode cumulatif: permet de compter les impulsions d’une horloge dont la fréquence est fixe
il compte les impulsions de l’horloge seulement lorsqu’il est activé par la broche PAIil conserve toujours la dernière valeur comptée
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-67
C.3(5) Accumulateur d’impulsions (PA)
Registres TIM (seulement ceux pour l’accumulation d’impulsions)
PACTL EQU $0060 ; registre de contrôle
PAFLG EQU $0061 ; registre drapeau
PACNT EQU $0062 ; registre de compteur (2 octets)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-68
C.3(5) Accumulateur d’impulsions (PA)
Configuration de l’accumulateur d’impulsions:
l’entrée de l’accumulateur (PAI) partage la même broche externe que le canal 7 (IC7/OC7) du port T
on doit alors désactiver les fonctions OC du canal 7 afin d’utiliser cette broche pour l’accumulation
étapes: 1. fixer le bit IOS7 = 0 du registre TIOS, afin d’activer la
fonction IC du canal 72. fixer les bits OM7 et OL7 (mode/level) à ’00’ dans le
registre TCTL1, afin de déconnecter le canal OC de la broche externe
3. fixer le bit OC7M7 = 0 dans le registre OC7M (adresse $0042) pour désactiver le masque no 7 en sortie.
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-69
C.3(5) Accumulateur d’impulsions (PA)
Registres pertinents:
le registre de contrôle (PACTL) à l’adresse $0060fixer PAEN = 1 active la circuiterie connectée à la broche d’entrée PAI pour la détection de frontsfixer PEDGE = 0 compte des fronts descendants, tandis que PEDGE = 1 compte des fronts montants
le système commence maintenant à compter les fronts sur la broche PAI
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-70
C.3(5) Accumulateur d’impulsions (PA)
Registres pertinents:
le registre de drapeau (PAFLG) à l’adresse $0061le bit PAIF s’active chaque fois qu’un front est compté
le registre de compteur (PACNT) aux adresses $0062 et $0063
on compte dans ce registre à 16 bits
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-71
C.3(5) Accumulateur d’impulsions (PA)
Registres pertinents:
[$0062:$0063] PACNT -- le registre de compteur:on devrait y accéder avec des instructions à 2 octets (e.g., LDD)le registre PACNT reflète le nombre de fronts actifs (mod 65,536) depuis la dernière remise à zéro du systèmequand PACNT déborde de $FFFF à $0000, le bit PAOVF du registre PAFLG devient actif (il faut lui écrire un ‘1’ pour le remettre à zéro)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-72
C.3(5) Accumulateur d’impulsions (PA)
Mode mémorisé:le bit PAMOD du registre PACTL détermine le mode de l’accumulateur d’impulsions
PAMOD = 0: mode compteur d’événementsPAMOD = 1: mode cumulatif
dans le mode cumulatif, une fréquence fixe (BUSCLK ÷ 64) incrémente le compteur (PACNT) selon que la broche PAI est à 0 ou 1
permet de mesurer le temps de validité d’une conditionPACNT contient le nombre d’impulsions depuis la dernière remise-à-zéro du systèmesi PEDGE = 0, le système permet de compter si PAI = 1si PEDGE = 1, le système permet de compter si PAI = 0
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
C.3-73
C.3(5) Accumulateur d’impulsions (PA)
Exemple: compter le nombre de fronts montants sur la broche PAI
PACTL EQU $0060 ; déclaration des adresses de registres déjà déclarés dans PAFLG EQU $0061 ; le fichier d’inclusion mc9s12c32.incPACNT EQU $0062 PACTL_IN EQU $50 ; active le PA, mode compte évén., fronts montants
ORG $4000
MOVW #$0000,PACNT ; Compteur à 0 MOVB #$03,PACFLG ; drapeaux à 0 MOVB #PACTL_IN, PACTL ; active le PA, mode compte
événements ; sur fronts montants à la broche 7
; À partir d’ici, le programme peut alors lire en tout temps le registre PACNT et; effectuer des opérations selon le nombre d’événements qui a eu lieu...
Fin: BRA Fin END