diff --git a/UAV-ControlSystem/src/Flight/pid.c b/UAV-ControlSystem/src/Flight/pid.c index 31027e9..18ceb86 100644 --- a/UAV-ControlSystem/src/Flight/pid.c +++ b/UAV-ControlSystem/src/Flight/pid.c @@ -325,6 +325,27 @@ void pidUAV(pidProfile_t *pidProfile, pidProfileBuff_t *pidProfileBuff) } } +uint8_t flagAccBuff = 0; + +void pidAccelerometer(void) +{ + static uint8_t counterAcc = 0; + + counterAcc = ((flagAccBuff == 0))? 0: counterAcc; + + pidUAV(&PidProfile[PID_ID_ACCELEROMETER], &PidProfileBuff[PID_ID_ACCELEROMETER]); + + if (counterAcc > 50) + { + PidProfile[PID_ID_ACCELEROMETER].PID_Out[ROLL] = rc_input.Roll; + PidProfile[PID_ID_ACCELEROMETER].PID_Out[PITCH] = rc_input.Pitch; + } + else + { + counterAcc +=1; + } +} + /************************************************************************** * BRIEF: Runs a certain PID Controller * * INFORMATION: * @@ -354,10 +375,12 @@ void pidRun(uint8_t ID) { PidProfile[PID_ID_ACCELEROMETER].PID_Out[ROLL] = rc_input.Roll; PidProfile[PID_ID_ACCELEROMETER].PID_Out[PITCH] = rc_input.Pitch; + flagAccBuff = 0; } else { - pidUAV(&PidProfile[PID_ID_ACCELEROMETER], &PidProfileBuff[PID_ID_ACCELEROMETER]); + pidAccelerometer(); + flagAccBuff = 1; } break;