TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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:
#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]