Como Generar Un Pwm
Enviado por taragushi • 25 de Noviembre de 2012 • 383 Palabras (2 Páginas) • 406 Visitas
como generar un PWM con el pic:
primero tenemos que saber a que frecuencia queremos nuestro PWM, donde a este se le calcula el periodo de la frecuencia:
periodo del PWM=1/(frecuencia del PWM)
luego tenemos que saber que cristal vamos a utilizar para sacarle de igual forma el periodo:
Tosc=1/(cristal del pic)
ahora como PR2 tiene que estar entre 0 y 255 vemos que Preescaler nos sirve, en esto solo puede tomar tres valores de Preescaler los cuales son 1, 4 ó 16.
PR2=((Periodo del PWM)/(4*Tosc*TMR2 Preescaler))-1
y por ultimo tenemos que saber cuál va a ser nuestro rango de trabajo del PWM. esto quiere decir que si vamos a hacer un Dady cicle por ejemplo del 50% ó 100%.
CCPR1L:CCP1CON=(Ciclo de trabajo del PWM)/(Tosc*TMR2 Preescaler)
y por último la configuración del programa tiene que ser:
setup_ccp1(CCP_PWM); //ccp1 modo PWM ó
setup_ccp2(CCP_PWM); //ccp2 modo PWM ó
setup_ccp3(CCP_PWM); //ccp3 modo PWM
como también pueden ser las tres juntas
luego de esto se tiene que poner:
setup_timer_2(modo, period, postcaler);
Esta función inicializa el timer2; mode especifica el divisor del reloj del oscilador. period
es un número comprendido entre 0-255, y determina el momento en el que el valor del
reloj se resetea a 0. postscale es un número de 0 a 15, que determina cuántos reset del
timer se han producido antes de una interrupción. 0 significa 1 reset, 1 significa 2 reset,
y así sucesivamente. El valor del timer puede leerse y puede escribirse utilizando
GET_TIMER2() y SET_TIMER2().
Los valores de mode son:
o T2_DISABLED
o T2_DIV_BY_1
o T2_DIV_BY_4
o T2_DIV_BY_16
(los tres ultimos casos equivalen al preescaler utilisado)
ejemplo:
setup_timer_2(T2_DIV_BY_1,PR2, 1);
y por ultimo
SET_PWM1_DUTY(value)
SET_PWM2_DUTY(value)
Estas
...