TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: fr3dy en 11 de Septiembre de 2011, 22:34:19

Título: Problema PWM 18f4550
Publicado 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.
Título: Re: Problema PWM 18f4550
Publicado por: Suky en 11 de Septiembre de 2011, 23:14:38
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?
Título: Re: Problema PWM 18f4550
Publicado por: fr3dy en 11 de Septiembre de 2011, 23:58:21
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?

 
Título: Re: Problema PWM 18f4550
Publicado por: Suky en 12 de Septiembre de 2011, 10:27:24
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!
Título: Re: Problema PWM 18f4550
Publicado por: pablomanieri en 12 de Septiembre de 2011, 10:43:16
Verifica que tienes los fuses correctamente colocados, estás usando un clock de 20MHZ y tienes puesto el fuse XT.
Título: Re: Problema PWM 18f4550
Publicado por: fr3dy en 12 de Septiembre de 2011, 11:11:33

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.
Título: Re: Problema PWM 18f4550
Publicado por: fr3dy en 12 de Septiembre de 2011, 11:17:38
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?
Título: Re: Problema PWM 18f4550
Publicado por: Suky en 12 de Septiembre de 2011, 15:01:42
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!
Título: Re: Problema PWM 18f4550
Publicado por: fr3dy en 12 de Septiembre de 2011, 16:25:39
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