GPA770: Microélectronique appliquée CONTENU DU COURS GPA770: Microélectronique appliquée Éric Granger
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 68HC12 vecteur et priorité d’exceptions, et routines de service d’interruption C.3 Module de temporisation: module de temporisation standard du 68HC12 saisie des entrées et comparaison de sorties C.4 Convertisseurs analogique-numérique: processus de conversion système de conversion du 68HC12 C.5 Interfaces de communications sérielles: communications sérielles avec un microcontrôleur interfaces sérielles multiples du 68HC12: SCI et SPI GPA770: Microélectronique appliquée Éric Granger
Sommaire de la section C.3 C.3 Module de temporisation: Concepts fondamentaux Module de temporisation standard (TIM) Capter des entrées (IC) − saisie des paramètres d’un signal Comparer des sorties (OC) − génération de signaux précis Accumuler des impulsions (PA) GPA770: Microélectronique appliquée Éric Granger
C.3(1) Concepts fondamentaux Rôle des types de sous-systèmes dans le 68HC12: CPU12: unité de traitement central gestion d’exceptions: interrompre l’exécution normal d’un programme Bus: le module LIM combine DATA, ADDR et CTRL Mémoire: stocker des configurations (bloc), des variables (RAM) , des programmes (ROM) et des vecteurs Périphériques d’entrée/sortie: ports d’entrée/sortie: échanger des données avec le monde externe temporisation: 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) GPA770: Microélectronique appliquée Éric Granger
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: TIM – Module de temporisation standard: mesurer des entrées, générer des sorties, compter des événements externes PWM – Module de modulation de longueur d’impulsions: générer des signaux dont la longueur d’impulsions varie GPA770: Microélectronique appliquée Éric Granger
C.3(1) Concepts fondamentaux MC9S12C32 GPA770: Microélectronique appliquée Éric Granger
C.3(1) Concepts fondamentaux PWM/IOC/PTT GPA770: Microélectronique appliquée Éric Granger
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 GPA770: Microélectronique appliquée Éric Granger
C.3(1) Concepts fondamentaux Caractéristiques fondamentales d’un signal numérique: GPA770: Microélectronique appliquée Éric Granger
Sommaire de la section C.3 C.3 Module de temporisation: Concepts fondamentaux Module de temporisation standard (TIM) Capter des entrées (IC) − saisie des paramètres d’un signal Comparer des sorties (OC) − génération de signaux précis Accumuler des impulsions (PA) GPA770: Microélectronique appliquée Éric Granger
GPA770: Microélectronique appliquée C.3(2) Module TIM Fonctions principales du TIM: IC (‘Input Capture’): permet de mesurer les caractéristiques d’un signal numérique en entrée exemple: 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 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. 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 GPA770: Microélectronique appliquée Éric Granger
GPA770: Microélectronique appliquée C.3(2) Module TIM Composants matériels du TIM: Compteur binaire programmable à 16 bits qui tourne continuellement incrémenté par l’horloge Bus Clock point de référence pour synchronisation Circuiterie pour gérer 8 canaux d’entrée/sortie indépendants chaque canal exploite le compteur binaire comme référence Les canaux 0 à 7 peuvent être IC ou OC et le canal 7 peut, en plus, être utilisé pour le PA. GPA770: Microélectronique appliquée Éric Granger
GPA770: Microélectronique appliquée C.3(2) Module TIM GPA770: Microélectronique appliquée Éric Granger
GPA770: Microélectronique appliquée C.3(2) Module TIM GPA770: Microélectronique appliquée Éric Granger
A. Compteur binaire à 16 bits 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 GPA770: Microélectronique appliquée Éric Granger
A. Compteur binaire à 16 bits C.3(2) Module TIM A. Compteur binaire à 16 bits Bus Clock GPA770: Microélectronique appliquée Éric Granger
A. Compteur binaire à 16 bits 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. GPA770: Microélectronique appliquée Éric Granger
A. Compteur binaire à 16 bits 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 GPA770: Microélectronique appliquée Éric Granger
A. Compteur binaire à 16 bits 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] GPA770: Microélectronique appliquée Éric Granger
A. Compteur binaire à 16 bits C.3(2) Module TIM A. Compteur binaire à 16 bits GPA770: Microélectronique appliquée Éric Granger
A. Compteur binaire à 16 bits C.3(2) Module TIM A. Compteur binaire à 16 bits Exemple codé 3-1: étapes minimums requises pour exploiter le compteur binaire fixer le facteur de réduction avec le bits PR[2:0] du registre TSCR2 pour l’intervalle de comptage désirée fixer le bit TEN du registre TSCR1 pour activer le compteur Question: Quel est le temps écoulé au débordement si PR = 101? GPA770: Microélectronique appliquée Éric Granger
B. Canaux d’entées/sorties 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 OC interne: [$0240] PORT T PTT est associé aux 8 canaux externe: broches IOC[7:0] sont associées aux 8 canaux GPA770: Microélectronique appliquée Éric Granger
B. Canaux d’entées/sorties 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 PA interne: partage le bit PTT7 du PORT T externe: la broche IOC7/PAI est liée à l’accumulateur GPA770: Microélectronique appliquée Éric Granger
B. Canaux d’entées/sorties 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 GPA770: Microélectronique appliquée Éric Granger
B. Canaux d’entées/sorties C.3(2) Module TIM B. Canaux d’entées/sorties GPA770: Microélectronique appliquée Éric Granger
GPA770: Microélectronique appliquée C.3(2) Module TIM Ensemble 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 GPA770: Microélectronique appliquée Éric Granger
GPA770: Microélectronique appliquée 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 TIM TOI permet de générer un INT de débordement (si le TOF=1) GPA770: Microélectronique appliquée Éric Granger
GPA770: Microélectronique appliquée C.3(2) Module TIM Registres 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’impulsions CLK[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 GPA770: Microélectronique appliquée Éric Granger
Gestion des interruptions avec le TIM C.3(2) Module TIM Gestion des interruptions avec le TIM GPA770: Microélectronique appliquée Éric Granger
Gestion des interruptions avec le TIM C.3(2) Module TIM Gestion des interruptions avec le TIM GPA770: Microélectronique appliquée Éric Granger
Sommaire de la section C.3 C.3 Module de temporisation: Concepts fondamentaux Module de temporisation standard (TIM) Capter des entrées (IC) − saisie des paramètres d’un signal Comparer des sorties (OC) − génération de signaux précis Accumuler des impulsions (PA) GPA770: Microélectronique appliquée Éric Granger
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ée l’é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 GPA770: Microélectronique appliquée Éric Granger
C.3(3) Capter des entrées (IC) Circuit IC pour un canal n = 0, 1, ..., 7: GPA770: Microélectronique appliquée Éric Granger
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 GPA770: Microélectronique appliquée Éric Granger
C.3(3) Capter des entrées (IC) Sélection du front pour le signal en entrée: GPA770: Microélectronique appliquée Éric Granger
C.3(3) Capter des entrées (IC) Lorsqu’un événement (un front) a lieu: [$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) GPA770: Microélectronique appliquée Éric Granger
C.3(3) Capter des entrées (IC) 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 GPA770: Microélectronique appliquée Éric Granger
C.3(3) Capter des entrées (IC) Processus général pour un IC: (approche ‘polling’) Configurer le canal en mode IC (TIOS) Fixer les paramètres du compteur (TEN, PR[2:0]) Mesurer le temps ‘start’: choisir un type de front avec EDGnB:EDGnA (TCTL3-4) surveiller le drapeau CnF du canal n (TFLG1) quand CnF devient actif, stocker le contenu de TCnH:L en mémoire Mesurer le temps ‘stop’: effectuer une remise-à-zéro du CnF, en écrivant un ‘1’ au bit correspondant de TFLG1 si nécessaire, choisir un différent type de front avec EDGnB:EDGnA surveiller encore le drapeau CnF, et stocker le contenu de TCnH:L en mémoire quand ce bit devient actif Calculer la différence entre les deux valeurs en mémoire, et multiplier par Tc (la période du compteur) GPA770: Microélectronique appliquée Éric Granger
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 configurer le canal 3 en entrée dans TIOS fixer Tc (PR[2:0]dans TSCR2) et TEN=1 mesurer le temps start: spécifier qu’on veut détecter un front descendant: EDG3B:EDG3A = ’10’ surveiller le drapeau C3F dans TFLG1 quand ce bit devient actif, stocker le contenu de TC3H:L en mémoire MOVW TC3, start faire une remise-à-zéro de C3F en lui écrivant un ‘1’ dans TFLG1 avec MOVB mesurer le temps stop: spécifier qu’on veut détecter un front montant: EDG3B:EDG3A = ’01’ surveiller le drapeau C3F dans TFLG1, et quand il devient actif, stocker le contenu de TC3H:L en mémoire MOVW TC3, stop calculer la différence, stop – start, et la longueur d’impulsion du signal, Ls = (stop - start)Tc GPA770: Microélectronique appliquée Éric Granger
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 fixer Tc = 0.5μsec (alors PR[2:0]=‘010’ dans TSCR2) et TEN=1 configurer le canal 4 en entrée dans TIOS mesurer le temps start: spécifier qu’on veut détecter un front descendant: EDG3B:EDG3A = ’10’ surveiller le drapeau C4F dans TFLG1 quand ce bit devient actif, stocker le contenu de TC4H:L en mémoire MOVW TC4, start mesurer le temps stop: faire une remise-à-zéro de C4F en lui écrivant un ‘1’ dans TFLG1 (MOVB) surveiller le drapeau C4F dans TFLG1, et quand il devient actif, stocker le contenu de TC4H:L en mémoire MOVW TC4, stop calculer la différence, stop – start, et la période du signal: Ts = (stop - start) Tc GPA770: Microélectronique appliquée Éric Granger
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 msec MAIN -initialize TIMER_INIT MEAS_PER GPA770: Microélectronique appliquée Éric Granger
C.3(3) Capter des entrées (IC) Exemple: diagramme de flots de données TSCR2 TSCR1 GPA770: Microélectronique appliquée Éric Granger
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 montant TIOS_IN equ $00 ;choisir le canal comme IC TSCR1_IN equ $80 ;activer le compteur TEN CLR_CH2 equ $04 ;masque RAZ du drapeau canal 2 ; Programme principale ORG $0800 EDGE_1: ds.w 1 ;variables PERIOD: 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 GPA770: Microélectronique appliquée Éric Granger
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 GPA770: Microélectronique appliquée Éric Granger
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 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 GPA770: Microélectronique appliquée Éric Granger
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 (ignore le bit C du CCR lors de la soustraction) GPA770: Microélectronique appliquée Éric Granger
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 GPA770: Microélectronique appliquée Éric Granger
Sommaire de la section C.3 C.3 Module de temporisation: Concepts fondamentaux Module de temporisation standard (TIM) Capter des entrées (IC) − saisie des paramètres d’un signal Comparer des sorties (OC) − génération de signaux précis Accumuler des impulsions (PA) GPA770: Microélectronique appliquée Éric Granger
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élai signal répétitif selon une certaine fréquence et cycle de service signal dont la longueur d’impulsion varie comme un PWM (Pulse Width Modulation) GPA770: Microélectronique appliquée Éric Granger
C.3(4) Comparer des sorties (OC) Circuit OC pour un canal n = 0, 1, .., 7: GPA770: Microélectronique appliquée Éric Granger
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 GPA770: Microélectronique appliquée Éric Granger
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é. GPA770: Microélectronique appliquée Éric Granger
C.3(4) Comparer des sorties (OC) Lorsque TCnH:TCnL = TCNTH:TCNTL [$004E] TFLG1 – le drapeau CnF du canal n s’active pour une remise à zéro du drapeau, il s’agit d’écrire un ‘1’ au bit CnF à désactiver (et ‘0’ aux autres bits) GPA770: Microélectronique appliquée Éric Granger
C.3(4) Comparer des sorties (OC) [$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 GPA770: Microélectronique appliquée Éric Granger
C.3(4) Comparer des sorties (OC) Processus général pour OC: configurer le canal en mode OC (TIOS) choisir le type de front désiré avec OMn:OLn (TCTL1-2) fixer les paramètres du compteur binaire (TEN, PR[2:0]) calculer NI ≡ le nombre d’incréments du compteur par Ts (période du signal à générer): NI = fc / fs avant chaque événement: stocker au registre TCn la valeur future de temps auquel on veut créer le front: accéder la valeur actuel de TCNT stocker la somme TCNT + α(%) * NI dans TCnH:L après l’événement: effectuer une remise-à-zéro du CnF, en écrivant un ‘1’ au bit correspondant de TFLG1 GPA770: Microélectronique appliquée Éric Granger
C.3(4) Comparer des sorties (OC) GPA770: Microélectronique appliquée Éric Granger
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 msec) 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) GPA770: Microélectronique appliquée Éric Granger
C.3(4) Comparer des sorties (OC) Exemple: diagramme de flots de données TSCR1 TSCR2 GPA770: Microélectronique appliquée Éric Granger
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. infini END GPA770: Microélectronique appliquée Éric Granger
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 compteur RTS GPA770: Microélectronique appliquée Éric Granger
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 GPA770: Microélectronique appliquée Éric Granger
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 msec) alors: un période de 1 kHz correspond à NI = 1000 impulsions α = 30% haut (actif): 300 impulsions 1 - α = 70% bas (inactif): 700 impulsions GPA770: Microélectronique appliquée Éric Granger
C.3(4) Comparer des sorties (OC) TSCR1 TSCR2 GPA770: Microélectronique appliquée Éric Granger
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 BRA ADHI END GPA770: Microélectronique appliquée Éric Granger
Sommaire de la section C.3 C.3 Module de temporisation: Concepts fondamentaux Module de temporisation standard (TIM) Capter des entrées (IC)− saisie des paramètres d’un signal Comparer des sorties (OC)− génération de signaux précis Accumuler des impulsions (PA) GPA770: Microélectronique appliquée Éric Granger
C.3(5) Accumulateur d’impulsions (PA) Fonction: compter le nombre d’impulsions en exploitant le compteur binaire Modes d’opération: 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) 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 PAI il conserve toujours la dernière valeur comptée GPA770: Microélectronique appliquée Éric Granger
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) GPA770: Microélectronique appliquée Éric Granger
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: fixer le bit IOS7 = 0 du registre TIOS, afin d’activer la fonction IC du canal 7 fixer les bits OM7 et OL7 (mode/level) à ’00’ dans le registre TCTL1, afin de déconnecter le canal OC de la broche externe fixer le bit OC7M7 = 0 dans le registre OC7M (adresse $0042) pour désactiver le masque no 7 en sortie. GPA770: Microélectronique appliquée Éric Granger
C.3(5) Accumulateur d’impulsions (PA) Registres pertinents: le registre de contrôle (PACTL) à l’adresse $0060 fixer PAEN = 1 active la circuiterie connectée à la broche d’entrée PAI pour la détection de fronts fixer 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 GPA770: Microélectronique appliquée Éric Granger
C.3(5) Accumulateur d’impulsions (PA) Registres pertinents: le registre de drapeau (PAFLG) à l’adresse $0061 le 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 GPA770: Microélectronique appliquée Éric Granger
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ème quand 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) GPA770: Microélectronique appliquée Éric Granger
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énements PAMOD = 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 condition PACNT contient le nombre d’impulsions depuis la dernière remise-à-zéro du système si PEDGE = 0, le système permet de compter si PAI = 1 si PEDGE = 1, le système permet de compter si PAI = 0 GPA770: Microélectronique appliquée Éric Granger
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.inc PACNT 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 GPA770: Microélectronique appliquée Éric Granger