TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: fr3dy en 11 de Septiembre de 2011, 22:34:19
-
Hola:
Estoy intentando programar en lenguaje c un pic 18f4550 con una entrada analogica de 5v a 0v y salida de 2 PWM contrarios, pero no funciona, he el programa aplicado para un pic diferente (16f876) si funciona perfectamente. No se cual es el problema.
Espero me puedan ayudar!.
Les adjunto el programa.
-
Porque no funciona? No hay salida PWM? Como has configurado el PWM? Con que frecuencia has establecido al PIC? Que resolución resulta el PWM?
-
En el main yo configuro de esta manera
setup_adc_ports(AN0); //Habilitación RA0 analógico
setup_adc(ADC_CLOCK_INTERNAL); //Reloj interno RC
set_adc_channel(0); //Canal 0
//249;Frec 20Khz; Cristal 20Mhz ; Prescaler 1
setup_timer_2(T2_DIV_BY_1, 249, 1);
setup_ccp1(CCP_PWM); //CCP1 en modo PWM
setup_ccp2(CCP_PWM);
luego en un ciclo while (true) lee la conversion AD y la pone como duty en PWM y duty contrario en PWM2
while (TRUE) {
duty=read_adc(); //Valor de fuente analógica...
set_pwm1_duty(duty);
duty=1024-duty;
set_pwm2_duty(duty);
}
lo quise hacer sin interrupciones, sera por eso que no me sale?... pero lo raro es porque me sale en un micro y en el otro no?
-
Pero a que frecuencia trabaja el microcontrolador? Que frecuencia necesitas en el PWM? Que resolución tiene el PWM generado?
En código no se ve nada mal.
Saludos!
-
Verifica que tienes los fuses correctamente colocados, estás usando un clock de 20MHZ y tienes puesto el fuse XT.
-
ahi si tendras que perdonar mi ignorancia.. pero no entiendo nada de fuses, estoy aprendiendo por mi cuenta desde hace un par de dias. Explicame porfavor.
-
Pero a que frecuencia trabaja el microcontrolador? Que frecuencia necesitas en el PWM? Que resolución tiene el PWM generado?
En código no se ve nada mal.
Saludos!
frecuencia de cristal de 20Mhz; y frecuencia de pwm 20kHz; a que te refieres con resolucion de pwm?
-
Podes mirar el siguiente post, puede que te ayude a trabajar con ese microcontrolador: http://www.todopic.com.ar/foros/index.php?topic=15208.0
El tema es ir leyendo el datasheet del microcontrolador, porque una de las primeras cosas que hay que aprender a configurar son los fusibles, pues establecen el funcionamiento del microcontrolador.
Si revisas el datasheet encontraras que para cristales menores a 4MHz se debe colocar el fusible XT. En cambio para frecuencias mayores a 4MHz se debe colocar HS. Luego está la opción de habilitar el PLL interno del microcontrolador como para llevarlo a 48MHz, pero eso es otro tema.
Respecto a la resolución del PWM: Dependiendo de la frecuencia del oscilador y la frecuencia del PWM obtendrás cierta resolución (en bit), siendo la máxima 10 (Entonces el CT se puede indicar desde 0 hasta 1023). También de ello hay detalle en el datasheet del microcontrolador. También utiliza el buscador, muchos han ocupado tiempo en tratar de explicar el funcionamiento y como configurar el módulo PWM ;-)
Saludos!
-
Podes mirar el siguiente post, puede que te ayude a trabajar con ese microcontrolador: http://www.todopic.com.ar/foros/index.php?topic=15208.0
El tema es ir leyendo el datasheet del microcontrolador, porque una de las primeras cosas que hay que aprender a configurar son los fusibles, pues establecen el funcionamiento del microcontrolador.
Si revisas el datasheet encontraras que para cristales menores a 4MHz se debe colocar el fusible XT. En cambio para frecuencias mayores a 4MHz se debe colocar HS. Luego está la opción de habilitar el PLL interno del microcontrolador como para llevarlo a 48MHz, pero eso es otro tema.
Respecto a la resolución del PWM: Dependiendo de la frecuencia del oscilador y la frecuencia del PWM obtendrás cierta resolución (en bit), siendo la máxima 10 (Entonces el CT se puede indicar desde 0 hasta 1023). También de ello hay detalle en el datasheet del microcontrolador. También utiliza el buscador, muchos han ocupado tiempo en tratar de explicar el funcionamiento y como configurar el módulo PWM ;-)
Saludos!
Wow! muchas gracias.. si ese era el error.. me funciona perfecto! :D