I suggest you do it the way BRUCE suggested. set them manually, by setting the registers yourself. here is an example for the 5khz case for the pic16f737 that I made, just for you: you may need to tweak it a bit to adjust the frequency by changing the PR2 value. (Dont forget that the value for the duty variable has to be 4x the PR2 value.) So if you change your PR2 Value... make sure you change the value of the duty varaible accordingly.
Enjoy,
Srig
-----------------------------------------------------------------
Duty1 var Byte 'Variable for controlling the PWM in CCP1
Duty2 Var Byte 'Variable for controlling the pwm in CCP2
Duty3 Var Byte 'Variable for controlling the PWM in CCP3
CCP1CON = %00001100 'Using CCP1 as PWM Mode Register 9-1 in Datasheet
CCP2CON = %00001100 'Using CCP2 as PWM Mode Register 9-1 in Datasheet
CCP3CON = %00001100 'Using CCP3 as PWM Mode Register 9-1 in Datasheet
T2CON = %00000101
TRISC.2 = 0 'Setting the CCP1 PIN as OUTPUT
TRISC.1 = 0 'Setting the CCP2 PIN as OUTPUT
TRISB.5 = 0 'Setting the CCP3 PIN as OUTPUT
Duty1 = 0
Duty2 = 0
Duty3 = 0
' Fosc = Clock Frequency (4MHz)
' PS = Timer2 Prescale Value (T2CON<1:0>)
' Freq = PWM output frequency
' Duty% = Duty cycle (20% = 0.2)
' formulas:
' PR2=(Fosc/(4*PS*Freq))-1
' CCPR1L:CCP1CON<5:4>=(PR2+1)*4*Duty%
PR2 = 50 with prescalar of 4 in Timer2
For i = 0 to 200
Duty1 = Duty1 + 1
CCP1CON.4 = Duty1.0
CCP1CON.5 = Duty1.1
CCPR1L = Duty1 >> 2
Pause 17
Next i
For i = 0 to 200
Duty2 = Duty2 + 1
CCP2CON.4 = Duty2.0
CCP2CON.5 = Duty2.1
CCPR2L = Duty2 >> 2
Pause 17
Next i
for i = 0 to 200
Duty3 = Duty3 + 1
CCP3CON.4 = Duty3.0
CCP3CON.5 = Duty3.1
CCPR3L = Duty3 >> 2
Pause 17
Next i
---------------------------------------------




Bookmarks