5-Timers.pptx

Embed Size (px)

Citation preview

Chapitre X

Chapitre 5Timers-Compteurs standardsIntroductionUn Timer est un dispositif matriel qui peut jouer plusieurs rles dans un systme embarquUn Timer est plus souvent un terme sommaire qui dsigne deux fonctions :temporisation (Timer) et Comptage (Counter). Il est plus exact de le nommer Timer/CounterParmi les fonctions assures par les Timers/Counters on peut citer les fonctions suivantes:Mesure de la largeur dun signal Comptage dvnements Gnration dun signal priodique particulierGnration dune base de tempsFonctionnement dun Timer/CounterComptageCompteurValeur de rfrence=INCEvnement externeActionsMettre une sortie 0 ou 1Gnrer une interruptionExcuter un programmeetcMesureCompteurRegistre de captureINCHorloge InterneActionsGnrer une interruptionPrlever la valeur captureetcEvnement externeFonctionnement dun Timer/CounterTemporisationCompteurBase de temps=INCHorloge interneActionsMettre une sortie 0 ou 1Gnrer une interruptionExcuter un programmeetcTimers/Counters de la LPC 3250La LPC3250 dispose de 6 Timers Counters identiques de 32 bits chacun (Timer0/1/2/3/4/5)Chaque Timer dispose de 4 registres de capture de 32 bits chacun permettant de raliser la capture de 4 vnements diffrentsChaque Timer dispose de 4 registres de correspondance de 32 bits chacun permettant de:Gnrer une interruption en cas dgalitArrter le timer en cas dgalitRedmarrer le timer en cas dgalitLes timers disposent de lignes en sortie, dites sorties de correspondance, permettant de gnrer toute sorte de signaux externes. On peut programmer ces sorties pour :tre mise 0 en cas dgalittres mises 1 en cas dgalitSinverser en cas dgalitInterface externe des TimersBien que le fonctionnement des 6 timers soit identique, ils ne sont pas tous dots de mmes signaux dinterface externeLe timer 0 possde: Deux entres de capture CAP0[1:0] Quatre sorties de correspondance MAT0[3:0]Les timers 1, 2 et 3 possdent: Une entre de capture chacun CAP1[0], CAP2[0], CAP3[0]

Une sortie de correspondance chacun MAT1[0], MAT2[0], MAT3[0] Le timer 4 possde: Une entre de capture CAP4[0] Pas de sortie de correspondanceLe timer 5 ne possde pas dentres/sorties Description fonctionnelleLes Timers sont conus pour compter :Soit le nombre dimpulsions de lhorloge PERIPH_CLK Soit le nombre dimpulsions dune ligne externeLe Timer peut commander une ou plusieurs sorties si la valeur du TC arrive la valeur contenue dans lun des registres de correspondance Le timer peut enregistrer la valeur actuelle du registre TC dans lun des 4 registres de capture si un vnement arrive dans lune des entres de capture Chaque Timer dispose:Le registre Prescal Counter est incrment chaque top dhorlogeQuand la valeur du registre PC arrive la valeur contenu dans le registre PR, PC est mis 0 et le registre TC est incrmentLe comportement du timer dpend ensuite des paramtres de configurationLe Timer peut dclencher une interruption quand la valeur actuelle arrive la valeur contenue dans lun des registres de correspondancedun registre compteur TC (Timer counter) dun registre compteur diviseur PC (Prescal counter) dun registre diviseur PR (Prescal Register)

Description des registres Adresses de base des TimersTimerAdresse de base00x4004 4000 10x4004 C000 20x4005 8000 30x4006 0000 40x4002 C000 50x4003 0000NB: Tous les Timers sont par dfaut dsactivs. Avant de les utiliser, il faut les activer dans le registre TIMCLK_CTRL1 dadresse 0x4000 40C0Description des registresNomDescriptionOfsetIRInterrupt Register. Indique ltat des interruptions0x00TCRTimer Control Register. Active, dsactive ou remet 0 le compteur0x04TCTimer counter. Le compteur proprement dit qui sincrmente chaque fois que PC=PR0x08PRPrescale Register. Contient une valeur dfinie par lutilisateur. Quand PC=PR, TC est incrmente et PC est remis 00x0CPCPrescale Couner. Incrment chaque top dhorloge et remis 0 quand il atteint PR0x10MCRMatch Control Register. Dfinit le comportement du Timer quand PC arrive la valeur de lun des registres Match (Interruption, remise 0 du TC arrt de TC, ..etc)0x14MR0Match Register 0. contient une valeur dfinie par lutilisateur. Quand TC arrive cette valeur. Le Timer effectue le traitement dfinit dans MCR (RAZ, Arrt det TC, int,)0x18MR1Match Register 1. identique MR00x1CMR2Match Register 2. identique MR00x20MR3Match Register 3. identique MR00x24CCRCapture Control Register. Dfinit quels vnements sur les lignes de captures sont susceptibles de charger la valeur de TC dans les registres de capture et si cela est accompagn dune interruption0x28CR0Capture Register 0. Ce registre est charg de la valeur de TC si un vnement arrive sur une ligne de capture0x2CCR1Capture Register 1. identique CR00x30CR2Capture Register 2. identique CR00x34CR3Capture Register 3. identique CR00x38EMRExternal Match Register. Contrle les sorties externes du Timer0x3CCTCRCount Control Register. Dfinie la fonction du Timer (Temporisateur ou compteur) dans le cas du compteur, il dfinie le signal dentre et le front actif.0x70Description des registresLe registre IR (Timer Interrupt)Ce registre contient les indicateurs dinterruption.4 bits sont associs aux interruptions sur correspondance avec les registres Match et 4 bits sont associs aux interruption sur captureSi une interruption est gnre, le bit correspondant est 1Lcriture dans ce registre permet deffacer les indicateurs dinterruptionBitSymboleDescription0MR0 Interrupt Interruption sur correspondance avec le registre MR01MR1 Interrupt Interruption sur correspondance avec le registre MR12MR2 Interrupt Interruption sur correspondance avec le registre MR23MR3 Interrupt Interruption sur correspondance avec le registre MR34CR0 Interrupt Interruption sur capture dans le registre CR05CR1 Interrupt Interruption sur capture dans le registre CR16CR2 Interrupt Interruption sur capture dans le registre CR27CR3 Interrupt Interruption sur capture dans le registre CR3Description des registresLe registre TCR (Timer Control Register)Contrle les oprations du Timer travers deux bitsBit 0 : Counter Enable 0 : Arrter le compteur 1 : Dmarrer le compteurBit 1 : Counter Reset 0 : Comptage 1 : Remise zro du compteurLe registre TC(Timer Counter)Sincrmente de 1 chaque fois que le registre PC arrive sa valeur limiteLe registre PR(Prescale Register)Valeur limite du registre PC. Si PC arrive cette valeur, TC est incrment et PC est rinitialisLe registre PC(Prescale Counter)Sincrmente chaque top dhorloge Arriv la valeur de PR, il repasse 0 et TC est incrment de 1Description des registresLes registres MR0, MR1, MR2 et MR3 (Match Registers)Les valeurs contenues dans ces registres sont continuellement compares la valeur courante du TCQuand la valeur du TC est gale lune de ces valeurs, des actions sont effectues automatiquement par le TimerCes actions peuvent tres la gnration dinterruption, larrt du Timer ou la rinitialisation du Timer.Ces actions sont contrles par le registre MCR.Les registres CR0, CR1, CR2 et CR3 (Capture Registers)Chacun de ces registres est associ une entre de capture Quand un vnement arrive sur cette entre, le registre est charg par la valeur actuelle du TC Le type dvnement susceptible de charger le registre de capture (front montant ou front descendant) est configure par le registre de CCRDescription des registresLe registre MCR (Match Control Register)Contrle les oprations effectuer quand la valeur actuelle de TC est gale lun des registres MR0, MR1, MR2 et MR3BitSymboleDescription0MR0I Interrupt on MR0. Sil est 1, une interruption est gnre si TC=MR01MR0R Reset on MR0. Sil est 1, le timer est rinitialis si TC = MR02MR0SStop on MR0. Sil est 1, le Timer est arrt si TC = MR03MR1I Interrupt on MR1. Sil est 1, une interruption est gnre si TC=MR14MR1R Reset on MR1. Sil est 1, le Timer est rinitialis si TC = MR15MR1SStop on MR1. Sil est 1, le Timer est arrt si TC = MR16MR2I Interrupt on MR2. Sil est 1, une interruption est gnre si TC=MR27MR2R Reset on MR2. Sil est 1, le Tmer est rinitialis si TC = MR28MR2SStop on MR2. Sil est 1, le Timer est arrt si TC = MR29MR3I Interrupt on MR3. Sil est 1, une interruption est gnre si TC=MR310MR3R Reset on MR3. Sil est 1, le Timer est rinitialis si TC = MR311MR3SStop on MR3. Sil est 1, le Timer est arrt si TC = MR3Description des registresLe registre CCR (Capture Control Register)Ce registre permet de charger lun ou plusieurs registres CR0, CR1, CR2 et CR3 quand un vnement arrive sur lune ou plusieurs des lignes de captureIl permet galement de slectionner le type dvnement attendre (front montant ou descendant) BitSymboleDescription0CAP0RE Capture on Cap0 Rising Edge. Sil est 1, Un front montant sur Cap0 charge CR01CAP0FE Capture on Cap0 Falling Edge. Sil est 1, Un front descendant sur Cap0 charge CR02CAP0IInterrupt on Cap0 event. Le chargement de CAP0 permet de gnrer une interruption3CAP1RE Capture on Cap1 Rising Edge. Sil est 1, Un front montant sur Cap1 charge CR14CAP1FE Capture on Cap1 Falling Edge. Sil est 1, Un front descendant sur Cap1 charge CR15CAP1IInterrupt on Cap1 event. Le chargement de CAP1 permet de gnrer une interruption6CAP2RE Capture on Cap2 Rising Edge. Sil est 1, Un front montant sur Cap2 charge CR27CAP2FE Capture on Cap2 Falling Edge. Sil est 1, Un front descendant sur Cap2 charge CR28CAP2IInterrupt on Cap2 event. Le chargement de CAP2 permet de gnrer une interruption9CAP3RE Capture on Cap3 Rising Edge. Sil est 1, Un front montant sur Cap3 charge CR310CAP0FE Capture on Cap3 Falling Edge. Sil est 1, Un front descendant sur Cap3 charge CR311CAP3IInterrupt on Cap3 event. Le chargement de CAP3 permet de gnrer une interruptionDescription des registresLe registre EMR (External Match Register)Ce registre contrle et indique ltat des sorties des TimersBitSymboleDescription0EM0Etat de la ligne EM01EM1Etat de la ligne EM12EM2Etat de la ligne EM23EM3Etat de la ligne EM35:4EMC0Contrle de la ligne EM000 ne pas utiliser01 Mettre 0 si TC = MR010 Mettre 1 si TC = MR011 Inverser si TC = MR07:6EMC1Contrle de la ligne EM1 (mme configuration que EM0)9:8EMC2Contrle de la ligne EM2 (mme configuration que EM0)11:10EMC3Contrle de la ligne EM3 (mme configuration que EM0)Description des registresLe registre CTCR (CounT Control Register)Utilis pour slectionner entre la fonction Timer ou compteur dvnement externesDans le cas de la fonction compteur, ce registre permet de slectionner la ligne et lvnement de dclenchement BitSymboleDescription1:0Counter/Timer modeChoisit la fonction du compteur/Timer00 Timer01 Compteur dvnements sur front montant de lentre externe10 Compteur dvnement sur front descendant de lentre externe11 Compteur sur prsence dun front quelconque3:2Count Input selectSlection de lentre externe de comptage00 Cap001 Cap110 Cap211 Cap3Description des registresLe registre TIMCLK_CTRL1 (Timer Clock Control1 and MCPWM register) 0x4000 40C0Ce registre permet dactiver les horloges des Timers standards BitFonction0Activation de lhorloge du Timer 40 Horloge dsactive1 Horloge active1Activation de lhorloge du Timer 52Activation de lhorloge du Timer 03Activation de lhorloge du Timer 14Activation de lhorloge du Timer 25Activation de lhorloge du Timer 3Exemples dutilisation des TimersExemple 1 : gnration dune squence en sortieUn dispositif est commandable par 3 signaux (Q0, Q1, Q2) dfinissant une squence comme indiqu dans le chronogramme suivantQ0Q1Q210 msEcrire un programme assembleur permettant de gnrer de faon cyclique cette squence. Exemples dutilisation des TimersExemple 1 : gnration dune squence en sortieOn utilisera le Timer 0 qui dispose de 4 sorties, MAT0, MAT1, MAT2 et MAT3. donc :Q0 MAT0Q1 MAT1Q2 MAT2On programme le Compteur /Timer comme Timer qui sincrmente chaque Top dhorloge PERIPH_CLK (13 MHZ). Le Timer sincrmentera donc chaque:

Pour avoir 10ms, il faudra donc que le compteur sincrmente X fois tque:

On initialisera les registres MR comme suitMR0 130000 MR1 2x130000 =260000MR2 3x 130000 = 390000Enfin, on programme les sorties MAT0[0, 1, 2] pour se mettre au niveau haut quand TC arrive aux valeurs de MR 0, 1, 2 respectivement Le Timer est rinitialis quand TC arrive la valeur de 520000 (4 x 130000)Exemples dutilisation des TimersExemple 1 : gnration dune squence en sortieTIMCLK_CTRL1 equ 0x400040C0T0IRequ 0x40044000T0TCRequ 0x40044004 .;Activation de lhorloge du Timer Ldr R0, =TIMCLK_CTRL1Mov R1, #4Str R1, [R0];Chargement des registres Matchldr R0, =T0MR0 ; registre Match 0ldr R1, =0x1FBD0 ; 130000str R1, [R0]ldr R0, =T0MR1 ; Registre Match 1ldr R1, =0x3F7A0 ; 2x130000str R1, [R0]ldr R0, =T0MR2 ; Registre Match 2ldr R1, =0x5F370 ; 3x130000str R1, [R0]ldr R0, =T0MR3 ; Registre Match 3ldr R1, =0x 7EF40 ; 4x130000str R1, [R0]; Configuration du registre EMRldr R0, =T0EMRldr R1, =0x2A0 ; mettre les lignes 1 ds le Matchstr R1, [R0]; Configuration du registre MCR; Quand TC arrive la valeur de MR3, on rinitialise le timerldr R0, =T0MCRldr R1, =0x400 ; str R1, [R0]; Dmarrer le Timerldr R0, =T0TCRmov R1, #1; str R1, [R0]; ne rien faire dautres; le timer gnre automatiquement la squenceStopb stopExemples dutilisation des TimersExemple 2 : Mesure de la priode (ou frquence) dun signalSoit un signal priodique de priode T inconnue suivantTNous souhaitons dterminer la priode de ce signal en utilisant le mode capture des Timers. Ecrire un programme assembleur permettant de calculer cette priode.Exemples dutilisation des TimersExemple 2 : Mesure de la priode (ou frquence) dun signalOn utilisera lun des Timer 0, 4, 2, 3 ou 4 qui disposent dune entre de capture (Timer 0 par exemple) Le Timer/compteur est configur comme Timer qui sincrmete chaque Top dhorloge PERIPH_CLKLe Timer est configur en mode capture sur la lentre CAP0Ds quil ya un front montant sur CAP0[0], la valeur actuelle de TC est capture dans le registre CAP0. On prlve cette valeur et on lutilise comme valeur de rfrenceA linstant t1CAP0 TCR10 CAP0_t1Au prochain front montant , la valeur de TC est enregistre dans CAP0. la diffrence avec la premire valeur capture donne la priode du signal A linstant t1CAP0 TCR11 R10 CAP0_t2Periode R11*1/13*10-6A linstant t2CAP0 TCExemples dutilisation des TimersTIMCLK_CTRL1 equ 0x400040C0T0IRequ 0x40044000T0TCRequ 0x40044004 .;Activation de lhorloge du Timer Ldr R0, =TIMCLK_CTRL1Mov R1, #4Str R1, [R0];Configuration du registre T0CCR; capturer TC dans CR0 chaque front montant, descendant; et gnrer une interruption chaque captureldr R0, =T0CCR mov R1, #1str R1, [R0]; Boucler en attente du front montantldr R0, =T0Iboucle1 ldr R1[R0]; Etat des interruptionsands R1, R1, #0x10beq boucle1; une interruption sur capture est arrive; effacer ltat des interruptionsmov R1, #0str R1, [R0]; charger dans R10 la valeur de CR0ldr R0, =T0CR0ldr R10, [R0]

; attendre le prochain front montantBoucle2ldr R0, =T0TIldr R1, [R0]ands R1, R1, 0x10beq boucle2

; une interruption sur capture est arrivercuprer la valeur de CR0ldr R0, = T0CR0ldr R1, [R0]; dterminer la priodesub R11, R1, R10; la valeur de R11 doit tre multiplie par 1/13*10-6Exemple 2 : Mesure de la priode (ou frquence) dun signal; Dmarrer le Timerldr R0, =T0TCRmov R1, #1; str R1, [R0]ExerciceNous voulons utiliser le Timer 0 pour gnrer une base de temps pour la carte LPC3250. pour tester cette fonctionnalit, on utilisera la Led D15 quon allumera et teindra par alternance pendant une seconde

La LED D15 (rouge) est relie la broche GPO_1. Un 1 logique permet dallumer la LED et un 0 logique permet de lteindre.

Ecrire un programme assembleur permettant dallumer et dteindre , par alternance, la LED D15 pendant une seconde en utilisant le Timer 0 en mode interruption