Vous êtes sur la page 1sur 6

Microcontrleurs et Langage C

Les Timers

diapo 1

Quest-ce quun timer?


Un timer est un compteur interne au C qui peut tre incrment par un signal dhorloge externe ou interne. Il peut y avoir un prdiviseur avant le timer:
choix int/ext timer on/off Bus de donnes

Horloge interne Horloge externe

M u x

pr-diviseur

Timer

Un timer gnre un drapeau de dbordement chaque passage de sa valeur max zro. Certains timers peuvent tre en criture, ce qui permet de compter depuis une valeur particulire. On peut lire tout moment la valeur du timer.

dbordement passage de max 0

Microcontrleurs et Langage C

Les Timers

diapo 2

Quel est lintrt des timers?


La gestion, la mesure et la matrise du temps!
En effet, dans beaucoup dapplications, on a besoin de mesurer des dures, de gnrer des signaux bien dfinis temporellement etc Sans timer, cela serait bien difficile, car dpendant du temps dexcution des instructions. Cela ncessiterait un contrle dlicat des boucles. Leur usage nest pas trs compliqu, mais demande une bonne comprhension de la structure des diffrents timers dun C. Il peut tre parfois judicieux de faire un schma fonctionnel de la configuration dsire.

Microcontrleurs et Langage C

Les Timers

diapo 3

Quels timers dans les PIC16F87xA? On dispose de 3 timers: Timer0 sur 8 bits:
pr-diviseur programmable de 1:2 1:256, lecture/criture, Horloge interne ou externe (choix du front pour cette dernire) Interruption possible sur dbordement $FF $00

Timer1 sur 16 bits: pr-diviseur programmable de 1:1 1:8,

Lecture/criture, Horloge interne ou externe (oscillateur possible pour cette dernire) Interruption possible sur dbordement $FFFF $0000

Timer2 sur 8 bits :

pr-diviseur programmable 1:1, 1:4 ou 1:16, post-diviseur programmable 1:1 1:16, Lecture/criture, Horloge interne uniquement comparateur entre TMR2 et PR2 qui gnre un drapeau Interruption possible sur sortie post-diviseur

Microcontrleurs et Langage C

Les Timers

diapo 4

Quel timer choisir, pour quelle application? L les choses se compliquent car les possibilits sont tendues. Comptage dvnements externes:

Timer2 exclus doffice. On ne doit pas utiliser de pr-diviseur, sauf cas particulier. Timer0 comptage jusqu 255 Timer1 comptage jusqu 65535

Mesure de temps:

Tous les timers sont utilisables. La prcision ou la capacit dterminera le Timer utiliser

Il existe des dispositifs spcifiques internes utilisant les timers (Capture/Compare/PWM) que nous verrons plus loin pour la gnration de signaux ou la mesure de priode.

Microcontrleurs et Langage C

Les Timers

diapo 5

Exercice simple dutilisation du timer1:

Clignotement de la LED rouge indpendamment du droulement du programme.

Exercice dutilisation du timer0 en comptage dvnements:

Inversion de ltat de la LED tous les x appuis du bouton poussoir, indpendamment du droulement du programme.

Exercice dutilisation conjointe Timer0 et Timer1:

Activation de la LED pendant 0,3s tous les x appuis du bouton poussoir, indpendamment du droulement du programme.

Microcontrleurs et Langage C

Les Timers

diapo 6

Mesure de dure avec le module Capture

Ce module utilise le timer1. Lentre de dtection se fait sur lentre RC2/CCP1. (dtection tous les 1, 4 ou 16 fronts). A dtection, le contenu du registre TMR1 est recopi dans le registre CCPR1.

Technique pour mesurer une dure: Dans la routine dinterruption de CCP1, on mmorise linstant du premier front (T1=CCPR1) puis au deuxime front, on mmorise cet instant (T2=CCPR1) puis on fait la diffrence. Le problme, cest que le timer1 peut tre amen dborder plusieurs fois avant que le 2me front arrive. Il faut donc dans la routine dinterruption de Timer1 compter les dbordements et en tenir compte dans le calcul de dure. (Voir explications orales).