Ejemplo n.º 1
0
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) );
   }
Ejemplo n.º 2
0
//------------------------------------------------------//
//---------------------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);
	 		
	}
}
}
Ejemplo n.º 3
0
void dij_pop_control()
   {
   *(current_control_structure->control_edit) = 
      final_distance(current_control_structure->control_edit);
   }