730 likes | 879 Views
CONTENU DU COURS. Partie C − Concepts matériels. C.1 Con figurations 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
E N D
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.5Interfaces 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 utilisedes 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
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
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
C.3(2) Module TIM GPA770: Microélectronique appliquée Éric Granger
C.3(2) Module TIM GPA770: Microélectronique appliquée Éric Granger
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 (‘TimerEnable’) 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
C.3(2) Module TIM A. Compteur binaire à 16 bits Bus Clock GPA770: Microélectronique appliquée Éric Granger
C.3(2) Module TIM A. Compteur binaire à 16 bits • La valeur du compteur est stockée dans 1 registre à 16 bits: (‘TimerCounterRegister 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
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 TOFpour un débordement GPA770: Microélectronique appliquée Éric Granger
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
C.3(2) Module TIM A. Compteur binaire à 16 bits GPA770: Microélectronique appliquée Éric Granger
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 TSCR2pour l’intervalle de comptage désirée • fixer le bit TENdu 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
C.3(2) Module TIM B. Canaux d’entées/sorties • Fonction IC/OC: 8 canaux individuels pour manipuler des signaux • chaque canalpeut être configuré pour IC ou OC • interne:[$0240] PORT TPTT est associé aux 8 canaux • externe: broches IOC[7:0] sont associées aux 8 canaux GPA770: Microélectronique appliquée Éric Granger
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
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
C.3(2) Module TIM B. Canaux d’entées/sorties GPA770: Microélectronique appliquée Éric Granger
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
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
C.3(2) Module TIM • Registres essentiels pour configurer le TIM: • [$0044:$0045] TCNT(hi):(lo)(pour ‘TimerCounterRegister 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
C.3(2) Module TIM Gestion des interruptions avec le TIM GPA770: Microélectronique appliquée Éric Granger
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 lalongueur 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: mesurerla 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
MAIN -initialize TIMER_INIT MEAS_PER C.3(3) Capter des entrées (IC) • Exemple: code pourmesurer la périoded’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 GPA770: Microélectronique appliquée Éric Granger
C.3(3) Capter des entrées (IC) • Exemple: diagramme de flots de données TSCR1 TSCR2 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 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 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 t = stop - start (ignore le bit C du CCR lorsde 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) + nx 216 t = (stop-start) + (n-1)x 216 t = nx 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