Vous êtes sur la page 1sur 4

Cours 4ème année S.

Techniques Génie électrique Mehdi Bouchami

Chapitre A3 : Logique Programmée


Leçon A3-2 : Les microcontrôleurs
Partie 3 : Le Timer 0

1- Définition
Le Timer 0 est un module intégré dans les microcontrôleurs de type PIC. Il assure la fonction comptage ou bien la
fonction temporisation. Le choix du mode de fonctionnement se fait par configuration du registre OPTION_REG.

Le Timer 0 possède un registre à 8 bits nommé TMR0. Ce registre peut être chargé avec une valeur initiale
quelconque.

Le Timer 0 s’incrémente à chaque front d’horloge du PIC ou à chaque changement de niveau logique de la broche
RA4/TOCKI, jusqu’à ce que le débordement ait lieu (Passage de FF à 00).

2- Structure interne du Timer 0

3- Registre de contrôle du Timer 0


Le Timer 0 est contrôlé par le registre OPTION_REG qui contient 8 bits.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0
Chacun de ces bits à une signification et une fonction :
RBPU ( Pull Up enable bit on port B ) : bit de validation de résistance de tirage vers 5V (Pull-Up Resistor) sur le
port B
- 1 : Résistance de tirage vers 5V désactivée sur le port B.
- 0 : Résistance de tirage vers 5V activée sur le port B.
Cette fonction n’est valable que pour les broches du port B configurées en entrée.

Chapitre A3 : Logique programmé Page 1


Cours 4ème année S.Techniques Génie électrique Mehdi Bouchami

Si RBPU = 0 : On peut utiliser la résistance interne Ri connecté à VDD

Si RBPU = 1 : On doit utiliser une résistance externe Re connecté à VDD

INTEDG ( Interrupt Edge select bit ) : bit de sélection du front de déclenchement de l’interruption RB0/INT
- 1 : Interruption si l’entrée RB0/INT passe de 0 à 1 (Front montant).
- 0 : Interruption si l’entrée RB0/INT passe de 1 à 0 (Front descendant).

TOCS ( Timer TMR0 Clock Source bit ) : bit de sélection de l’horloge de Timer 0
- 1 : Le Timer 0 utilise l’entrée RA4/TOCKI comme source d’horloge (Fonctionnement en mode compteur).
- 0 : Le Timer 0 utilise l’horloge du PIC (Fonctionnement en mode temporisateur).

TOSE ( Timer TMR0 Source Edge select bit) : bit de sélection de front d’horloge de Timer 0
- 1 : Le Timer 0 s’incrémente à chaque front descendant sur RA4/ TOCKI.
- 0 : Le Timer 0 s’incrémente à chaque front montant sur RA4/ TOCKI.
Cette fonction n’est valable que lorsque le Timer 0 utilise l’entrée RA4/TOCKI comme source d’horloge.

PSA ( Prescaler Assignement bit ) : bit d’affectation de pré-diviseur


- 1 : Le pré-diviseur est affecte au watchdog.
- 0 : Le pré-diviseur est affecté au Timer 0.
-
PS2 PS1 PS0 ( Prescaler Rate Select bits ) : bits déterminant la valeur de pré-diviseur
PS2 PS1 PS0 Prédiv TIMER
0 0 0 2
0 0 1 4
0 1 0 8
0 1 1 16
1 0 0 32
1 0 1 64
1 1 0 128
1 1 1 256

Remarque : Quand le pré-diviseur est attribué au WatchDog, le registre TMR0 est prédivisé par 1.

Exemple :
OPTION_REG = $82 = % .......................... TOCS = … : Le Timer 0 utilise …………………………….. .

Chapitre A3 : Logique programmé Page 2


Cours 4ème année S.Techniques Génie électrique Mehdi Bouchami

PSA = … : Le pré-diviseur est affecté au ………….. .


PS2 PS1 PS0 = ……… : Pré-diviseur = … .

4- Timer 0 en mode compteur


Dans ce cas de fonctionnement, le Timer 0 s’incrémente soit au front montant soit au front descendant de
l’impulsion appliquée sur l’entrée ..................... .

Pour exploiter le Timer 0 en tant que compteur il faut attribuer la valeur …. au bit 5 (……..) du registre
OPTION_Reg.

Pour choisir le front de déclenchement de l’impulsion appliquée sur l’entrée RA4/TOCKI, il faut affecter la valeur
…. au bit 4 (……..) du registre OPTION_Reg pour sélectionner le front montant ou bien la valeur …. pour
sélectionner le front descendant.

Puisque le registre TMR0 est à 8 bits alors le nombre maximal que peut atteindre le compteur est 255. Donc pour
prendre en compte un nombre supérieur à 255 on doit faire intervenir le pré-diviseur.
Afin d’affecter le pré-diviseur au Timer 0 il faut mettre la valeur …. dans le bit 3 (……..) du registre
OPTION_Reg et choisir la combinaison PS2 PS1 PS0 adéquate selon le nombre maximal à atteindre.

Pour démarrer le compteur à partir d’une valeur autre que zéro, on doit précharger le registre TMR0 par la valeur
voulue.

Exemple :
Exploiter le Timer 0 en tant que compteur incrémentale à
chaque front descendant survenue sur la broche RA4/TOKI.
L'état du compteur est affiché sur le port B.

Configuration du registre OPTION_REG :


RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0 OPTION_REG
…… …… …… …… ….. ….. ..… ….. $ ……………

Programme MikroPascal :
Program Compteur ;
Begin
TRISA:=$............;
TRISB:=$............;
OPTION_REG:= $............;
TMR0:=$.......... ;
PORTB:=$......... ;
While true do
Begin
PORTB:=............. ;
End;
End.

Chapitre A3 : Logique programmé Page 3


Cours 4ème année S.Techniques Génie électrique Mehdi Bouchami

Modifier la configuration du registre OPTION_REG afin que le compteur s’incrémente après chaque 8 fronts
montants survenus sur la broche RA4/TOKI :
RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0 OPTION_REG
…… …… …… …… …… …… …… …… $ ………….…

Le compteur s’incrémente à chaque 8 impulsions, alors le nombre des impulsions à compter sera :
…………*………… =…………… impulsions

5- Exercices d’application
Exercice 1
Réaliser l'activité 6 pages 102 et 103 du manuel d'activités.

Exercice 2
Ecrire un programme MikroPascal permettant à l’aide du TMR0 de réaliser un compteur modulo 7 dont le cycle est
le suivant {2, 3, 4, 5, 6, 7, 8}.

Chapitre A3 : Logique programmé Page 4

Vous aimerez peut-être aussi