mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-24 00:35:34 +03:00
Use only highest hardware LPF as it's de factor standard for a few years now.
This commit is contained in:
parent
3c32dcb720
commit
a19a16bb03
11 changed files with 5 additions and 63 deletions
|
@ -1915,7 +1915,7 @@ static bool blackboxWriteSysinfo(void)
|
||||||
BLACKBOX_PRINT_HEADER_LINE("dterm_lpf_type", "%d", pidProfile()->dterm_lpf_type);
|
BLACKBOX_PRINT_HEADER_LINE("dterm_lpf_type", "%d", pidProfile()->dterm_lpf_type);
|
||||||
BLACKBOX_PRINT_HEADER_LINE("deadband", "%d", rcControlsConfig()->deadband);
|
BLACKBOX_PRINT_HEADER_LINE("deadband", "%d", rcControlsConfig()->deadband);
|
||||||
BLACKBOX_PRINT_HEADER_LINE("yaw_deadband", "%d", rcControlsConfig()->yaw_deadband);
|
BLACKBOX_PRINT_HEADER_LINE("yaw_deadband", "%d", rcControlsConfig()->yaw_deadband);
|
||||||
BLACKBOX_PRINT_HEADER_LINE("gyro_lpf", "%d", gyroConfig()->gyro_lpf);
|
BLACKBOX_PRINT_HEADER_LINE("gyro_lpf", "%d", GYRO_LPF_256HZ);
|
||||||
BLACKBOX_PRINT_HEADER_LINE("gyro_lpf_hz", "%d", gyroConfig()->gyro_main_lpf_hz);
|
BLACKBOX_PRINT_HEADER_LINE("gyro_lpf_hz", "%d", gyroConfig()->gyro_main_lpf_hz);
|
||||||
#ifdef USE_DYNAMIC_FILTERS
|
#ifdef USE_DYNAMIC_FILTERS
|
||||||
BLACKBOX_PRINT_HEADER_LINE("dynamicGyroNotchQ", "%d", gyroConfig()->dynamicGyroNotchQ);
|
BLACKBOX_PRINT_HEADER_LINE("dynamicGyroNotchQ", "%d", gyroConfig()->dynamicGyroNotchQ);
|
||||||
|
|
|
@ -422,7 +422,6 @@ static const CMS_Menu cmsx_menuProfileOther = {
|
||||||
static const OSD_Entry cmsx_menuFilterPerProfileEntries[] =
|
static const OSD_Entry cmsx_menuFilterPerProfileEntries[] =
|
||||||
{
|
{
|
||||||
OSD_LABEL_DATA_ENTRY("-- FILTERING --", profileIndexString),
|
OSD_LABEL_DATA_ENTRY("-- FILTERING --", profileIndexString),
|
||||||
OSD_SETTING_ENTRY("HARDWARE LPF", SETTING_GYRO_HARDWARE_LPF),
|
|
||||||
OSD_SETTING_ENTRY("GYRO MAIN", SETTING_GYRO_MAIN_LPF_HZ),
|
OSD_SETTING_ENTRY("GYRO MAIN", SETTING_GYRO_MAIN_LPF_HZ),
|
||||||
OSD_SETTING_ENTRY("DTERM LPF", SETTING_DTERM_LPF_HZ),
|
OSD_SETTING_ENTRY("DTERM LPF", SETTING_DTERM_LPF_HZ),
|
||||||
#ifdef USE_DYNAMIC_FILTERS
|
#ifdef USE_DYNAMIC_FILTERS
|
||||||
|
|
|
@ -108,15 +108,6 @@ static const gyroFilterAndRateConfig_t gyroConfigs[] = {
|
||||||
{ GYRO_LPF_256HZ, 3200, { BMI160_BWP_OSR4 | BMI160_ODR_3200_Hz} },
|
{ GYRO_LPF_256HZ, 3200, { BMI160_BWP_OSR4 | BMI160_ODR_3200_Hz} },
|
||||||
{ GYRO_LPF_256HZ, 1600, { BMI160_BWP_OSR2 | BMI160_ODR_1600_Hz} },
|
{ GYRO_LPF_256HZ, 1600, { BMI160_BWP_OSR2 | BMI160_ODR_1600_Hz} },
|
||||||
{ GYRO_LPF_256HZ, 800, { BMI160_BWP_NORMAL | BMI160_ODR_800_Hz } },
|
{ GYRO_LPF_256HZ, 800, { BMI160_BWP_NORMAL | BMI160_ODR_800_Hz } },
|
||||||
|
|
||||||
{ GYRO_LPF_188HZ, 800, { BMI160_BWP_OSR2 | BMI160_ODR_800_Hz } }, // ODR = 800 Hz, LPF = 128 Hz
|
|
||||||
{ GYRO_LPF_188HZ, 400, { BMI160_BWP_NORMAL | BMI160_ODR_400_Hz } }, // ODR = 400 Hz, LPF = 137 Hz
|
|
||||||
|
|
||||||
{ GYRO_LPF_98HZ, 800, { BMI160_BWP_OSR4 | BMI160_ODR_800_Hz } }, // ODR = 800 Hz, LPF = 63 Hz
|
|
||||||
{ GYRO_LPF_98HZ, 400, { BMI160_BWP_OSR2 | BMI160_ODR_400_Hz } }, // ODR = 400 Hz, LPF = 68 Hz
|
|
||||||
|
|
||||||
{ GYRO_LPF_42HZ, 800, { BMI160_BWP_OSR4 | BMI160_ODR_800_Hz } }, // ODR = 800 Hz, LPF = 63 Hz
|
|
||||||
{ GYRO_LPF_42HZ, 400, { BMI160_BWP_OSR4 | BMI160_ODR_400_Hz } }, // ODR = 400 Hz, LPF = 34 Hz
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void bmi160AccAndGyroInit(gyroDev_t *gyro)
|
static void bmi160AccAndGyroInit(gyroDev_t *gyro)
|
||||||
|
|
|
@ -134,15 +134,6 @@ static const gyroFilterAndRateConfig_t gyroConfigs[] = {
|
||||||
{ GYRO_LPF_256HZ, 3200, { BMI270_BWP_OSR4 | BMI270_ODR_3200} },
|
{ GYRO_LPF_256HZ, 3200, { BMI270_BWP_OSR4 | BMI270_ODR_3200} },
|
||||||
{ GYRO_LPF_256HZ, 1600, { BMI270_BWP_OSR2 | BMI270_ODR_1600} },
|
{ GYRO_LPF_256HZ, 1600, { BMI270_BWP_OSR2 | BMI270_ODR_1600} },
|
||||||
{ GYRO_LPF_256HZ, 800, { BMI270_BWP_NORM | BMI270_ODR_800 } },
|
{ GYRO_LPF_256HZ, 800, { BMI270_BWP_NORM | BMI270_ODR_800 } },
|
||||||
|
|
||||||
{ GYRO_LPF_188HZ, 800, { BMI270_BWP_OSR2 | BMI270_ODR_800 } },
|
|
||||||
{ GYRO_LPF_188HZ, 400, { BMI270_BWP_NORM | BMI270_ODR_400 } },
|
|
||||||
|
|
||||||
{ GYRO_LPF_98HZ, 800, { BMI270_BWP_OSR4 | BMI270_ODR_800 } },
|
|
||||||
{ GYRO_LPF_98HZ, 400, { BMI270_BWP_OSR2 | BMI270_ODR_400 } },
|
|
||||||
|
|
||||||
{ GYRO_LPF_42HZ, 800, { BMI270_BWP_OSR4 | BMI270_ODR_800 } },
|
|
||||||
{ GYRO_LPF_42HZ, 400, { BMI270_BWP_OSR4 | BMI270_ODR_400 } },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Toggle the CS to switch the device into SPI mode.
|
// Toggle the CS to switch the device into SPI mode.
|
||||||
|
|
|
@ -198,21 +198,6 @@ static const gyroFilterAndRateConfig_t icm42605GyroConfigs[] = {
|
||||||
{ GYRO_LPF_256HZ, 2000, { 3, 5 } }, /* 250 Hz LPF */
|
{ GYRO_LPF_256HZ, 2000, { 3, 5 } }, /* 250 Hz LPF */
|
||||||
{ GYRO_LPF_256HZ, 1000, { 1, 6 } }, /* 250 Hz LPF */
|
{ GYRO_LPF_256HZ, 1000, { 1, 6 } }, /* 250 Hz LPF */
|
||||||
{ GYRO_LPF_256HZ, 500, { 0, 15 } }, /* 250 Hz LPF */
|
{ GYRO_LPF_256HZ, 500, { 0, 15 } }, /* 250 Hz LPF */
|
||||||
|
|
||||||
{ GYRO_LPF_188HZ, 1000, { 3, 6 } }, /* 125 HZ */
|
|
||||||
{ GYRO_LPF_188HZ, 500, { 1, 15 } }, /* 125 HZ */
|
|
||||||
|
|
||||||
{ GYRO_LPF_98HZ, 1000, { 4, 6 } }, /* 100 HZ*/
|
|
||||||
{ GYRO_LPF_98HZ, 500, { 2, 15 } }, /* 100 HZ*/
|
|
||||||
|
|
||||||
{ GYRO_LPF_42HZ, 1000, { 6, 6 } }, /* 50 HZ */
|
|
||||||
{ GYRO_LPF_42HZ, 500, { 4, 15 } },
|
|
||||||
|
|
||||||
{ GYRO_LPF_20HZ, 1000, { 7, 6 } }, /* 25 HZ */
|
|
||||||
{ GYRO_LPF_20HZ, 500, { 6, 15 } },
|
|
||||||
|
|
||||||
{ GYRO_LPF_10HZ, 1000, { 7, 6 } }, /* 25 HZ */
|
|
||||||
{ GYRO_LPF_10HZ, 500, { 7, 15 } } /* 12.5 HZ */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void icm42605AccAndGyroInit(gyroDev_t *gyro)
|
static void icm42605AccAndGyroInit(gyroDev_t *gyro)
|
||||||
|
|
|
@ -50,21 +50,6 @@ static const gyroFilterAndRateConfig_t mpuGyroConfigs[] = {
|
||||||
{ GYRO_LPF_256HZ, 1000, { MPU_DLPF_256HZ, 7 } },
|
{ GYRO_LPF_256HZ, 1000, { MPU_DLPF_256HZ, 7 } },
|
||||||
{ GYRO_LPF_256HZ, 666, { MPU_DLPF_256HZ, 11 } },
|
{ GYRO_LPF_256HZ, 666, { MPU_DLPF_256HZ, 11 } },
|
||||||
{ GYRO_LPF_256HZ, 500, { MPU_DLPF_256HZ, 15 } },
|
{ GYRO_LPF_256HZ, 500, { MPU_DLPF_256HZ, 15 } },
|
||||||
|
|
||||||
{ GYRO_LPF_188HZ, 1000, { MPU_DLPF_188HZ, 0 } },
|
|
||||||
{ GYRO_LPF_188HZ, 500, { MPU_DLPF_188HZ, 1 } },
|
|
||||||
|
|
||||||
{ GYRO_LPF_98HZ, 1000, { MPU_DLPF_98HZ, 0 } },
|
|
||||||
{ GYRO_LPF_98HZ, 500, { MPU_DLPF_98HZ, 1 } },
|
|
||||||
|
|
||||||
{ GYRO_LPF_42HZ, 1000, { MPU_DLPF_42HZ, 0 } },
|
|
||||||
{ GYRO_LPF_42HZ, 500, { MPU_DLPF_42HZ, 1 } },
|
|
||||||
|
|
||||||
{ GYRO_LPF_20HZ, 1000, { MPU_DLPF_20HZ, 0 } },
|
|
||||||
{ GYRO_LPF_20HZ, 500, { MPU_DLPF_20HZ, 1 } },
|
|
||||||
|
|
||||||
{ GYRO_LPF_10HZ, 1000, { MPU_DLPF_10HZ, 0 } },
|
|
||||||
{ GYRO_LPF_10HZ, 500, { MPU_DLPF_10HZ, 1 } }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const gyroFilterAndRateConfig_t * mpuChooseGyroConfig(uint8_t desiredLpf, uint16_t desiredRateHz)
|
const gyroFilterAndRateConfig_t * mpuChooseGyroConfig(uint8_t desiredLpf, uint16_t desiredRateHz)
|
||||||
|
|
|
@ -1295,7 +1295,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
|
||||||
sbufWriteU8(dst, pidProfile()->heading_hold_rate_limit);
|
sbufWriteU8(dst, pidProfile()->heading_hold_rate_limit);
|
||||||
sbufWriteU8(dst, HEADING_HOLD_ERROR_LPF_FREQ);
|
sbufWriteU8(dst, HEADING_HOLD_ERROR_LPF_FREQ);
|
||||||
sbufWriteU16(dst, 0);
|
sbufWriteU16(dst, 0);
|
||||||
sbufWriteU8(dst, gyroConfig()->gyro_lpf);
|
sbufWriteU8(dst, GYRO_LPF_256HZ);
|
||||||
sbufWriteU8(dst, accelerometerConfig()->acc_lpf_hz);
|
sbufWriteU8(dst, accelerometerConfig()->acc_lpf_hz);
|
||||||
sbufWriteU8(dst, 0); //reserved
|
sbufWriteU8(dst, 0); //reserved
|
||||||
sbufWriteU8(dst, 0); //reserved
|
sbufWriteU8(dst, 0); //reserved
|
||||||
|
@ -2335,7 +2335,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
|
||||||
pidProfileMutable()->heading_hold_rate_limit = sbufReadU8(src);
|
pidProfileMutable()->heading_hold_rate_limit = sbufReadU8(src);
|
||||||
sbufReadU8(src); //HEADING_HOLD_ERROR_LPF_FREQ
|
sbufReadU8(src); //HEADING_HOLD_ERROR_LPF_FREQ
|
||||||
sbufReadU16(src); //Legacy yaw_jump_prevention_limit
|
sbufReadU16(src); //Legacy yaw_jump_prevention_limit
|
||||||
gyroConfigMutable()->gyro_lpf = sbufReadU8(src);
|
sbufReadU8(src); // was gyro lpf
|
||||||
accelerometerConfigMutable()->acc_lpf_hz = sbufReadU8(src);
|
accelerometerConfigMutable()->acc_lpf_hz = sbufReadU8(src);
|
||||||
sbufReadU8(src); //reserved
|
sbufReadU8(src); //reserved
|
||||||
sbufReadU8(src); //reserved
|
sbufReadU8(src); //reserved
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
tables:
|
tables:
|
||||||
- name: alignment
|
- name: alignment
|
||||||
values: ["DEFAULT", "CW0", "CW90", "CW180", "CW270", "CW0FLIP", "CW90FLIP", "CW180FLIP", "CW270FLIP"]
|
values: ["DEFAULT", "CW0", "CW90", "CW180", "CW270", "CW0FLIP", "CW90FLIP", "CW180FLIP", "CW270FLIP"]
|
||||||
- name: gyro_lpf
|
|
||||||
values: ["256HZ", "188HZ", "98HZ", "42HZ", "20HZ", "10HZ"]
|
|
||||||
- name: acc_hardware
|
- name: acc_hardware
|
||||||
values: ["NONE", "AUTO", "MPU6000", "MPU6500", "MPU9250", "BMI160", "ICM20689", "BMI088", "ICM42605", "BMI270","LSM6DXX", "FAKE"]
|
values: ["NONE", "AUTO", "MPU6000", "MPU6500", "MPU9250", "BMI160", "ICM20689", "BMI088", "ICM42605", "BMI270","LSM6DXX", "FAKE"]
|
||||||
enum: accelerationSensor_e
|
enum: accelerationSensor_e
|
||||||
|
@ -217,11 +215,6 @@ groups:
|
||||||
description: "This is the main loop time (in us). Changing this affects PID effect with some PID controllers (see PID section for details). A very conservative value of 3500us/285Hz should work for everyone. Setting it to zero does not limit loop time, so it will go as fast as possible."
|
description: "This is the main loop time (in us). Changing this affects PID effect with some PID controllers (see PID section for details). A very conservative value of 3500us/285Hz should work for everyone. Setting it to zero does not limit loop time, so it will go as fast as possible."
|
||||||
default_value: 1000
|
default_value: 1000
|
||||||
max: 9000
|
max: 9000
|
||||||
- name: gyro_hardware_lpf
|
|
||||||
description: "Hardware lowpass filter for gyro. This value should never be changed without a very strong reason! If you have to set gyro lpf below 256HZ, it means the frame is vibrating too much, and that should be fixed first."
|
|
||||||
default_value: "256HZ"
|
|
||||||
field: gyro_lpf
|
|
||||||
table: gyro_lpf
|
|
||||||
- name: gyro_anti_aliasing_lpf_hz
|
- name: gyro_anti_aliasing_lpf_hz
|
||||||
description: "Gyro processing anti-aliasing filter cutoff frequency. In normal operation this filter setting should never be changed. In Hz"
|
description: "Gyro processing anti-aliasing filter cutoff frequency. In normal operation this filter setting should never be changed. In Hz"
|
||||||
default_value: 250
|
default_value: 250
|
||||||
|
|
|
@ -1454,7 +1454,7 @@ static mspResult_e djiProcessMspCommand(mspPacket_t *cmd, mspPacket_t *reply, ms
|
||||||
sbufWriteU16(dst, 0); // BF: gyroConfig()->gyro_soft_notch_hz_2
|
sbufWriteU16(dst, 0); // BF: gyroConfig()->gyro_soft_notch_hz_2
|
||||||
sbufWriteU16(dst, 1); // BF: gyroConfig()->gyro_soft_notch_cutoff_2
|
sbufWriteU16(dst, 1); // BF: gyroConfig()->gyro_soft_notch_cutoff_2
|
||||||
sbufWriteU8(dst, 0); // BF: currentPidProfile->dterm_filter_type
|
sbufWriteU8(dst, 0); // BF: currentPidProfile->dterm_filter_type
|
||||||
sbufWriteU8(dst, gyroConfig()->gyro_lpf); // BF: gyroConfig()->gyro_hardware_lpf);
|
sbufWriteU8(dst, GYRO_LPF_256HZ); // BF: gyroConfig()->gyro_hardware_lpf);
|
||||||
sbufWriteU8(dst, 0); // BF: DEPRECATED: gyro_32khz_hardware_lpf
|
sbufWriteU8(dst, 0); // BF: DEPRECATED: gyro_32khz_hardware_lpf
|
||||||
sbufWriteU16(dst, gyroConfig()->gyro_main_lpf_hz); // BF: gyroConfig()->gyro_lowpass_hz);
|
sbufWriteU16(dst, gyroConfig()->gyro_main_lpf_hz); // BF: gyroConfig()->gyro_lowpass_hz);
|
||||||
sbufWriteU16(dst, 0); // BF: gyroConfig()->gyro_lowpass2_hz);
|
sbufWriteU16(dst, 0); // BF: gyroConfig()->gyro_lowpass2_hz);
|
||||||
|
|
|
@ -98,7 +98,6 @@ EXTENDED_FASTRAM secondaryDynamicGyroNotchState_t secondaryDynamicGyroNotchState
|
||||||
PG_REGISTER_WITH_RESET_TEMPLATE(gyroConfig_t, gyroConfig, PG_GYRO_CONFIG, 8);
|
PG_REGISTER_WITH_RESET_TEMPLATE(gyroConfig_t, gyroConfig, PG_GYRO_CONFIG, 8);
|
||||||
|
|
||||||
PG_RESET_TEMPLATE(gyroConfig_t, gyroConfig,
|
PG_RESET_TEMPLATE(gyroConfig_t, gyroConfig,
|
||||||
.gyro_lpf = SETTING_GYRO_HARDWARE_LPF_DEFAULT,
|
|
||||||
.gyro_anti_aliasing_lpf_hz = SETTING_GYRO_ANTI_ALIASING_LPF_HZ_DEFAULT,
|
.gyro_anti_aliasing_lpf_hz = SETTING_GYRO_ANTI_ALIASING_LPF_HZ_DEFAULT,
|
||||||
.looptime = SETTING_LOOPTIME_DEFAULT,
|
.looptime = SETTING_LOOPTIME_DEFAULT,
|
||||||
#ifdef USE_DUAL_GYRO
|
#ifdef USE_DUAL_GYRO
|
||||||
|
@ -282,7 +281,7 @@ bool gyroInit(void)
|
||||||
sensorsSet(SENSOR_GYRO);
|
sensorsSet(SENSOR_GYRO);
|
||||||
|
|
||||||
// Driver initialisation
|
// Driver initialisation
|
||||||
gyroDev[0].lpf = gyroConfig()->gyro_lpf;
|
gyroDev[0].lpf = GYRO_LPF_256HZ;
|
||||||
gyroDev[0].requestedSampleIntervalUs = TASK_GYRO_LOOPTIME;
|
gyroDev[0].requestedSampleIntervalUs = TASK_GYRO_LOOPTIME;
|
||||||
gyroDev[0].sampleRateIntervalUs = TASK_GYRO_LOOPTIME;
|
gyroDev[0].sampleRateIntervalUs = TASK_GYRO_LOOPTIME;
|
||||||
gyroDev[0].initFn(&gyroDev[0]);
|
gyroDev[0].initFn(&gyroDev[0]);
|
||||||
|
|
|
@ -64,7 +64,6 @@ extern dynamicGyroNotchState_t dynamicGyroNotchState;
|
||||||
|
|
||||||
typedef struct gyroConfig_s {
|
typedef struct gyroConfig_s {
|
||||||
uint16_t looptime; // imu loop time in us
|
uint16_t looptime; // imu loop time in us
|
||||||
uint8_t gyro_lpf; // gyro LPF setting - values are driver specific, in case of invalid number, a reasonable default ~30-40HZ is chosen.
|
|
||||||
uint16_t gyro_anti_aliasing_lpf_hz;
|
uint16_t gyro_anti_aliasing_lpf_hz;
|
||||||
#ifdef USE_DUAL_GYRO
|
#ifdef USE_DUAL_GYRO
|
||||||
uint8_t gyro_to_use;
|
uint8_t gyro_to_use;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue