Esempio n. 1
0
void Data_Exchange(void)
{
#ifdef DATA_TRANSFER_USE_SPI_NRF
	Nrf_Check_Event();
	u8 sta = Nrf_Get_FIFOSta();
	if((sta & (1<<4))==0)
	{
		return;
	}
		
#endif
	if(Send_Status)
	{
		Send_Status = 0;
		Data_Send_Status();
	}
	else if(Send_RCData)
	{
		Send_RCData = 0;
		Data_Send_RCData();
	}
	else if(Send_MotoPwm)
	{
		Send_MotoPwm = 0;
		Data_Send_MotoPWM();
	}
}
Esempio n. 2
0
void rt_transfer_thread_entry(void *parameter)
{
//	rt_uint16_t ms_20=0,ms_100=0,ms_1000=0;
//	char buff[33];
	T_RC_Status data;
//	T_RC_Voltage voltage;
	T_RC_Sensor Sensor;
//	rt_uint32_t _temp[3];
//	rt_uint8_t i;
	
	rt_thread_delay(1000);
	
	for(;;)
	{
		//NRF24_Check_Event();
		/*Pms_20++;
		if(ms_20==100)
		{
			ms_20=0;
			for(i=0;i<3;i++)
			{	
				_temp[i]=read_battert_adc_value();
			}
			voltage.Voltage1=(float)_temp[0]/4095.0f*3.3f*2;
			voltage.Voltage2=(float)_temp[1]/4095.0f*3.3f*2;
			voltage.Voltage3=(float)_temp[2]/4095.0f*3.3f*2;
			Data_Send_Voltage(&voltage);
		}*/

#if 1
		data.ANGLE.rol=angleActual.rol;
		data.ANGLE.pit=angleActual.pit;
		data.ANGLE.yaw=angleActual.yaw;
		data.ALT_CSB=1234;
		data.ALT_PRS=1234;
		data.ARMED=0;
		Data_Send_Status(&data);

		Sensor.ACC.X=accelMpu.x;
		Sensor.ACC.Y=accelMpu.y;
		Sensor.ACC.Z=accelMpu.z;
		Sensor.GYR.X=gyroMpu.x;
		Sensor.GYR.Y=gyroMpu.y;
		Sensor.GYR.Z=gyroMpu.z;
		Sensor.MAG.X=magMpu.x;
		Sensor.MAG.Y=magMpu.y;
		Sensor.MAG.Z=magMpu.z;	

		Sensor.MAG.X=magCorrect.x;
		Sensor.MAG.Y=magCorrect.y;
		Sensor.MAG.Z=magCorrect.z;			
		Data_Send_Senser(&Sensor);
		
#endif
		rt_thread_delay(20);
		
	}
}
Esempio n. 3
0
__interrupt void PID_CONTROL()
{


	TA1CCTL1 &=~ CCIFG;
	switch(CpuTimePoll)
	{
	//第一个3ms给控制  每6ms控制一次
	case 0 :
		ANGLE_CALCULATE(); //四元数转欧拉角 这个执行了1.2MS左右
		PID_ROLL();           //间接计算PID占空比    PID时间 不长
		PID_PITCH();
		PID_YALL();
		PWM_CALCULATE();  //PID输出值转换为四路电机的PWM占空比
		PWM_SET();         //PWM占空比设置
		//以上执行2.2ms
		break;

	//第二给3ms给接收控制信息  发送周期为15ms其中包括一个3ms的接收
	case 1 :
		if(time1 % 4 == 0)
		{
			Data_Send_PID1();
		}
		else if(time1 % 4 == 1)
		{
			Data_Send_MotoPWM(); //设置电机
		}
		else if(time1 % 4 == 2)
		{
			Data_Send_Status();
		}
		else if(time1 % 4 == 3)
		{
			Data_Send_Senser();
		}
		if(time1++ == 3)
			time1 = 0;
		break;
	}

	if(CpuTimePoll++ == 1)
		CpuTimePoll = 0;
}
Esempio n. 4
0
void Send_Data(void)
{
	if(Send_Status)
	{
		Send_Status = 0;
		Data_Send_Status();
	}
	
	else if(Send_Senser)
	{
		Send_Senser = 0;
		Data_Send_Senser();
	}
	else if(Send_PID)
	{
		Send_PID = 0;
		Data_Send_PID();
	}
}
Esempio n. 5
0
void Send_Data(void)
{
	if(Send_Status==2)
	{
		Data_Send_Status();
	}	
	else if(Send_Status==4)
	{
		Data_Send_RCData();
		
	}
	else if(Send_Status==6)
	{
		Data_Send_MotoPWM();
	}    
	else if(Send_Status==8)  
	{
		Data_Send_Senser();
		
	}
	else if(Send_Status==10)
	{
		if(SendPidDataFlag==1)
		{
			Data_Send_PID1();
		}	
	}
	else if(Send_Status==12)
	{      if(SendPidDataFlag==1)
	       {
		Data_Send_PID2();
		SendPidDataFlag=0;
	       }
		Send_Status=0;
	}
	       
	
	Send_Status++;
}
Esempio n. 6
0
void Data_Exchange(void)
{
#ifdef DATA_TRANSFER_USE_SPI_NRF
    Nrf_Check_Event();
    u8 sta = Nrf_Get_FIFOSta();
    if ((sta & (1 << 4)) == 0)
        return;
#endif
    if (Send.DataF1)
    {
        Send.DataF1 = 0;
        Data_Send_F1();
    }
    if (Send.DataF2)
    {
        Send.DataF2 = 0;
        Data_Send_F2();
    }
    if (Send.DataF3)
    {
        Send.DataF3 = 0;
        Data_Send_F3();
    }
    if (Send.RCData && Send.DataF4)
    {
        Send.DataF4 = 0;
        Data_Send_F4();
    }
    if (Send.Status)
    {
        Send.Status = 0;
        Data_Send_Status();
    }
    else if (Send.GpsData)
    {
        Send.GpsData = 0;
        //Data_Send_GpsData();
    }
    if (Send.Senser)
    {
        Send.Senser = 0;
        Data_Send_Senser();
    }
    if (Send.PID1)
    {
        Send.PID1 = 0;
        Data_Send_PID1();
    }
    else if (Send.PID2)
    {
        Send.PID2 = 0;
        Data_Send_PID2();
    }
    else if (Send.PID3)
    {
        Send.PID3 = 0;
        Data_Send_PID3();
    }
    else if (Send.PID4)
    {
        Send.PID4 = 0;
        Data_Send_PID4();
    }
    else if (Send.PID5)
    {
        Send.PID5 = 0;
        Data_Send_PID5();
    }
    else if (Send.PID6)
    {
        Send.PID6 = 0;
        Data_Send_PID6();
    }
    if (Send.RCData && Ex_ON_OFF.RCData)
    {
        Send.RCData = 0;
        Data_Send_RCData();
    }
    if (Send.Offset)
    {
        Send.Offset = 0;
        Data_Send_OFFSET();
    }
    if (Send.MotoPwm)
    {
        Send.MotoPwm = 0;
        Data_Send_MotoPWM();
    }
}
void Data_Exchange(void)
{
#ifdef DATA_TRANSFER_USE_SPI_NRF
	Nrf_Check_Event();
	u8 sta = Nrf_Get_FIFOSta();
	if((sta & (1<<4))==0)
		return;
#endif
	if(Send_Status)
	{
		Send_Status = 0;
		Data_Send_Status();
	}
	else if(Send_Senser)
	{
		Send_Senser = 0;
		Data_Send_Senser();
	}
	else if(Send_PID1)
	{
		Send_PID1 = 0;
		Data_Send_PID1();
	}
	else if(Send_PID2)
	{
		Send_PID2 = 0;
		Data_Send_PID2();
	}
	else if(Send_PID3)
	{
		Send_PID3 = 0;
		Data_Send_PID3();
	}
	else if(Send_PID4)
	{
		Send_PID4 = 0;
		Data_Send_PID4();
	}
	else if(Send_PID5)
	{
		Send_PID5 = 0;
		Data_Send_PID5();
	}
	else if(Send_PID6)
	{
		Send_PID6 = 0;
		Data_Send_PID6();
	}
	else if(Send_RCData)
	{
		Send_RCData = 0;
		Data_Send_RCData();
	}
	else if(Send_Offset)
	{
		Send_Offset = 0;
		Data_Send_OFFSET();
	}
	else if(Send_MotoPwm)
	{
		Send_MotoPwm = 0;
		Data_Send_MotoPWM();
	}
}