Vous êtes sur la page 1sur 23

Cours: Microcontrôleur

Chargé de cours : Dr. Noureddine MAAMAR

Département d’informatique / FMI


1 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
Contenu du chapitre :

A. Introduction ;

B. Principe de fonctionnement d’un Timer ;

C. Le Timer du microcontrôleur PIC 16F84A;

D. Configuration du Timer du PIC 16F84A ;

Département d’informatique / FMI


2 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Introduction
▪ Qu'est-ce qu’un Timer ?
Le Timer /compteur est un périphérique de gestion de temps. Il permet de
réaliser les fonctions suivantes :
- Comptage des évènements
- Synchronisation des signaux
- Génération des événements périodiques (échantillonnage des signaux
analogiques, …)
- Génération des signaux périodiques (carré, …)
- Mesure de temps…
- …

Département d’informatique / FMI


3 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Principe de fonctionnement d’un Timer
➢ Réaliser une temporisation :
- Un compteur qui s'incrémente à chaque front montant du signal qui lui est
appliqué :

Signal appliqué temps


à l'entrée du compteur

Compteur … 41 42 43 44 …

Département d’informatique / FMI


4 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Principe de fonctionnement d’un Timer
➢ Réaliser une temporisation :
- Lorsque le compteur dépasse la valeur maximale qu'il peut contenir (exp :
256 pour un compteur sur 8 bits), un drapeau est levé ;
… 253 254 255 0 1 …

- Ce drapeau a pour but d'indiquer au programme que le compteur a


débordé (c'est à dire qu'il a fini de compter) ;
- NB : Le drapeau doit être abaissé pour commencer un nouveau cycle de
comptage (le bit du drapeau doit être réinitialiser)

Département d’informatique / FMI


5 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Principe de fonctionnement d’un Timer
➢ Configuration du Timer :
Un Timer doit être capable de compter un temps défini par le programme
(exp: 1ms, 5 ms, 50 ms, etc.). Pour cela, deux paramètres peuvent être
modifiés :
1. La fréquence du signal applique au compteur : Le compteur
s'incrémentera ainsi plus ou moins vite ;
NB : afin de modifier la fréquence du signal appliqué au compteur, un pré-
diviseur (Prescaler) est utilisé.
2. Le nombre d'impulsions à compter : Le drapeau monte toujours
lorsqu'il y a un débordement, nous pouvons donc faire en sorte que le
compteur démarre à partir d'une valeur non nulle pour réduire le temps
de comptage.

Département d’informatique / FMI


6 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Principe de fonctionnement d’un Timer
➢ Configuration du Timer :
a. Pré-diviseur (Prescaler) :
- Un Pré-diviseur est un outil qui vous permet de prolonger le temps avant
que le Timer ne déborde.
- Un exemple pour compter 2 fois moins vite en utilisant un pré-diviseur :
1 2 3 4 5
En entrée … temps
du pré-diviseur

1 2 3
En sortie … temps
du pré-diviseur

Département d’informatique / FMI


7 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Principe de fonctionnement d’un Timer
➢ Configuration du Timer :
b. Modification du nombre d'impulsions à compter :
- Si le compteur commence à 0, il lui faudra beaucoup de temps pour
atteindre sa valeur maximale ;
- Afin de réduire le temps de comptage, nous pouvons charger une valeur
initiale non nulle dans le compteur ;
- Exemple : Une valeur initiale égale à 253

253 254 255 0 1 …

Département d’informatique / FMI


8 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Le Timer du microcontrôleur PIC 16F84A
- Le PIC16F84A possède un timer 8 bits appelé « TMR0 » ;
- TMR0 est un registre spécial situé à l'adresse 0x01 (banque 0) de la
mémoire de données (Data RAM) ;
- Vous pouvez lire ou écrire des valeurs depuis/vers ce Timer ;
- Comme il s'agit d’un Timer 8 bits, le TMR0 peut compter de 0 à 255 (28 =
256).
- Remarque : d'autres microcontrôleurs ont plusieurs Timers avec des
nombres de bits plus élevés (exp: Le PIC16F877A possède deux Timers
de 8 bits et un de 16 bits.).

Département d’informatique / FMI


9 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A
- Tous les paramètres du registre TMR0 sont configurés à l'aide du registre
OPTION.
- Le registre OPTION est un registre lisible et inscriptible qui contient divers
bits de contrôle pour configurer:
✓ Le pré-diviseur TMR0/Watchdog,
✓ L'interruption externe INT,
✓ TMR0
✓ Les Pull-ups faibles sur PORTB.

Département d’informatique / FMI


10 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A (registre OPTION)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

• Bit 7 : RBPU = Port B Pull-up Enable.


- 1 = Ce bit doit être mis à 1 pour désactiver les résistances de Pull-up
du port B ;
- 0 = pour activer les résistances de Pull-up ;

Département d’informatique / FMI


11 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A (registre OPTION)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

• Bit 6 : INTEDG = Interrupt edge select.


- 1 = Ce bit doit être mis à 1 pour que l'interruption de la broche
RB0/INT soit active sur un front montant ;
- 0 = Ce bit doit être mis à 0 pour que
l'interruption de la broche RB0/INT
soit active sur un front descendant ;

Département d’informatique / FMI


12 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A (registre OPTION)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

• Bit 5 : T0CS = TMR0 Clock Source Select.


- 1 = Ce bit doit être mis à 0 pour que l'horloge du module TMR0 soit
l'horloge interne;
- 0 = Ce bit doit être mis à 1 pour que
l'horloge du module TMR0 soit le signal
de la broche RA4/T0CKI ;

Département d’informatique / FMI


13 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A (registre OPTION)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

• Bit 4 : T0SE = TMR0 Source edge select.


Dans le cas où T0CS = 1, le signal d'horloge de la broche RA4/T0CKI est
actif :
- 1 = Front descendant;
- 0 = Front montant;

Département d’informatique / FMI


14 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A (registre OPTION)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

• Bit 3 : PSA = Prescaler assignment.


Le prédiviseur est attribué :
- Au Watchdog quand PSA = 1 ;
- Au Module TMR0 quand PSA = 0 ;

Département d’informatique / FMI


15 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A (registre OPTION)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
• Bit 2, 1, 0 : PS2, PS1, PS0 = Prescaler rate select (voir les 2 tableaux).
• Si : PSA = 0 PSA PS2 PS1 PS0 Taux de pré-division
du module TMR0
Taux de pré-division
du module Watchdog

Le pré-diviseur 0 0 0 0 2 1
0 0 0 1 4 1
est attribué 0 0 1 0 8 1

au Module TMR0 0 0 1 1 16 1
0 1 0 0 32 1
0 1 0 1 64 1
0 1 1 0 128 1
0 1 1 1 256 1

Département d’informatique / FMI


16 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A (registre OPTION)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
• Bit 2, 1, 0 : PS2, PS1, PS0 = Prescaler rate select (voir les 2 tableaux).
• Si : PSA = 1 PSA PS2 PS1 PS0 Taux de pré-division
du module TMR0
Taux de pré-division
du module Watchdog

Le pré-diviseur 1 0 0 0 1 1
1 0 0 1 1 2
est attribué 1 0 1 0 1 4

au Module Watchdog 1 0 1 1 1 8
1 1 0 0 1 16
1 1 0 1 1 32
1 1 1 0 1 64
1 1 1 1 1 128

Département d’informatique / FMI


17 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A
• Le module TMR0 (Timer 0) possède deux modes de fonctionnement :
- Le TMR0 est incrémenté en permanence soit par l’horloge interne (mode
Timer) ;
- Soit par une horloge externe appliquée à la broche RA4 du port PORTA
(mode compteur).
- Le choix de l'horloge se fait à l'aide du bit
T0CS du registre OPTION et
- La sélection du front actif de l’horloge
externe s’effectue par le bit T0SE du même
registre

Département d’informatique / FMI


18 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A
➢ Le mode Timer :
Pour configurer le module TMR0 en mode Timer, il faut au préalable que :
✓ T0CS = 0

✓ Le contenu du registre TMR0 est alors incrémenté à chaque cycle de


l'horloge interne
✓ 1 cycle correspond à une durée de 1 µs pour un oscillateur à quartz de 4
MHz (1 cycle = 4 / Fosc).
✓ En toute rigueur, cela est vrai si le taux de pré-division est réglé à 1 (PSA
= 1)

Département d’informatique / FMI


19 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A
➢ Le mode Timer (suite) :
Pour configurer le module TMR0 en mode Timer, il faut au préalable que :
✓ T0CS = 0

✓ Avec un taux de prédivision de 64 (PSA = 0, PS2 = 1, PS1 = 0, PS0 = 1),


le contenu du registre TMR0 est incrémenté tous les 64 cycles (ou 64 µs) ;
✓ En conclusion, le mode Timer est utilisé pour mesurer des durées ;

Département d’informatique / FMI


20 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A
➢ Le mode Compteur :
Pour configurer le module TMR0 en mode Compteur, il faut au préalable que :
✓ T0CS = 1

✓ Le contenu du registre TMR0 est alors incrémenté à chaque front du signal


présent sur la broche RA4/T0CKI ;
o Front montant si T0SE = 0 (bit 4)
o Front descendant si T0SE = 1
✓ En conclusion, le mode Compteur est utilisé
pour faire du comptage;

Département d’informatique / FMI


21 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Configuration du Timer du PIC 16F84A
➢ Remarques :
- Pour ne pas avoir une pré-division de l’horloge du TMR0 il suffit d’affecter
le pré-diviseur au Timer du chien de garde WDT (PSA = 1) ;
- Au débordement de TMR0 (FF → 00), le drapeau T0IF du registre
INTCON est placé à 1. Ceci peut déclencher l'interruption T0IE si celle-ci
est validée ;

- Le contenu du Timer TMR0 est accessible dans le fichier de registres aussi


bien en lecture qu’en écriture

Département d’informatique / FMI


22 Niveau : 1ère Année Master GI
Module : Microcontrôleur
Chapitre V
Les Timers
❑ Résumé

- Les Timers sont des compteurs formés généralement d’un pré-diviseur


suivi d’un registre compteur de 8 ou 16 bits ;
- L’entrée d’horloge peut être interne (mode timer) ou externe (mode
compteur d’événements) ;
- Lorsque le registre compteur atteint sa valeur maximale et repasse à 0,
un bit indicateur (flag) sera positionné et une interruption pourra être
générée, informant ainsi la CPU du débordement du timer ;
- Il est nécessaire de noter que le programmeur doit réinitialiser cet
indicateur après chaque débordement.

Département d’informatique / FMI


23 Niveau : 1ère Année Master GI
Module : Microcontrôleur

Vous aimerez peut-être aussi