pic18f2420 frecuencia pwm

Estoy generando PWM usando el temporizador 2 de PIC18f2420. Tengo cristal de reloj externo de 4MHz. La frecuencia máxima que puedo obtener del PWM es de 3,9 KHZ con preescalador y posescalador 1:1. Necesito obtener 100KHZ, ¿alguna idea? ¿Funcionará cambiar el oscilador externo a 20 MHz?

Saludos

Respuestas (2)

Estás viendo una compensación entre frecuencia y resolución.

La forma en que funciona este PWM es tomar su reloj de entrada y alimentarlo en un contador de 8 bits.
El reloj alimentado al contador es como máximo (para esta serie de PIC) el reloj de su sistema dividido por 4.
Entonces, en su caso, el contador ve 1MHz.
Un contador de 8 bits tiene 256 pasos, y si desea utilizar la resolución completa para su ciclo de trabajo PWM, entonces ese reloj de 1 MHz se dividirá entre 256 para producir la frecuencia PWM final, lo que le dará sus 3,9 kHz. .

Estos PIC también le permiten obtener 2 bits adicionales de resolución al etiquetar los 2 bits del divisor de reloj del sistema para brindarle 10 bits efectivos o 1024 pasos de resolución de ciclo de trabajo PWM.

La única forma de obtener una frecuencia PWM más alta con el mismo reloj del sistema es reducir la resolución que le brinda el contador configurando su registro de período a un valor más bajo.
Entonces, por ejemplo, si configura el registro de período en 100, puede lograr un PWM de 10 kHz y si configura el registro de período en 10, obtendrá un PWM de 100 kHz.
Pero debe darse cuenta de que, en lugar de la resolución de 1024 pasos que tenía, ahora tiene muchos menos pasos para ajustar su ciclo de trabajo PWM.

Aumentar el reloj de su sistema a 20 MHz ciertamente ayudará. Tendrá que configurar el registro del período del temporizador en 50 para lograr una frecuencia PWM de 100 kHz y tendrá 200 pasos de resolución de ciclo de trabajo para jugar.

La fórmula del período PWM está dada por la ecuación 15-1 en la página 114 de la hoja de datos:

Período PWM = [(PR2) + 1] * 4 * Tosc *(Valor de preescala TMR2).

Entonces, si el preescalador es 1y PR2 es 0, obtenemos el período mínimo (por lo tanto, la frecuencia máxima):

PWM Period = [0 + 1] * 4 * Tosc = 4*Tosc

Entonces, la frecuencia máxima de PWM puede ser de hasta Fosc/4. En su caso, hasta 1 MHz (pero, cuanto mayor es la frecuencia, menor es la resolución PWM). Así que los números que estás mostrando no son correctos. Debería poder obtener la frecuencia requerida de 100 kHz sin ningún problema.