Utiliser les PIC 16F et 18F/Exercices/Le mode comparaison du module CCP (Capture Compare PWM)


Un petit rappel de la documentation du module comparaison avant de commencer :

Le mode comparaison du module CCP (Capture Compare PWM)
Image logo représentative de la faculté
Exercices no9
Leçon : Utiliser les PIC 16F et 18F
Chapitre du cours : Le mode comparaison du module CCP (Capture Compare PWM)

Exercices de niveau 15.

Exo préc. :Interruption timer0 en langage C
Exo suiv. :Le mode capture du module CCP (Capture Compare PWM)
En raison de limitations techniques, la typographie souhaitable du titre, « Exercice : Le mode comparaison du module CCP (Capture Compare PWM)
Utiliser les PIC 16F et 18F/Exercices/Le mode comparaison du module CCP (Capture Compare PWM)
 », n'a pu être restituée correctement ci-dessus.



Le timer1 et ses registres

Exercice 1 modifier

Le PIC® possède un oscillateur de fréquence 4 MHz. Quelle est la plus petite valeur de la période de déclenchement des interruptions que l’on peut générer avec cette horloge interne ?

Exercice 2 Réalisation d'un signal de 1 Hz et son amélioration modifier

1°) Notre horloge quartz a une fréquence de 20 MHz. Utiliser le résultat de l'exercice 1 pour répondre : par combien doit-on diviser la fréquence de CCP1IF minimale pour obtenir un temps de 500000 ms (0,5 s)?

2°) On choisit une division par 5. Le principe sera donc d'attendre CCP1IF cinq fois sans oublier de le remettre à 0 et d'inverser par logiciel la sortie RC2. Il nous faut donc choisir un mode de fonctionnement logiciel (1010 qui n'agit pas sur RC2). Écrire le programme complet.


3°) Avec la technique de la question précédente, il nous est absolument impossible de régler exactement la fréquence de sortie. On va essayer de palier à cet inconvénient en utilisant un autre mode qui n'agit pas sur RC2 mais a l'avantage de déclencher une remise à 0 du timer1 quand il y a comparaison : c’est le mode 1011. Calculer la valeur à mettre dans CCPR1.

Écrire le programme.

4°) Compléter le programme précédent pour qu’il envoie sur une liaison série (avec un printf) le temps en heure minute seconde.

On verra plus tard qu'une méthode plus précise consiste à utiliser un quartz horloger.