Hola, efectivamente estoy usando 10 bits, aunque no tengo muy claro como funciona el PWM, pues solo obtengo el 100% en 10 bits si pongo:
Setup_Timer_2(T2_DIV_BY_1,255,1);
con lo cual al tener en la base de tiempo 255 no puedo superar los 3,5Khz.
Saludos y gracias.
micro_pepe estás confundiendo frecuencia con duty cycle.
Frecuencia = 1/Periodo
Período = [(PR2) + 1] • 4 • TOSC • (Prescaler Timer2)
Ejemplo 1:
PR2 = 10
Clock = 4 Mhz
Prescaler = 1
Periodo = (10+1) * 4 * 250nseg * 1 = 11useg
Frec = 90,909 KHz
Ejemplo 2:
PR2 = 50
Clock = 20 Mhz
Prescaler = 1
Periodo = (50+1) * 4 * 50 nseg * 1 = 10,2 useg
Frec = 98,039 KHzComo puedes observar, es fácil lograr una gran frecuencia.
Desconozco como es esa función que usas (porque no uso CCS) , pero es muy probable que el
valor del medio sea el PR2, en cuyo caso la frecuencia disminuye drásticamente.
Veamos los mismos parámetros del Ejemplo1 pero con un PR2 de 255.
Ejemplo 3:
PR2 = 255
Clock = 4 Mhz
Prescaler = 1
Periodo = (255+1) * 4 * 250nseg * 1 = 256useg
Frec = 3,906 KHz
El DutyCycle lo manejas con el CCPR1L y los bits CCP1CON<5:4>
Si pones CCPR1L = 255
y los bits 5 y 4, del CCP1CON en 1, tendrás tu 100% de dutycycle.
Saludos