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(); } }
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); } }
__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; }
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(); } }
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++; }
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(); } }