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);
}