LES TIMERS
Application au microcontrôleur MC9S12
 

Hugues ANGELIS

page  08

                

 

Utilisation des timers du 9S12.

Reprenons les exemples de la première partie et essayons de voir ce qu'il faut mettre dans les registres du bloc de timers pour obtenir le résultat souhaité (sans faire de programmation bien sûr).

Pour fabriquer un "la" à 440 Hz à partir d'un quartz à 16 MHz, on va dans un premier temps essayer d'analyser la situation :

Tout d'abord, on doit agir en sortant un signal du microcontrôleur. Celui-ci est donc en mode Output Compare.
--    
On défini le mode de fonctionnement de la sortie en jouant sur les registres TCTL1 et TCTL2.
    On choisit d'utiliser le mode : Complémentation.
--    
Reste à fixer la valeur du prédiviseur d'horloge en prenant un facteur de division de 1.
--     On peut donc maintenant démarrer le timer en activant le bit TEN.
-   
Le rapport de division entre 16 MHz et 440 Hz est de 36 363,63… On peut donc, sachant que le Free Running Counter fonctionne sur 16 bits (soit de 0 à 65 535), envisager de traiter ce problème "en direct", c'est-à-dire en plaçant dans le registre du timer 0, la valeur TCNT + 18 182 (18 182 représentant la demi période du signal à 440 Hz et on l'ajoute à TCNT car TCNT ne peut pas être remis à 0).
-    
On efface flag C0F.
-        
On scrute le changement d'état du bit C0F. Lorsqu'il passe à 1, on charge à nouveau TC0 avec la valeur TCNT + 18182, et on revient à l'étape précédente (on efface C0F).

On a donc réussi par cette méthode à réaliser un "la" à 440 Hz (pour être exact à 439,9956 Hz).

Pour le cas de l'homme mort, le rôle du timer consiste à capturer la présence d'un front (montant ou descendant, peu importe) et à transmettre une information d'Overflow au bout par exemple de 5 minutes, toujours à partir d'un quartz à 16 MHz.

Pour atteindre 5 minutes, il faut impérativement être capable de compter 4 800 000 000 d'impulsions (ce qui nécessite au moins un compteur sur 33 bits). Le timer, en utilisant l'ensemble de sa capacité de comptage directe (sans fabriquer de sorties qui doivent être connectées, à l'extérieur, à des entrées) est de 274 877 906 944, largement plus qu'il n'en faut (avec un quartz à 16 MHz, cela représente 4 heures 46 minutes et 20 secondes).