Microcontrôleurs
chap 6
Le module PWM
1. Configuration des broches PWM en sortie
Les broches permettant de produire un signal PWM sont les bits 1 et 2 du PORTC (RC1/CCP2 et
RC2/CCP1).
Il faut dans un premier temps configurer ces broches comme étant des sorties grâce au registre de
configuration du PORTC : TRISC (voir document ressource sur la configuration des ports
d’entrées/sorties).
2. Sélection du mode : production d’un signal PWM
Les broches utilisées (RC1/CCP2 et RC2/CCP1) pour la production du signal PWM peuvent être
utilisées dans plusieurs types de fonctionnement :
entrées/sorties du PORTC.
mode de capture (capture mode) : c’est un mode qui permet de mesurer le temps qui sépare
deux fronts.
mode de comparaison (compare mode) : c’est un mode qui permet de produire un état
logique (haut ou bas) en fonction du temps écoulé.
mode production du signal PWM : permet de produire un signal rectangulaire de fréquence
fixe et de rapport cyclique variable.
Par défaut le type de fonctionnement utilisé pour les broches est « entrées/sorties du PORTC ».
Si l’on souhaite les sélectionner un autre type de fonctionnement, il faut utiliser les registres :
CCP1CON (pour la broche RC2/CCP1) et CCP2CON (pour la broche RC1/CCP2) :
CCPxCON (x=1 ou 2 suivant la broche utilisée) :
- - CCPxX CCPxY CCPxM3 CCPxM2 CCPxM1 CCPxM0
[CCPxM3…CCPxM0] : ce sont ces bits qui permettent de sélectionner le mode de fonctionnement des
broches.
- [0000] : le mode de capture, le mode de comparaison et le mode de production du signal PWM
ne sont pas valides.
- [0100] : mode de capture tous les fronts descendants.
- [0101] : mode de capture tous les fronts montants.
- [0110] : mode de capture tous les 4 fronts montants.
- [0111] : mode de capture tous les 16 fronts montants.
- [1000] : mode comparaison, mise à 1 de la sortie lorsque le bit CCPxIF passe à un.
- [1001] : mode comparaison, mise à 0 de la sortie lorsque le bit CCPxIF passe à un.
- [1010] : mode comparaison, production d’une interruption lorsque le bit CCPxIF passe à un.
- [1011] : mode comparaison, lorsque le bit CCPxIF passe à un, mise à 0 de TMR1 et début d’une
conversion analogique numérique (si elle est active).
- [11XX] : mode production du signal PWM.
ASKRI Tahar 22
Microcontrôleurs
3. Configuration du TIMER2
3.1 Définition du TIMER2
Le TIMER2 est un périphérique qui permet de gérer le temps. Le schéma bloc simplifié ci dessous
montre son fonctionnement
La sortie du TIMER2 est le registre 8 bits
TMR2 qui correspond aux nombres
d’impulsions sur l’entrée du compteur CK.
La fréquence du signal FCK dépend de la
fréquence d’horloge du PIC16F877
(FOSC étant la fréquence du quartz).
Pour gérer des durées plus élevées, on a la
possibilité de diviser la fréquence par
1, 4 ou 16. Cette division est gérée par les bits T2CKPS1 et T2CKPS0.
3.2 Utilisation dans le cadre de la production du signal PWM
L’intérêt est qu’une fois le signal PWM configuré on a la possibilité de traiter autre chose sans que le
signal soit perturbé : c’est le TIMER2 qui gère la production du signal.
La configuration du TIMER2 se fait grâce au registre T2CON :
T2CON :
- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
TOUTPS3:TOUTPS0 : ratio du postscaler
0000 : division par 1
0001 : division par 2
...
1111 : division par 16
TMRON : ce bit permet d’activer ou non le TIMER2
1 : le TIMER2 est activé.
0 : le TIMER2 est inactif.
T2CKPS1, T2CKPS0 : ces bits permettent de sélectionner la prédivision de l’horloge du TIMER2.
00 : prédivision de 1.
01 : prédivision de 4.
1X : prédivision de 16.
4. Configuration des caractéristiques du signal PWM
On a la possibilité de configurer les caractéristiques suivantes :
période T (et donc fréquence) du signal PWM,
durée à l’état haut TH du signal PWM.
Le signal de sortie a la forme suivante :
ASKRI Tahar 23
Microcontrôleurs
L’expression de la période est la suivante :
T=PWMperiod=[(PR2)+1]´4´TOSC´(TMR2 prescale value)
PR2 : c’est un registre 8 bits qu’il faudra configurer en fonction de la période T que l’on souhaite
obtenir.
TOSC : c’est la période (en secondes) de l’horloge du PIC16F877.
TMR2 prescale value : c’est la pré-division du TIMER2.
L’expression de la durée à l’état haut est la suivante :
TH=PWM duty cycle =(CCPRxL:CCPxCON<5:4>)´TOSC´(TMR2prescale value)
(CCPR1L:CCP1CON<5:4>) : c’est un mot numérique sur 10 bits composé:
- d’un registre CCPRxL : les 8 bits de poids forts (x représente la sortie utilisée CCP1 ou CCP2),
- de deux bits (les bits 5 et 4) du registre CCPxCON nommés CCPxX (bit5) et CCPxY (bit4) (x
représente la sortie utilisée CCP1 ou CCP2)
TOSC : c’est la période (en secondes) de l’horloge du PIC16F877.
TMR2 prescale value : c’est la pré-division du TIMER2.
ASKRI Tahar 24