La belle datasheet nous donne les indications suivantes.
11.5.7 SETUP FOR PWM OPERATION
The following steps should be taken when configuring
the CCP module for PWM operation:
1. Disable the PWM pin (CCPx) output drivers as
an input by setting the associated TRIS bit.
Donc je fait2. Set the PWM period by loading the PR2 register.Code:TRISC |= 0b00000110 ;
3. Configure the CCP module for the PWM modeCode:PR2= 255;
by loading the CCPxCON register with the
appropriate values.
4. Set the PWM duty cycle by loading the CCPRxLCode:CCP1CON |= 0b00001111 ; CCP2CON |= 0b00001111 ;
register and DCxB<1:0> bits of the CCPxCON
register.
5. Configure and start Timer2:Code:CCPR1L=Valeur; // mise en place des 8 bits de poids fort, CCPR1L CCPR2L=Valeur;
• Clear the TMR2IF interrupt flag bit of the
PIR1 register.
• Set the Timer2 prescale value by loading the
T2CKPS bits of the T2CON register.
• Enable Timer2 by setting the TMR2ON bit of
the T2CON register.
6. Enable PWM output after a new PWM cycle hasCode:TMR2IF = 0; T2CKPS1=0; // Prediviseur <5 T2CKPS0=1; // Prediviseur =4 ... TMR2ON=1;
started:
• Wait until Timer2 overflows (TMR2IF bit of
the PIR1 register is set).
• Enable the CCPx pin output driver by clearing
the associated TRIS bit.
Code:while(TMR2IF==0) ; TRISC&=0b11111001 ;
Au final le code C'est :
J'utilise le Hi-Tech C Compiler en version Lite dans MPLAB, je programme mon pic 16f886 avec un Pickit3 ... fréquence de l'horloge 20Mhz.Code:#include <htc.h> void Init_PWM(); void Rapport_cyclique_PWM(int); int main () { Init_PWM(); TRISB=0; PORTB=0b11111111; CCPR1L=0b1111111; while(1); } void Rapport_cyclique_PWM(int Valeur) { CCPR1L=Valeur; // mise en place des 8 bits de poids fort, CCPR1L CCPR2L=Valeur; } void Init_PWM() { TRISC |= 0b00000110 ; { PR2= 255; // Periode Maximale TMR2IF = 0; T2CKPS1=0; // Prediviseur <5 T2CKPS0=1; // Prediviseur =4 } CCP1CON |= 0b00001111 ; CCP2CON |= 0b00001111 ; Rapport_cyclique_PWM(1); // configuration rapport cyclique TMR2ON=1; // activation du timer 2 while(TMR2IF==0) ; TRISC&=0b11111001 ; }
Je met une résistance de quelques 200 ohm et une led et entre la pin RC1 et la masse et rien ne s'allume.
Donc, la je sais plus quoi faire... quelqu'un voit la connerie que je fais ?
-----