TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Freire en 10 de Noviembre de 2010, 14:09:26

Título: PWM como hacer para que no se inicie siempree!!!
Publicado por: Freire en 10 de Noviembre de 2010, 14:09:26
Hola, estoy haciendo un cutre-seguidor de linea, el problema es que no se como hacer para que cada vez k se llama a la funcion esta empiece de nuevo y siempre me da un valor alto (5v) sea cual sea el valor del pwm, nose si me explico... si le coloco un delay dentro de cada if, tonces si me funciona bien, pero no quisiera que el programa se quedara esperando en el delay. Graciass!!


void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_4,124,1);
   setup_ccp1(CCP_PWM);
   setup_ccp2(CCP_PWM);
   set_pwm1_duty(0);
   set_pwm2_duty(0);
   setup_comparator(NC_NC_NC_NC);
   
   
   while(1){
                                           //                    LINEA NEGRA
   lectura=input_d();        //   D7   D6    D5    D4 ///// D3    D2    D1    D0
   
      if(lectura==0x01){          //D0  +derecha
         MD_AVANZA (0);
         MI_AVANZA (511);

      }
      else if(lectura==0x80){     //D7  +izquierda
         MD_AVANZA (511);
         MI_AVANZA (0);

      }
      else{
         MD_AVANZA (1023);
         MI_AVANZA (1023);
   
      }
   
   }

}

void MD_AVANZA (int pwm1){
   output_high(IN1);
   output_low(IN2);
   set_pwm1_duty(pwm1);
}

void MI_AVANZA (int pwm2){
   output_high(IN3);
   output_low(IN4);
   set_pwm2_duty(pwm2);
}