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:
parent
ef871ec50a
commit
dd770a0fb9
14 changed files with 135 additions and 88 deletions
|
@ -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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue