Hola Chicos: Por favor quería ver si me pueden dar una mano con un problema que tengo con PWM. No logro hacerlo andar. Tengo todo configurado y calculado para la frecuencia que necesito, pero no me anda. Abajo cuelgo el programa. Por favor veanló y diganmé en que puedo estar fallando. Muchas Gracias
Datos:
PIC 16F819, frecuencia interna on la que lo hago trabajar=8Mhz
Frecuencia que necesito: 153.600 Hz
Calculo que saco del PR2=12
Me gustaría que me respondan:
1) Puede que no me esté andando porque tengo algo mal configurado del oscilador interno del PIC? es decir la linea:
#fuses INTRC_IO, NOWDT, NOPROTECT, PUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
2) Tengo que agregarle algo mas a esta linea para usar en oscilador interno y esa frecuencia? Tengo que colocar HS, XT, etc o alguno de estos parametros o estos son para cuando se usa un oscilador externo?
3) Tengo que configurar algo mas: Los puertos como salida?
Aca va el programa:
#include <16f819.h>
#fuses INTRC_IO, NOWDT, NOPROTECT, PUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay(clock=8000000)
void main(void){
long duty_PWM1;
// Para la frecuencia del pic de 8 mhz, frecuencia de 153600 hz ,
// T2DIV set to 1
// Para calcular la frecuencia:
// (4/frecuencia cristal)*T2_DIV*(periodo+1)
// seleccionamos PWM para los dos módulos CCP
setup_ccp1 (CCP_PWM);
// (4/8000000)*1*(12+1)=0.00000651seg
setup_timer_2(T2_DIV_BY_1, 12, 1);
duty_PWM1 = 52; // 0.00000651seg/(1*(1/8000000))=52.08, que es el valor a
//cargar. Duty 50%
set_pwm1_duty(duty_PWM1);
while(1){ //bucle infinito.
}
}
Muchas Gracias