Académique Documents
Professionnel Documents
Culture Documents
✓ Des évènements externes qui peuvent être non périodiques (fonction compteur)
✓ Des évènements internes périodiques (impulsions d’horloge) (fonction temporisateur :
mesure de temps)
1. Des broches :
✓ D’entrée : pour compter les changements d’états d’un évènement externe
✓ De sortie pour signaler que le compteur a atteint une valeur particulière
2. Un sélecteur : sélectionne l'entrée dont les changements d'états (évènements) seront
comptés, en général :
✓ L’horloge interne
✓ Une broche externe
3. Un prédiviseur : dont le rôle est de diviser la fréquence d’horloge par une valeur (n) qui est
une puissance de 2(1 , 16 , 64 , 256). Le but est de ralentir l’horloge qui attaque l’entrée du
compteur.
4. Un registre de comptage : il contient simplement la valeur de comptage du compteur
5. Des unités de comparaison : chaque unité est munie d’un registre de comparaison qui
contient une valeur destinée à être comparée à celle du compteur, le but étant de changer l’état
d’un e broche de sortie de l’unité en question ou de déclencher une interruption.
6. Des registres de contrôle pour configurer le mode de fonctionnement du Timer.
Les Timers de l’Atmega328P :
L’Atmega328P dispose de trois Timers : Timer0, Timer1 et Timer2
31
Les Timers
Timer0 :
1. Mode normal :
• Le timer compte (s'incrémente) à chaque « évènement » détecté, qui peut être au choix :
✓ les tops d'horloge prédivisés, en mode temporisateur,
✓ les changements d'état de sa broche d'entrée, en mode compteur ;
• le Timer reprend à 0 en fin de comptage (overflow).
• Il peut déclencher une interruption de débordement :
• Lorsque le timer compte les tops d'horloge prédivisés (fonction temporisateur), la durée
(période) de ses cycles est définie par : T_cycle_normal = prédiviseur/fcpu * 256
32
Les Timers
2. Mode remise à zéro sur comparaison : (CTC : Clear Timer On compare Match)
• Le compteur compte à partir de 0, la valeur de comptage est comparée une valeur spécifique
(stockée dans le registre de comparaison A), lorsque cette valeur est atteinte le compteur
reprend à o.
• En plus de la réinitialisation à 0 du compteur, la comparaison précédente peut déclencher :
✓ Une interruption de comparaison A
✓ Un changement d’état sur la broche de sortie OC0A
33
Les Timers
Il est important d’initialiser ce registre à 0 pour que le premier cycle de comptage soit complet
( 0 à 255).
C’est un registre de 8 bits, la valeur stockée dans ce registre sera comparée à celle du registre
pécédent (TCNT0), lorsque les deux valeurs sont égales une interruption pourra ètre
demandée et la sortie de la broche OCR0A pourra ètre inversée.
TCCR0A :
TCCR0B :
34
Les Timers
A noter que parmi ces 6 modes, seuls les modes : normal et CTC ont été expliqués dans ce
cours. (mode 0 et mode 2 dans le tableau plus haut).
Les bits COM0A0 et COM0A1 (les 2 bits de poids fort du TCCR0A) sont utilisées pour
émettre un signal sur la broche de sortie OC0A (sortie de comparaison unité A). La forme e ce
signal évolue lorsque le compteur prend la valeur du registre de comparaison A.
Pour les deux modes expliqués dans ce cours (normal et CTC), ces deux bits permettent les
configurations suivantes :
Les 3 premiers bits du TCCR0B permettent de sélectionner les signaux d’horloge à prendre
en compte (signal d’entrée sur la broche T0, horloge interne avec ou sans prédiviseur).
35
Les Timers
Les trois bits de ce registre permettent d’activer ou de désactiver chacune des sources
d’interruption suivantes :
• Choisir le mode de fonctionnement du timer selon votre besoin (les modes expliqués
dans ce cours sont les modes normal et CTC) (registres : TCCRA et TCCR0B)
• Définir le mode temporisateur avec la période d’interruption souhaitée :
✓ Choix du prédiviseur (registre TCCR0B)
✓ Calcul de la valeur de comparaison si mode CTC (OCR0A)
• Autoriser l’interruption souhaitée (registre TIMSK0)
✓ Soit celle de débordement lorsqu’on est on mode normal
✓ Soit celle de comparaison lorsqu’on en mode CTC
• Réinitialiser le registre de comptage (registre TCNT0=0) : rappelez-vous, si le
compteur ne démarre pas de 0 le premier cycle de comptage sera incomplet.
36