Vous êtes sur la page 1sur 26

Chapitre 5

Timers-Compteurs standards

Introduction
Un Timer est un dispositif matriel qui peut jouer plusieurs rles dans
un systme embarqu
Un Timer est plus souvent un terme sommaire qui dsigne deux
fonctions
:
temporisation
(Timer) et
Comptage (Counter).
Il est plus exact de le nommer Timer/Counter

Parmi 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
particulier
Gnration dune base de temps

Fonctionnement dun Timer/Counter


Comptage
Actions
INC
Evnement externe

Compteur
Valeur de
rfrence

Mesure
INC
Horloge Interne

Compteur

Evnement externe

Registre de
capture

Mettre une sortie 0 ou


1
Gnrer une
interruption
Excuter un
programme
etc
Actions
Gnrer une
interruption
Prlever la valeur
capture
etc

Fonctionnement dun Timer/Counter


Temporisation
Actions
INC
Horloge interne

Compteur
Base de
temps

Mettre une sortie 0 ou


1
Gnrer une
interruption
Excuter un
programme
etc

Timers/Counters de la LPC
3250
La 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 diffrents
Chaque Timer dispose de 4 registres de correspondance de 32 bits
chacun permettant de:
Gnrer une interruption en cas dgalit
Arrter le timer en cas dgalit
Redmarrer le timer en cas dgalit
Les 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 dgalit
tres mises 1 en cas dgalit
Sinverser en cas dgalit

Interface externe des


Timers
Bien que le fonctionnement des 6 timers soit identique, ils ne sont
pas tous dots de mmes signaux dinterface externe
Le 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 correspondance
Le timer 5 ne possde pas dentres/sorties

Description fonctionnelle

Les Timers sont conus pour compter :


Soit le nombre dimpulsions de lhorloge PERIPH_CLK
Soit le nombre dimpulsions dune ligne externe
Chaque Timer dispose:
dun registre compteur TC (Timer counter)
dun registre compteur diviseur PC (Prescal counter)
dun registre diviseur PR (Prescal Register)

Le registre Prescal Counter est incrment chaque top dhorloge


Quand la valeur du registre PC arrive la valeur contenu dans le
registre PR, PC est mis 0 et le registre TC est incrment
Le comportement du timer dpend ensuite des paramtres de
configuration
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 peut
capture
Le Timer
commander une ou plusieurs sorties si la valeur du
TC arrive la valeur contenue dans lun des registres de
correspondance
Le Timer peut dclencher une interruption quand la valeur actuelle
arrive la valeur contenue dans lun des registres de
correspondance

Description des registres


Adresses de base des Timers
Timer

Adresse de base

0x4004 4000

0x4004 C000

0x4005 8000

0x4006 0000

0x4002 C000

0x4003 0000

NB: Tous les Timers sont par dfaut dsactivs. Avant de les utiliser, il
faut les activer dans le registre TIMCLK_CTRL1 dadresse 0x4000
40C0

Description des registres


Nom

Description

Ofset

IR

Interrupt Register. Indique ltat des interruptions

0x00

TCR

Timer Control Register. Active, dsactive ou remet 0 le compteur

0x04

TC

Timer counter. Le compteur proprement dit qui sincrmente chaque fois que PC=PR

0x08

PR

Prescale Register. Contient une valeur dfinie par lutilisateur. Quand PC=PR, TC est
incrmente et PC est remis 0

0x0C

PC

Prescale Couner. Incrment chaque top dhorloge et remis 0 quand il atteint PR

0x10

MCR

Match 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)

0x14

MR0

Match 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,)

0x18

MR1

Match Register 1. identique MR0

0x1C

MR2

Match Register 2. identique MR0

0x20

MR3

Match Register 3. identique MR0

0x24

CCR

Capture 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 interruption

0x28

CR0

Capture Register 0. Ce registre est charg de la valeur de TC si un vnement arrive sur une
ligne de capture

0x2C

CR1

Capture Register 1. identique CR0

0x30

CR2

Capture Register 2. identique CR0

0x34

CR3

Capture Register 3. identique CR0

0x38

EMR

External Match Register. Contrle les sorties externes du Timer

0x3C

CTCR

Count Control Register. Dfinie la fonction du Timer (Temporisateur ou compteur) dans le cas
du compteur, il dfinie le signal dentre et le front actif.

0x70

Description des registres


Le 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 capture
Si une interruption est gnre, le bit correspondant est 1
Lcriture dans ce registre permet deffacer les indicateurs
dinterruption
Bit
Symbole
Description
0

MR0
Interrupt

Interruption sur correspondance avec le registre


MR0

MR1
Interrupt

Interruption sur correspondance avec le registre


MR1

MR2
Interrupt

Interruption sur correspondance avec le registre


MR2

MR3
Interrupt

Interruption sur correspondance avec le registre


MR3

CR0 Interrupt Interruption sur capture dans le registre CR0

CR1 Interrupt Interruption sur capture dans le registre CR1

Description des registres

Le registre TCR (Timer Control Register)


Contrle les oprations du Timer travers deux bits
Bit 0 : Counter Enable
0 : Arrter le compteur
1 : Dmarrer le compteur
Bit 1 : Counter Reset
0 : Comptage
1 : Remise zro du compteur
Le registre TC(Timer Counter)
Sincrmente de 1 chaque fois que le registre PC arrive sa valeur limite
Le registre PR(Prescale Register)
Valeur limite du registre PC.
Si PC arrive cette valeur, TC est incrment et PC est rinitialis
Le registre PC(Prescale Counter)
Sincrmente chaque top dhorloge
Arriv la valeur de PR, il repasse 0 et TC est incrment de 1

Description des registres

Les registres MR0, MR1, MR2 et MR3 (Match Registers)


Les valeurs contenues dans ces registres sont continuellement
compares la valeur courante du TC
Quand la valeur du TC est gale lune de ces valeurs, des actions
sont effectues automatiquement par le Timer
Ces actions peuvent tres la gnration dinterruption, larrt du
Timer ou la rinitialisation du Timer.
Ces actions sont contrles par le registre MCR.

es 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
CCR

Description des registres

Le registre MCR (Match Control Register)


Contrle les oprations effectuer quand la valeur actuelle de TC
est gale lun des registres MR0, MR1, MR2 et MR3
Bit

Symbo
le

Description

MR0I

Interrupt on MR0. Sil est 1, une interruption est gnre si TC=MR0

MR0R

Reset on MR0. Sil est 1, le timer est rinitialis si TC = MR0

MR0S

Stop on MR0. Sil est 1, le Timer est arrt si TC = MR0

MR1I

Interrupt on MR1. Sil est 1, une interruption est gnre si TC=MR1

MR1R

Reset on MR1. Sil est 1, le Timer est rinitialis si TC = MR1

MR1S

Stop on MR1. Sil est 1, le Timer est arrt si TC = MR1

MR2I

Interrupt on MR2. Sil est 1, une interruption est gnre si TC=MR2

MR2R

Reset on MR2. Sil est 1, le Tmer est rinitialis si TC = MR2

MR2S

Stop on MR2. Sil est 1, le Timer est arrt si TC = MR2

MR3I

Interrupt on MR3. Sil est 1, une interruption est gnre si TC=MR3

10

MR3R

Reset on MR3. Sil est 1, le Timer est rinitialis si TC = MR3

11

MR3S

Stop on MR3. Sil est 1, le Timer est arrt si TC = MR3

Description des registres

Le 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 capture
Il permet galement de slectionner le type dvnement attendre (front
montant ou descendant)
Bit Symbo Description
le
0

CAP0RE Capture on Cap0 Rising Edge. Sil est 1, Un front montant sur Cap0
charge CR0

CAP0FE

Capture on Cap0 Falling Edge. Sil est 1, Un front descendant sur


Cap0 charge CR0

CAP0I

Interrupt on Cap0 event. Le chargement de CAP0 permet de gnrer


une interruption

CAP1RE Capture on Cap1 Rising Edge. Sil est 1, Un front montant sur Cap1
charge CR1

CAP1FE

Capture on Cap1 Falling Edge. Sil est 1, Un front descendant sur


Cap1 charge CR1

CAP1I

Interrupt on Cap1 event. Le chargement de CAP1 permet de gnrer


une interruption

CAP2RE Capture on Cap2 Rising Edge. Sil est 1, Un front montant sur Cap2
charge CR2

CAP2FE

Capture on Cap2 Falling Edge. Sil est 1, Un front descendant sur


Cap2 charge CR2

CAP2I

Interrupt on Cap2 event. Le chargement de CAP2 permet de gnrer

Description des registres

Le registre EMR (External Match Register)


Ce registre contrle et indique ltat des sorties des Timers
Bit

Symb
ole

Description

EM0

Etat de la ligne EM0

EM1

Etat de la ligne EM1

EM2

Etat de la ligne EM2

EM3

Etat de la ligne EM3

5:4

EMC0

Contrle de la ligne EM0


00 ne pas utiliser
01 Mettre 0 si TC = MR0
10 Mettre 1 si TC = MR0
11 Inverser si TC = MR0

7:6

EMC1

Contrle de la ligne EM1 (mme configuration que EM0)

9:8

EMC2

Contrle de la ligne EM2 (mme configuration que EM0)

11:1
0

EMC3

Contrle de la ligne EM3 (mme configuration que EM0)

Description des registres

Le registre CTCR (CounT Control Register)


Utilis pour slectionner entre la fonction Timer ou compteur dvnement ext
Dans le cas de la fonction compteur, ce registre permet de
slectionner la ligne et lvnement de dclenchement
Bit

Symb
ole

Description

1:0

Counte Choisit la fonction du compteur/Timer


r/Time 00 Timer
r mode 01 Compteur dvnements sur front montant de lentre externe
10 Compteur dvnement sur front descendant de lentre externe
11 Compteur sur prsence dun front quelconque

3:2

Count
Input
select

Slection de lentre externe de comptage


00 Cap0
01 Cap1
10 Cap2
11 Cap3

Description des registres

Le registre TIMCLK_CTRL1 (Timer Clock Control1 and MCPWM


register) 0x4000 40C0
Ce registre permet dactiver les horloges des Timers standards
Bit

Fonction

Activation de lhorloge du Timer 4


0 Horloge dsactive
1 Horloge active

Activation de lhorloge du Timer 5

Activation de lhorloge du Timer 0

Activation de lhorloge du Timer 1

Activation de lhorloge du Timer 2

Activation de lhorloge du Timer 3

Exemples dutilisation des


Timers

Exemple 1 : gnration dune squence en sortie

Un dispositif est commandable par 3 signaux (Q0, Q1, Q2)


dfinissant une squence comme indiqu dans le chronogramme
suivant
Q0
Q1
Q2

10 ms
Ecrire un programme assembleur permettant de gnrer de
faon cyclique cette squence.

Exemples dutilisation des


Timers
Exemple 1 : gnration dune squence
en sortie
On utilisera le Timer 0 qui dispose de 4 sorties, MAT0, MAT1,
MAT2 et MAT3. donc :
Q0 MAT0
Q1 MAT1
Q2 MAT2
On programme le Compteur /Timer comme Timer qui sincrmente
chaque Top dhorloge PERIPH_CLK (13 MHZ).

1
sec
Le Timer sincrmentera donc chaque:
6
13 10

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

X 13 10 2 10 6 130000

On initialisera les registres MR comme suit


MR0 130000
MR1 2x130000 =260000
MR2 3x 130000 = 390000
Enfin, 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


Timers
Exemple 1 : gnration dune squence
en sortie
TIMCLK_CTRL1
equ 0x400040C0
T0IR equ 0x40044000
T0TCRequ 0x40044004
.
;Activation de lhorloge du Timer
Ldr R0, =TIMCLK_CTRL1
Mov R1, #4
Str R1, [R0]

; Configuration du registre EMR


ldr R0, =T0EMR
ldr R1, =0x2A0 ; mettre les lignes 1 ds le Match
str R1, [R0]
; Configuration du registre MCR
; Quand TC arrive la valeur de MR3, on rinitialise le timer
ldr R0, =T0MCR
ldr R1, =0x400 ;
str R1, [R0]

;Chargement des registres Match


ldr R0, =T0MR0
; registre Match 0
ldr R1, =0x1FBD0 ; 130000
str R1, [R0]
ldr R0, =T0MR1
ldr R1, =0x3F7A0
str R1, [R0]
ldr R0, =T0MR2
ldr R1, =0x5F370
str R1, [R0]

; Registre Match 1
; 2x130000
; Registre Match 2
; 3x130000

ldr R0, =T0MR3


; Registre Match 3
ldr R1, =0x 7EF40
; 4x130000
str R1, [R0]

; Dmarrer le Timer
ldr R0, =T0TCR
mov R1, #1;
str R1, [R0]
; ne rien faire dautres
; le timer gnre automatiquement la squence
Stop

b stop

Exemples dutilisation des


Timers
Exemple 2 : Mesure de la priode (ou frquence) dun signal
Soit un signal priodique de priode T inconnue suivant

T
Nous 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


Exemple 2 : Mesure de la priode
(ou frquence) dun signal
Timers
On 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_CLK
Le Timer est configur en mode capture sur la lentre CAP0
Ds 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 rfrence
R10 CAP0_t1
A linstant t1
CAP0 TC

Au 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 t1
CAP0 TC

A linstant t2
CAP0 TC

R11 R10 CAP0_t2


Periode R11*1/13*10-6

Exemples dutilisation des


Timers
Exemple 2 : Mesure de la priode (ou frquence) dun signal
TIMCLK_CTRL1
equ 0x400040C0
T0IR equ 0x40044000
T0TCRequ 0x40044004
.
;Activation de lhorloge du Timer
Ldr R0, =TIMCLK_CTRL1
Mov R1, #4
Str R1, [R0]

Configuration du registre T0CCR


capturer TC dans CR0 chaque front montant, descendant
et gnrer une interruption chaque capture
ldr R0, =T0CCR
mov R1, #1
str R1, [R0]
; Dmarrer le Timer
ldr R0, =T0TCR
mov R1, #1;
str R1, [R0]
; Boucler en attente du front montant
ldr R0, =T0I
boucle1
ldr R1[R0]; Etat des interruptions
ands R1, R1, #0x10
beq boucle1
; une interruption sur capture est arrive

; effacer ltat des interruptions


mov R1, #0
str R1, [R0]
; charger dans R10 la valeur de CR0
ldr R0, =T0CR0
ldr R10, [R0]
; attendre le prochain front montant
Boucle2
ldr R0, =T0TI
ldr R1, [R0]
ands R1, R1, 0x10
beq boucle2
; une interruption sur capture est arrive
rcuprer la valeur de CR0
ldr R0, = T0CR0
ldr R1, [R0]
; dterminer la priode
sub R11, R1, R10
; la valeur de R11 doit tre multiplie par 1/13*10 -6

Exercice
Nous 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