void dij_control_marker() { if(current_control_structure->control_type) { dij_write((long int)inst_if_mark); } else { dij_write((long int)inst_do_mark); } *(current_control_structure->marker_edit) = final_distance(current_control_structure->marker_edit); dij_write(final_distance(current_control_structure->control_edit)); printf("edit marker : %ld\n", *(current_control_structure->marker_edit) ); }
//------------------------------------------------------// //---------------------Main.c---------------------------// //------------------------------------------------------// void main(void) { init_ports(); // Inicializa puertos A=>ADC, B=Inputs ,C=Outputs , D=Outputs int i=0; double angle0xz=0.0; double x_total=0.0; double a[5]; int time=0; double ms_time=0.0; int count=0; int aterrizo=0; while (1) { for(i=0;i<6;i++){select_ADC_port(i); /*Seleccionar puerto de entrada ADC*/ a[i]=ADCH-81;} // Cargar en el vector a[i] los valores ax ay az a[3]=a[3]+81; a[4]=a[4]+81; // Conversión de entrada análoga if(a[3]>132){count=1;} else{count=0;} if(a[4]>132){aterrizo=1;} else{aterrizo=0;} // Si reset (análogo) todas la señales a 0, sino los contadores de milisegundos y segundos funcionan normal if ((count==1) && (aterrizo==0)) { ms_time=ms_time;time=time; angle0xz=initial_anglexz(a[0],a[1],a[2]); // Genero angulo entre x y z en grados print_Angle_Binary(1,angle0xz);// Imprime el angulo en binario en el puerto PORTD */ x_total=final_distance(angle0xz,(time+(ms_time/10))); // Calcula la distancia final. print_Decimes(x_total); } else if ((count==0) && (aterrizo==0)) { if(ms_time==8){time=time+1;ms_time=0;}else{time=time+0;} _delay_ms(99); ms_time=ms_time+1; print_Time_Binary(time); angle0xz=angle0xz; print_Angle_Binary(1,angle0xz); // Imprime el angulo en binario en el puerto PORTD */ x_total=final_distance(angle0xz,(time+(ms_time/10))); // Calcula la distancia final. print_Decimes(x_total); } else { ms_time=ms_time; time=time; print_Time_Binary(time); angle0xz=angle0xz; print_Angle_Binary(1,angle0xz); x_total=final_distance(angle0xz,(time+(ms_time/10))); // Calcula la distancia final. print_Decimes(x_total); } } }
void dij_pop_control() { *(current_control_structure->control_edit) = final_distance(current_control_structure->control_edit); }