LES TIMERS
 

Hugues ANGELIS

page  02

            

Les différents types de timers

Les modes Input Capture (IC) et Output Compare (OC) sont les deux modes de fonctionnement standard d'un timer. Il existe à partir de ces deux modes de fonctionnement, ou en plus de ces deux modes de fonctionnement, d'autres fonctions qui sont peu ou prou des fonctions associées au timer.

La PWM ou MLI

Certains timers ont des rôles assez particuliers, ils servent par exemple à générer des signaux pseudo analogiques, c'est-à-dire des signaux logiques dont la période est fixe mais dont le rapport cyclique évolue.

Comme la valeur moyenne de la tension sur cette sortie est obtenue par la formule suivante :

On se rend donc compte que la tension moyenne produite est :

    où α est le rapport cyclique   
Autrement dit, comme un timer en mode OC est capable de modifier l'état d'une sortie en fonction du temps qui s'est écoulé, et que ce temps est lui-même programmable, on peut jouer soit sur TON, soit sur T et sur TON pour créer le rapport cyclique qui permet de générer ce signal pseudo analogique.

Le Watchdog

Un autre exemple de timer spécial, le Watchdog.

Un Watchdog est une fonction qui permet de surveiller l'exécution d'un programme. C'est ce qu'on appelle un "chien de garde", il va être charger de surveiller l'apparition d'un évènement en un temps donné.
- la réponse à une question
- l'arrivée d'un signal, par exemple la fonction "homme mort" pour la conduite d'un train etc
Dans ces différentes situations on pourra fixer dans le programme un temps de comptage en chargeant le registre du mode "compare" ce qui permettra au programme de sortir de sa boucle d'attente de l'évènement et évite le "plantage "du programme

 Ce peut être aussi un timer qui ne possède en fait qu'un très gros Free Running Counter, qui s'incrémente à chaque front de son horloge.

Si le compteur dépasse sa limite de comptage (en gros, pour un compteur sur n bits, si il passe de 2n-1 à 0), on parle en anglais d'Overflow, le Watchdog modifie l'état de la broche RAZ du microcontrôleur et ce faisant redémarre ce dernier.

Pour éviter que le Watchdog ne redémarre l'application, le microcontrôleur doit donc périodiquement venir remettre à zéro le compteur du Watchdog.

En résumé, si une application fonctionne bien, le Watchdog est régulièrement remis à zéro donc ne redémarre pas le microcontrôleur. Mais si ce dernier, pour une raison ou pour une autre, perdait le fil de son programme, l'application ne pouvant plus remettre à zéro le Watchdog, celui-ci imposerait alors un redémarrage au microcontrôleur.

Le Watchdog ne corrige pas le problème, il le révèle…

Pour un timer, réaliser un Watchdog, c'est, par exemple, attendre que le Free Running Counter fasse une Overflow. Selon la valeur du prescaler, ce phénomène arrivera plus ou moins rapidement. Reste enfin à déclencher le RAZ du microcontrôleur. Ce qui sera trivial en utilisant les interruptions, et quasiment aussi simple en utilisant une sortie en mode OC reliée à la patte RAZ du microcontrôleur (voir TD)

Le Pulse Accumulator

Il s'agit là du dernier exemple des timers spéciaux. On a vu que le timer disposait du mode Input Capture où il effectue la datation des événements présent sur son entrée, il existe un autre mode d'entrée, le mode Pulse Accumulator. Dans ce mode de fonctionnement, le timer ne date plus les changements d'état, il se contente de les comptabiliser.

Ainsi on peut par exemple compter le nombre d'impulsions vues pendant un temps donné. On appelle aussi ce mode, le mode fréquencemètre : on compte pendant un temps connu et fixe (par exemple 1 seconde) le nombre de front montant d'un signal d'entrée (par exemple 1000), la fréquence du signal en entrée est donc (en moyenne sur une seconde) le nombre de front divisé par la base de temps (dans notre exemple 1 KHz). Ce mode est utilisé pour la mesure de la fréquence de signaux "rapides".

Inversement, on peut aussi par exemple compter les périodes de l'horloge interne du timer pendant que le port d'entrée est actif. On appelle ce mode le mode périodemètre. Il permet de mesurer la période de signaux "lents".

Pour un timer, le mode Pulse Accumulator (PA) n'est pas toujours implémenté (disponible), même si la très grande majorité des timers modernes en dispose.