Exemplo n.º 1
0
void GYRO_INIT_STATE(void)
{
	/*
	s_gi 陀螺仪初始化状态时的状态标志
		0--初始化还未开始
		1--校准正传系数
		2--校准反正系数
		3--告知主控陀螺仪标定完成
	*/
	static uint8_t s_gi = 0;
	
	switch(s_gi)
	{
		case 0	:		s_gi = 1;
			Gyro_Clear();
			break;
		case 1	:		s_gi = 2;
			Gyro_Init_P();
			Gyro_Clear();
			S_GYRO_C1_FUNC();
			break;
		case 2	:		s_gi = 0;
			Gyro_Init_N();
			S_GYRO_C2_FUNC();
			Data_Save();
			SS_H = 0;//复位状态标志
			break;
		default	:		s_gi = 1;
			Gyro_Clear();
	}
}
Exemplo n.º 2
0
// void Gyro_NonLinear(void)
// {
// 	Gyro_Radian_Total
// 	Gyro_Multiplier=PPoly_Eval(fabs(1000*Gyro_Radian_Step/time_interval),GREENGYRO);
// 	delay(1);
// }
void Gyro_CheckFloat(void)
{
	LED2_on;
	Gyro_Clear();
	Gyro_Float_Flag=1;
	Gyro_Float_Flag1=1;
	Gyro_Float_Flag2=1;
	while(Gyro_Float_Flag)
		delay(1);
	if(Gyro_Float_Total2-Gyro_Float_Total1==0)
		Float_State=CF_ERROR;
	else if(Int64Abs(Gyro_Float_Total2-Gyro_Float_Total1-Gyro_Float*1024)>40960)
	{
		Gyro_Float=(Gyro_Float_Total2-Gyro_Float_Total1)/1024;
		Float_State=CF_CHANGED;
		Data_Save();
	}
	else
	{
		Float_State=CF_NORMAL;
	}
	
	Gyro_Clear();
	LED2_off;
}
Exemplo n.º 3
0
void ENC_R_INIT_STATE(void)
{
	/*
	s_er 码盘旋转半径初始化状态时的状态标志
		0--初始化还未开始
		1--校准正传系数
		2--校准反正系数
		3--告知主控陀螺仪标定完成
	*/
	static uint8_t s_er = 0;
	
	switch(s_er)
	{
		case 0	:		s_er = 1;
			Encoder_Clear(0);
			Encoder_Clear(1);
		  Gyro_Clear();
			break;
		case 1	:		s_er = 0;
			Encoder_InitR();
			Data_Save();
			SS_H = 0;					//复位状态标志
			break;
		default	:		s_er = 1;
			Encoder_Clear(0);
			Encoder_Clear(1);
	}
}