Hola me gustaria ver si pueden ayudarme con este problema que tengo, o al menos aclarme si lo que digo esta bien o mal ? o algo asi
OBJETIVO:
Necesito programar un PWM en CCP1 y cuando terminer de contar el PWM atender una interrupcion por desvordamiento correspondiente del Timer.
PREGUNTAS:
¿Primero puede acerse al reves que comience el bajo el PWM y despues lo ponga en alto y cuando baje atienda la interrupcion?
DUDAS:
Se que el el cambio del pin (Alto a Bajo) lo hace cuando PR2 coincide con la parte alta del TIMER2 y que:
Periodo = [PR2+1]*4*Tosc* Valor_PredivisorTMR2
esto en C seria.
setup_ccp1(CCP_PWM); // Configure CCP1 as a PWM
setup_timer_2(T2_DIV_BY_16, 1, 1);
while (true){
set_pwm1_duty(value);
}
De la ayuda
setup_timer_2 (mode, period, postscale)
mode: [PREDIVISOR EN LA FRECUENCIA]
T2_DISABLED, T2_DIV_BY_1, T2_DIV_BY_4, T2_DIV_BY_16
period: [NO ENTIENDO BIEN]
Es un valor int 0-255 que determina cuando el reloj del timer es reseteado.
//El el valor inicial despues del desvordamiento?
postscale:[POSTDIVISOR EN LA FRECUENCIA Solo para la intenrrupcion?]
Es un numero de 1-16 que determina cuantos tiempos de reset hay antes de una interrupcion
//[Division en la frecuencia]
//Si pongo 1 la primera ves que se desvorde va y atiende la interrupcion.
//Si pongo 2 la segunda ves que se desvorde va y atiende la interrupcion. y etc hasta 16
Por lo tanto
La temporizacion, perido, que esperaría seria en el PWM seria: ?
Primero ese es el reloj que estoy utilizando, Pero el Crital que tengo es de 12 Mhz. Uso el de 48 Mhz para los calculos ?
(tengo los fuses para USB).
#use delay(clock=48000000)
Temporizacion = 4 * Tos * Valor_PredivisorTMR2 * PR2
Temporizacion = 4 * 48M *10^-1 * 16 * PR2
Temporizacion = 4 * 2.083 E-8 * 16 * PR2
Temporizacion = 1.33 E-6 * PR2
Pero donde establesco el PRS en CCS ?
Luego solo tendria que atender la interrupcion TIMER2
De antemano les agradesco, por la leida de todo lo que escribi.
GRACIAS