Celulares

Solo disponible en BuenasTareas
  • Páginas : 2 (406 palabras )
  • Descarga(s) : 0
  • Publicado : 25 de noviembre de 2010
Leer documento completo
Vista previa del texto
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=1frecuencia del PWM
luegotenemos que saber que cristal vamos a utilizar para sacarle de igual forma el periodo:
Tosc=1cristal del pic
ahora como PR2 tiene que estar entre 0 y 255 vemos que Preescaler nos sirve, en esto solopuede tomar tres valores de Preescaler los cuales son 1, 4 ó 16.
PR2=Periodo del PWM4*Tosc*TMR2 Preescaler-1
y por ultimo tenemos que saber cuál va a ser nuestro rango de trabajo del PWM. estoquiere decir que si vamos a hacer un Dady cicle por ejemplo del 50% ó 100%.
CCPR1L:CCP1CON=Ciclo de trabajo del PWMTosc*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 elvalor 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
(lostres 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 funciones escriben los 10 bitsde value al dispositivo PWM para establecer el
ciclo de trabajo. Se puede usar un valor de 8 bits si no son necesarios los bits menos
significativos.
ejemplo:
SET_PWM1_DUTY(CCPR1L:CCP1CON);...
tracking img