diff --git a/src/main/flight/imu.c b/src/main/flight/imu.c index 74a4af8aec..27d5f4a0f7 100644 --- a/src/main/flight/imu.c +++ b/src/main/flight/imu.c @@ -425,12 +425,14 @@ static void imuCalculateEstimatedAttitude(void) imuCalculateAcceleration(deltaT); // rotate acc vector into earth frame } -void imuUpdate(rollAndPitchTrims_t *accelerometerTrims, uint8_t imuUpdateSensors) +void imuUpdateGyro(void) { - if (imuUpdateSensors == ONLY_GYRO || imuUpdateSensors == ACC_AND_GYRO) { - gyroUpdate(); - } - if (sensors(SENSOR_ACC) && (!imuUpdateSensors == ONLY_GYRO)) { + gyroUpdate(); +} + +void imuUpdateAcc(rollAndPitchTrims_t *accelerometerTrims) +{ + if (sensors(SENSOR_ACC)) { updateAccelerationReadings(accelerometerTrims); imuCalculateEstimatedAttitude(); } else { diff --git a/src/main/flight/imu.h b/src/main/flight/imu.h index 2fb0f425f4..9c086b04f5 100644 --- a/src/main/flight/imu.h +++ b/src/main/flight/imu.h @@ -66,12 +66,6 @@ typedef enum { ACCPROC_COPY } accProcessorState_e; -typedef enum { - ONLY_GYRO = 0, - ONLY_ACC, - ACC_AND_GYRO -} imuUpdateMode_e; - typedef struct accProcessor_s { accProcessorState_e state; } accProcessor_t; @@ -92,4 +86,5 @@ float calculateAccZLowPassFilterRCTimeConstant(float accz_lpf_cutoff); int16_t imuCalculateHeading(t_fp_vector *vec); void imuResetAccelerationSum(void); -void imuUpdate(rollAndPitchTrims_t *accelerometerTrims, uint8_t imuUpdateSensors); +void imuUpdateGyro(void); +void imuUpdateAcc(rollAndPitchTrims_t *accelerometerTrims); diff --git a/src/main/mw.c b/src/main/mw.c index adf5f7c505..acfbe93bcf 100644 --- a/src/main/mw.c +++ b/src/main/mw.c @@ -774,11 +774,11 @@ void loop(void) haveProcessedRxOnceBeforeLoop = false; + imuUpdateGyro(); + // Determine current flight mode. When no acc needed in pid calculations we should only read gyro to reduce latency - if (!flightModeFlags) { - imuUpdate(¤tProfile->accelerometerTrims, ONLY_GYRO); // When no level modes active read only gyro - } else { - imuUpdate(¤tProfile->accelerometerTrims, ACC_AND_GYRO); // When level modes active read gyro and acc + if (flightModeFlags) { + imuUpdateAcc(¤tProfile->accelerometerTrims); // When level modes active read gyro and acc } // Measure loop rate just after reading the sensors @@ -859,7 +859,7 @@ void loop(void) // When no level modes active read acc after motor update if (!flightModeFlags) { - imuUpdate(¤tProfile->accelerometerTrims, ONLY_ACC); + imuUpdateAcc(¤tProfile->accelerometerTrims); } #ifdef BLACKBOX