Deleted oscilation when enableing acc

This commit is contained in:
johan9107 2016-11-17 10:59:23 +01:00
parent 3407813f1e
commit 03be1e6b40

View File

@ -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;