TODOPIC

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

Título: Problema PWM Interrupciones
Publicado por: fr3dy en 19 de Septiembre de 2011, 18:11:40
Hola
tengo un codigo para manejar dos pwm pero no funciona cuando uso la interrupcion de conversion A/D que me pueden recomendar?
Codigo:
Código: [Seleccionar]
#include <18f4550.h>
#device adc=10
#fuses HS,NOWDT,NOPUT,NOBROWNOUT,NOCPD,NOPROTECT
int16 duty=0,duty1=0,duty2=0;
#int_ad
#use delay(clock=20000000)


void ad_int(){
   duty=read_adc();             //Valor de fuente analógica...
   if (duty>512)
   {
      duty1=(duty-512)*2;
      duty2=0;
   }
   else
   {
      if(duty<512){
         duty2=(512-duty)*2;
         duty1=0;
      }
      else
      {
         duty1=0;
         duty2=0;
      }
   }
   set_pwm1_duty(duty1);
   set_pwm2_duty(duty2);
}

void main() {


   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); 
   enable_interrupts(INT_AD);
   enable_interrupts(global);
   
 
   do{

   }while (TRUE);

}


[\code]