1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-24 00:35:34 +03:00

For discussion - updated filters to be more consistent and more efficient (#330)

* Made filters more consistent
* Added pT1 init function. Made FIR filters consistent.
This commit is contained in:
Martin Budden 2016-07-06 08:03:27 +01:00 committed by Konstantin Sharlaimov
parent ef871ec50a
commit dd770a0fb9
14 changed files with 135 additions and 88 deletions

View file

@ -49,7 +49,7 @@ static flightDynamicsTrims_t * accZero;
static flightDynamicsTrims_t * accGain;
static int8_t accLpfCutHz = 0;
static biquad_t accFilterState[XYZ_AXIS_COUNT];
static biquadFilter_t accFilterState[XYZ_AXIS_COUNT];
static bool accFilterInitialised = false;
void accSetCalibrationCycles(uint16_t calibrationCyclesRequired)
@ -184,7 +184,7 @@ void updateAccelerationReadings(void)
if (!accFilterInitialised) {
if (targetLooptime) { /* Initialisation needs to happen once sample rate is known */
for (int axis = 0; axis < 3; axis++) {
filterInitBiQuad(accLpfCutHz, &accFilterState[axis], 0);
biquadFilterInit(&accFilterState[axis], accLpfCutHz, 0);
}
accFilterInitialised = true;
@ -193,7 +193,7 @@ void updateAccelerationReadings(void)
if (accFilterInitialised) {
for (int axis = 0; axis < XYZ_AXIS_COUNT; axis++) {
accADC[axis] = lrintf(filterApplyBiQuad((float) accADC[axis], &accFilterState[axis]));
accADC[axis] = lrintf(biquadFilterApply(&accFilterState[axis], (float) accADC[axis]));
}
}
}