Les différents types de timersLes 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 MLICertains 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
Le WatchdogUn 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é. 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 AccumulatorIl 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.
|