Autor Tema: Que pasa con el PWM del 628 ??  (Leído 2495 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado joscar66

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 117
Que pasa con el PWM del 628 ??
« en: 01 de Noviembre de 2004, 06:13:00 »

Escribi el siguiente codigo para utilizar el ccp del 628 conmo PWM, en el proteus funciona perfectamente, pero en el montaje del protoboard no hace nada

Necesito su opinion Por favor

#include<16f628.h>

#use delay(clock=4000000)


void main()
{

setup_ccp1(CCP_PWM_PLUS_1);   // Configure CCP1 as a PWM
setup_timer_2(T2_DIV_BY_1, 11, 1);

}

Los fuses son XT, NOWDT, PWRT, MCLR, BODEN


                                                           GRACIAS
Esfuércense por ser mejor cada día...
¡Saludos desde COLOMBIA!

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Que pasa con el PWM del 628 ??
« Respuesta #1 en: 01 de Noviembre de 2004, 12:19:00 »
No sé como funciona la opción "plus" ya que la versión de mi compilador no la contempla, de todas formas ¿no te faltaría el set_pwm1_duty(x) ? ... seguramente será por el "plus" que no lo has puesto.

Desconectado joscar66

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 117
RE: Que pasa con el PWM del 628 ??
« Respuesta #2 en: 01 de Noviembre de 2004, 15:02:00 »
No POcher, ya lo he intentado con el

set_pmw1_duty()

la verdad creo que es un bug con el 628 porque probe el mismo codigo para el 873 y funciono perfecto!

ademas lo he compilado con la version 3.190, 3.203 y 3.211
Esfuércense por ser mejor cada día...
¡Saludos desde COLOMBIA!

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Que pasa con el PWM del 628 ??
« Respuesta #3 en: 01 de Noviembre de 2004, 23:48:00 »
¿Podrías indicarme en qué página del manual explica  con la opción plus, lo de setup_ccp1(CCP_PWM_PLUS_1);? . Lo he mirado y no lo veo (se me habrá pasado)

De hecho compilar, compila sin errores, pero no sé como funciona esta opción "plus"¿lo podrías explicar?

Desconectado joscar66

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 117
RE: Que pasa con el PWM del 628 ??
« Respuesta #4 en: 02 de Noviembre de 2004, 07:06:00 »
El plus se utiliza cuando no se necesitan los 10 bits para la resolusion del Ancho de pulso. Con Plus solo se utilizarran 8 bits de resolusion.

Adjunto ademas un codigo que me funciono. Es para que el 628 genere una frecuencia de 40kHz al 50%

#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO, PUT, NOPROTECT, BROWNOUT, MCLR, NOLVP, NOCPD
void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_1,24,1);
   setup_ccp1(CCP_PWM);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   set_pwm1_duty(12);
   while(1);
}

Como veras Pocher tenias razon. Hacia falta el Set_pwm1_duty(), que anteriormente habia utilizado pero con un valor erroneo, por eso no generaba nada.
Lo que si me parece raro es que la simulacion en el proteus si generaba la frecuencia.
Sera que el bug es del proteus... Casi me salen canas verdes!!

Gracias Amigo!
Esfuércense por ser mejor cada día...
¡Saludos desde COLOMBIA!

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Que pasa con el PWM del 628 ??
« Respuesta #5 en: 02 de Noviembre de 2004, 10:09:00 »
Vale, así sí.

Respecto a lo del plus me parece que es al revés:

setup_ccp1(CCP_PWM);  -------------------> 8 bits de resolución

setup_ccp1(CCP_PWM_PLUS_1); --------> 10 bits de resolución

Lo he comprobado a partir del fichero .lst y viendo el ensamblador que se genera para una opción y para otra. En el primer caso se programan los bits CCPxX y CCPxY del registro CCPxCON con 00, sin embargo en el segundo caso se programan con 01.

Un saludo


 

anything