From b6e0927f96c2234363a6d81526034ae3ca8093b3 Mon Sep 17 00:00:00 2001 From: borisbstyle Date: Sun, 10 Jan 2016 21:22:42 +0100 Subject: [PATCH] Fix wrong filter selection and Scaling in Rewrite --- src/main/common/filter.c | 5 ++--- src/main/flight/pid.c | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/common/filter.c b/src/main/common/filter.c index d2d7f9875c..d78a5dbb9b 100644 --- a/src/main/common/filter.c +++ b/src/main/common/filter.c @@ -41,9 +41,8 @@ float filterApplyPt1(float input, filterStatePt1_t *filter, uint8_t f_cut, float static int8_t gyroFIRCoeff_500[FILTER_TAPS] = { 0, 18, 14, 16, 20, 22, 24, 25, 25, 24, 20, 18, 12, 18 }; // looptime=500; static int8_t gyroFIRCoeff_1000[FILTER_TAPS] = { 0, 0, 0, 0, 0, 0, 0, 12, 23, 40, 51, 52, 40, 38 }; // looptime=1000; group delay 2.5ms; -0.5db = 32Hz ; -1db = 45Hz; -5db = 97Hz; -10db = 132Hz - -static int8_t deltaFIRCoeff_500[FILTER_TAPS] = {0, 0, 0, 0, 0, 18, 12, 28, 40, 44, 40, 32, 22, 20}; -static int8_t deltaFIRCoeff_1000[FILTER_TAPS] = {36, 12, 14, 14, 16, 16, 18, 18, 18, 16, 16, 14, 12, 36}; +static int8_t deltaFIRCoeff_500[FILTER_TAPS] = {36, 12, 14, 14, 16, 16, 18, 18, 18, 16, 16, 14, 12, 36}; +static int8_t deltaFIRCoeff_1000[FILTER_TAPS] = {0, 0, 0, 0, 0, 18, 12, 28, 40, 44, 40, 32, 22, 20}; int8_t * filterGetFIRCoefficientsTable(uint8_t filter_type, uint32_t targetLooptime) { diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index 879148bca6..ee0508bce1 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -364,7 +364,7 @@ static void pidRewrite(pidProfile_t *pidProfile, controlRateConfig_t *controlRat filterApplyFIR(&delta, deltaFIRState[axis], deltaFIRTable); - DTerm = (delta * 2 * pidProfile->D8[axis] * PIDweight[axis] / 100) >> 8; + DTerm = (delta * 3 * pidProfile->D8[axis] * PIDweight[axis] / 100) >> 8; // -----calculate total PID output axisPID[axis] = PTerm + ITerm + DTerm;