L2 Informatique
TP/TD N°2_Part2
Arduino UNO
Programmation en C
pour l'embarqué
Interruptions Internes
RESSOURCES
Interruptions Timers
Les timers intégrés peuvent déclencher des interruptions. Nous
allons voir ici une section complète sur la configuration des timers intégrés et
l'exploitation des interruptions associées.
Timers/Counters de ATMega328
Le microcontrôleur ATMega328 dispose de plusieurs modules de
temporisation/comptage internes (Timers), fonctionnant pour certains avec des
registres de comptage sur 8 bits, et pour d'autres sur 16 bits.
Dans tous les cas, chaque événement de comptage conduit à une modification du
registre de comptage (+1). L'événement de comptage sera ici un "tick" de l'horloge du
microcontrôleur, ce qui revient à mesurer l'écoulement du temps.
Fonction Temporisateur.
Lorsque l'on compte des "ticks" de l'horloge qui cadence le microcontrôleur, on
mesure du temps. Les modules Timers/Counters permettent de compter les
ticks du signal d'horloge, ou d'un signal de fréquence plus faible obtenu par un
diviseur appelé prescaler.
C'est la "fonction temporisateur" que l'on va détailler ici et plus
particulièrement celle attachée au Timer2 (8 bits)
Note : sur la carte Arduino UNO, l'horloge est à 16MHz, soit 16 000 000 de cycles
horloge par seconde, ou 16 cycles horloge par micro seconde. Ce sont ces cycles-là qui
sont comptés en "mode ou fonction temporisateur".
Il faut compter 16000000 cycles pour faire une seconde.
Timer/Counter 2 (comptage 8 bits)
C'est un module Timer/Counter avec registre de comptage 8 bits.
Le registre de comptage est appelé TCNT2
Notre utilisation :
– Détection et IT sur débordement (TIMER2_OVF_vect)
UE Programmation Pour l'Embarqué :S-E06-0207 1/2
L2 Informatique
Registres du module Timer/Counter 2
Mode normal de fonctionnement en "temporisateur".
- Le registre TCNT2 est incrémenté de 1 à chaque événement de
comptage. Le registre ne revient à 0 qu'après un débordement (passage
de 0xFF à 0x00).
Prescaler
En fonction temporisateur, le registre de comptage TCNT2 est incrémenté en
fonction des cycles horloge. L'incrément peut être à chaque cycle horloge (pas
de prescaler) ou bien à une fréquence moindre. Rappelons que le cycle horloge
est de 1/16 µseconde. On peut aussi mettre un diviseur de fréquence entre
l'horloge (16Mhz) et l'incrément du registre de comptage.
Les prescalers possibles pour le Timer2 sont définis ci-dessous :
UE Programmation Pour l'Embarqué :S-E06-0207 2/2