Baro Jitter Prevention // Enabled by default
This commit is contained in:
parent
a2b795580b
commit
e7ce0193ce
|
@ -412,11 +412,7 @@ static void resetConf(void)
|
||||||
// xxx_hardware: 0:default/autodetect, 1: disable
|
// xxx_hardware: 0:default/autodetect, 1: disable
|
||||||
masterConfig.mag_hardware = 1;
|
masterConfig.mag_hardware = 1;
|
||||||
|
|
||||||
#ifdef IRCFUSIONF3
|
|
||||||
masterConfig.baro_hardware = 0;
|
|
||||||
#else
|
|
||||||
masterConfig.baro_hardware = 1;
|
masterConfig.baro_hardware = 1;
|
||||||
#endif
|
|
||||||
|
|
||||||
resetBatteryConfig(&masterConfig.batteryConfig);
|
resetBatteryConfig(&masterConfig.batteryConfig);
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,7 @@ enum {
|
||||||
#define IBATINTERVAL (6 * 3500)
|
#define IBATINTERVAL (6 * 3500)
|
||||||
#define GYRO_WATCHDOG_DELAY 100 // Watchdog for boards without interrupt for gyro
|
#define GYRO_WATCHDOG_DELAY 100 // Watchdog for boards without interrupt for gyro
|
||||||
#define PREVENT_RX_PROCESS_PRE_LOOP_TRIGGER 80 // Prevent RX processing before expected loop trigger
|
#define PREVENT_RX_PROCESS_PRE_LOOP_TRIGGER 80 // Prevent RX processing before expected loop trigger
|
||||||
|
#define PREVENT_BARO_READ_PRE_LOOP_TRIGGER 150 // Prevent BARO processing before expected loop trigger
|
||||||
#define GYRO_RATE 0.001f // Gyro refresh rate 1khz
|
#define GYRO_RATE 0.001f // Gyro refresh rate 1khz
|
||||||
|
|
||||||
uint32_t currentTime = 0;
|
uint32_t currentTime = 0;
|
||||||
|
@ -479,7 +480,7 @@ typedef enum {
|
||||||
#define PERIODIC_TASK_COUNT (UPDATE_DISPLAY_TASK + 1)
|
#define PERIODIC_TASK_COUNT (UPDATE_DISPLAY_TASK + 1)
|
||||||
|
|
||||||
|
|
||||||
void executePeriodicTasks(void)
|
void executePeriodicTasks(bool skipBaroUpdate)
|
||||||
{
|
{
|
||||||
static int periodicTaskIndex = 0;
|
static int periodicTaskIndex = 0;
|
||||||
|
|
||||||
|
@ -494,7 +495,7 @@ void executePeriodicTasks(void)
|
||||||
|
|
||||||
#ifdef BARO
|
#ifdef BARO
|
||||||
case UPDATE_BARO_TASK:
|
case UPDATE_BARO_TASK:
|
||||||
if (sensors(SENSOR_BARO)) {
|
if (sensors(SENSOR_BARO) && !(skipBaroUpdate)) {
|
||||||
baroUpdate(currentTime);
|
baroUpdate(currentTime);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -713,6 +714,7 @@ void loop(void)
|
||||||
{
|
{
|
||||||
static uint32_t loopTime;
|
static uint32_t loopTime;
|
||||||
static bool haveProcessedRxOnceBeforeLoop = false;
|
static bool haveProcessedRxOnceBeforeLoop = false;
|
||||||
|
bool skipBaroUpdate = false;
|
||||||
|
|
||||||
#if defined(BARO) || defined(SONAR)
|
#if defined(BARO) || defined(SONAR)
|
||||||
static bool haveProcessedAnnexCodeOnce = false;
|
static bool haveProcessedAnnexCodeOnce = false;
|
||||||
|
@ -744,8 +746,12 @@ void loop(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
if ((int32_t)(currentTime - (loopTime - PREVENT_BARO_READ_PRE_LOOP_TRIGGER)) >= 0) {
|
||||||
|
skipBaroUpdate = true;
|
||||||
|
}
|
||||||
|
|
||||||
// not processing rx this iteration
|
// not processing rx this iteration
|
||||||
executePeriodicTasks();
|
executePeriodicTasks(skipBaroUpdate);
|
||||||
|
|
||||||
// if GPS feature is enabled, gpsThread() will be called at some intervals to check for stuck
|
// if GPS feature is enabled, gpsThread() will be called at some intervals to check for stuck
|
||||||
// hardware, wrong baud rates, init GPS if needed, etc. Don't use SENSOR_GPS here as gpsThread() can and will
|
// hardware, wrong baud rates, init GPS if needed, etc. Don't use SENSOR_GPS here as gpsThread() can and will
|
||||||
|
|
Loading…
Reference in New Issue