TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: DGM en 22 de Abril de 2009, 21:27:32

Título: PWM con PIC16f877a a 20MHz
Publicado por: DGM en 22 de Abril de 2009, 21:27:32
Hola a todos de nuevo. El motivo por el que les escribo es porque me he encontrado una dificultad a la hora de generar un pulso PWM con un PIC 16f877A corriendo a 20MHz con un cristal externo.

Pues bien el problema es el siguiente, quiero controlar un servo por PWM el cual necesita un período de 20ms, lo que equivale a una frecuencia de 50Hz. Pero, haciendo las correspondientes cuentas para establecer el periodo del Timer2 me he dado cuenta de que la mínima frecuencia que puedo conseguir es, en el caso más favorable, la siguiente:

Para calcular la frecuencia: TempTMR2 = [Preescaler*(PR2+1)*Postscaler]*(4/frecuencia cristal)

Luego TempTMR2 = [4*(255+1)*16]*(4/20000000) = 0.0032768   -->   FrecTMR2=1/0.0032768 = 305.17 Hz

Por ello creo, si no me equivoco, que no podría controlar este servo con el cristal de 20MHz. ¿Alguién me puede dar alguna solucion o sugerencia para conseguirlo?

Saludos
Título: Re: PWM con PIC16f877a a 20MHz
Publicado por: Suky en 22 de Abril de 2009, 22:02:58
Peor aún, el postscaler no afecta y la minima frecuencia seria 1220 Hz aprox.
\mathrm{PeriodoPWM}=\left(\mathrm{PR2} + 1 \right)\cdot 4\cdot\mathrm{Tosc}\cdot\mathrm{TMR2 Preescaler}

Parece que la única que queda es hacerlo por software utilizando los timers...
Título: Re: PWM con PIC16f877a a 20MHz
Publicado por: DGM en 24 de Abril de 2009, 13:56:38
Muchas gracias por la respuesta, creo que al referirte al postscaler quieres decir prescaler que creo que es el que no cuenta no?
De todas formas creo que lo más fácil será cambiar de oscilador, aunque tendría que ser uno de menos de 1MHz !!

Gracias, saludos.