Professional Documents
Culture Documents
Les Timers
diapo 1
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.
Microcontrleurs et Langage C
Les Timers
diapo 2
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
Lecture/criture, Horloge interne ou externe (oscillateur possible pour cette dernire) Interruption possible sur dbordement $FFFF $0000
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
Inversion de ltat de la LED tous les x appuis du bouton poussoir, indpendamment du droulement du programme.
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
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).