Autor Tema: PWM y timmers  (Leído 2177 veces)

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

Desconectado brujo

  • PIC10
  • *
  • Mensajes: 7
PWM y timmers
« en: 05 de Abril de 2010, 23:22:48 »
Tengo vn problema con el PWM del PIC16F83A y los timmers, es decir; utilizo la interrupcion del Timer0 para temporizaciones y en estas cargo a la vez el valor del PWM, sin embargo al montarlo en el protoboard el PWM simplemente no funciona, alguien puede decirme si se puede usar ambos a la vez? osi me conviene usar otro de los timers.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: PWM y timmers
« Respuesta #1 en: 05 de Abril de 2010, 23:59:14 »
Algo de código no caería mal.

El PWM lo generas por software o usas el módulo del PIC? Si usas el módulo del PIC debes tener en cuenta que el Timer usado es el Timer2.

Saludos
El papel lo aguanta todo

Desconectado brujo

  • PIC10
  • *
  • Mensajes: 7
Re: PWM y timmers
« Respuesta #2 en: 06 de Abril de 2010, 00:42:25 »
estoy utilizando el modulo CCP1 del PIC, respecto a lo del timer2 estoy consiente, pero, ¿afecta al timer 0 ó 1 el que este funcionando el PWM?
esta es la seccion de las interrupciones aqui es donde, se supone que cargo el valor del PWM durante la interrupcion del Timer0.
ya configure todo como debe de ser pero aun no funciona... espero sirva el codigo.

void interrupt config(void)
{
 if(RBIF)
  {
t=tec();
if(t==A)tempp=tempp+1;
if(t==B)tempp=tempp-1;
  __delay_ms(10);

 RBIF=0;
  }

 if(T0IF)
  {
   it++;
//    tempr=(float)(tempp-temps)/tempp;      // calcvlo de PWM
//    duty=tempr*1023;
//    if(temps>=tempp)duty=0;
   temps=ch_adc(0x00);            // lectura del ADC
   if(it==15)                                                                            // cproximado de 1 seg
   {
   pwm(duty);                                                           //esta funcion es la que configura al PWM y carga el valor del mismo
   it=0;                                                                    // es la que no funciona, bueno ya montado en el circuito
   seg++;
   In=~In;
   PORTB=In&(Ac&Al&Bz);
   }
   if(seg==90){seg=0; BSF(Bz,3);}
 T0IF = 0;
  }
if(INTF){BCF(Bz,3); seg=0; INTF=0;}

}

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: PWM y timmers
« Respuesta #3 en: 06 de Abril de 2010, 11:05:40 »
Que sepa, no afecta a ningún timer ...

Como estas inicializando al PWM?
El papel lo aguanta todo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: PWM y timmers
« Respuesta #4 en: 06 de Abril de 2010, 13:19:34 »
Que compilador estas usando? Como configuras el PWM? Y el PWM no afecta a ningún otro timer que el Timer2.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado brujo

  • PIC10
  • *
  • Mensajes: 7
Re: PWM y timmers
« Respuesta #5 en: 06 de Abril de 2010, 21:28:25 »
Este es el codigo que utilizo para las funciones CCP1_init() para inicializar, y pwm()
el valor del duty cycle ¿creen que este aqui el error? lo demas es en el codigo anterior.
espero respuestas.

void pwm(int duty);
void CCP1_init(char modo);

/**/
void pwm(int duty)                                               // en esta funcion cargo el valor del PWM
{
PR2=0xFF;                                                            // frecuencia del PWM
CCPR1L=(duty>>2);                                             //
CCP1CON=CCP1CON | (0x30 & (duty<<4));           
T2CON=0x06;
}
/**/

void CCP1_init(char modo)                        //en modo utilizó #define _PWM     0x0C
{
CCP1CON=CCP1CON | modo;
}


 

anything