TD 2 : Etude des timers du PIC18F4550

Sommaire[Masquer]

Cette étude porte sur les timers du PIC18F4550. Rappelons qu'un timer est un compteur dont le signal de comptage peut être interne et/ou externe.

1. Etude du Timer 0

1.1. Accès à la documentation

  1. Placez-vous sur la première page de la section explicitant le fonctionnement du Timer 0 dans la datasheet.
  2. Repérer les figures 11-1 et 11-2.
  3. Analyse des figures 11-1 et 11-2
  4. Le Timer 0 accepte deux sources différentes de comptage : quelles sont-elles ?
  5. Quel bit permet de choisir la source d'horloge interne notée Fosc/4 ? Indiquer sa valeur.
  6. Quelle est l'utilité du prescaler programmable ? Quel bit faut-il configurer pour le rendre fonctionnel ?
    On note N le rapport de division du prescaler.
  7. Donner l'expression de la fréquence de comptage du Timer 0 en fonction de Fosc et N.
  8. Quel est le rôle du bit TMR0IF ?
  9. Déterminer l'expression de la fréquence de mise 1 de TMR0IF en fonction de Fosc, N lorsque le Timer 0 est utilisé en mode 16 bits.
  10. En déduire la période maximale de mise à 1 de TMR0IF et la valeur du prescaler dans ce cas là.

Note : pour répondre à toutes ces questions, on pourra représenter graphiquement les différents signaux pour s'aider et faire apparaître les différentes périodes utiles à l'élaboration des relations demandées.

1.2. Exercice de configuration et Utilisation du Timer 0 pour faire clignoter une LED

Le Timer 0 est configuré pour utiliser l'horloge interne, soit Fosc/4 comme fréquence de base.

  1. Déterminer la valeur du prescaler pour obtenir une période de TMR0IF proche de la seconde en précisant la valeur réellement obtenue.
  2. Donner la configuration complète du registre de configuration du Timer 0 : T0CON.
  3. Proposer quelques lignes de code à mettre en place dans la boucle infinie d'un programme plus général pour faire clignoter une LED avec des temps d'allumage puis d'extinction proche de la seconde.

2. Etude du Timer 2

2.1. Etude de la figure 13-1

  1. Quelle est la source d'entrée du timer 2 ?
  2. N1 étant le rapport de division de fréquence du prescaler, exprimer la fréquence d'entrée du compteur associé au timer 2 (TMR2) en fonction de N1 et Fosc.
  3. Quelle est la valeur maximale que peut atteindre TMR2 avant sa remise à 0 ? Préciser le nombre de fois que TMR2 aura compté sur un cycle de son fonctionnement ?
  4. Donner l'expression de la fréquence notée Fcomp à la sortie du comparateur.N2 étant le rapport de division du postscaler, exprimer la fréquence du signal TMR2IF en fonction de Fosc, N1, PR2, N2. Donner aussi sa période de répétition.

2.2. Mise en oeuvre

On a toujours Fosc = 48MHz et on souhaite obtenir une période d'activation de 5ms pour le signal TMR2IF.

  1. Déterminer N1, N2, PR2 pour obtenir précisément cette fréquence de 200Hz.
    Note : la méthode pour choisir les différents paramètres consiste à choisir N1, puis N2, pour obtenir finalement une valeur entière pour PR2 telle que PR2 soit comprise en 0 et 255.
  2. Donner l'ensemble des registres à configurer pour que le timer 2 fonctionne avec ces caractéristiques sans mise en place des interruptions.
  3. Imaginer les lignes de code à mettre en place dans la boucle infinie pour pouvoir faire clignoter une LED avec une période de 2s (1s allumée puis 1s éteinte).
  4. Que faut-il respecter pour qu'un tel code puisse fonctionner ?