1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-14 11:59:58 +03:00

Fixed potentially incorrect calculation in ACC calibration if non-default cycle number is used.

This commit is contained in:
mikeller 2019-11-16 12:45:58 +13:00
parent a7cd21e632
commit a21d0f5d31
10 changed files with 14 additions and 21 deletions

View file

@ -164,7 +164,6 @@
#include "sensors/esc_sensor.h" #include "sensors/esc_sensor.h"
#include "sensors/gyro.h" #include "sensors/gyro.h"
#include "sensors/initialisation.h" #include "sensors/initialisation.h"
#include "sensors/sensors.h"
#include "telemetry/telemetry.h" #include "telemetry/telemetry.h"
@ -875,7 +874,7 @@ void init(void)
#ifdef USE_ACC #ifdef USE_ACC
if (mixerConfig()->mixerMode == MIXER_GIMBAL) { if (mixerConfig()->mixerMode == MIXER_GIMBAL) {
accSetCalibrationCycles(CALIBRATING_ACC_CYCLES); accStartCalibration();
} }
#endif #endif
gyroStartCalibration(false); gyroStartCalibration(false);

View file

@ -63,7 +63,6 @@
#include "sensors/barometer.h" #include "sensors/barometer.h"
#include "sensors/battery.h" #include "sensors/battery.h"
#include "sensors/gyro.h" #include "sensors/gyro.h"
#include "sensors/sensors.h"
#include "rc_controls.h" #include "rc_controls.h"
@ -278,7 +277,7 @@ void processRcStickPositions()
#ifdef USE_ACC #ifdef USE_ACC
if (rcSticks == THR_HI + YAW_LO + PIT_LO + ROL_CE) { if (rcSticks == THR_HI + YAW_LO + PIT_LO + ROL_CE) {
// Calibrating Acc // Calibrating Acc
accSetCalibrationCycles(CALIBRATING_ACC_CYCLES); accStartCalibration();
return; return;
} }
#endif #endif

View file

@ -123,16 +123,14 @@
#include "scheduler/scheduler.h" #include "scheduler/scheduler.h"
#include "sensors/battery.h"
#include "sensors/acceleration.h" #include "sensors/acceleration.h"
#include "sensors/barometer.h" #include "sensors/barometer.h"
#include "sensors/battery.h"
#include "sensors/boardalignment.h" #include "sensors/boardalignment.h"
#include "sensors/esc_sensor.h"
#include "sensors/compass.h" #include "sensors/compass.h"
#include "sensors/esc_sensor.h"
#include "sensors/gyro.h" #include "sensors/gyro.h"
#include "sensors/rangefinder.h" #include "sensors/rangefinder.h"
#include "sensors/sensors.h"
#include "telemetry/telemetry.h" #include "telemetry/telemetry.h"
@ -2532,7 +2530,7 @@ static mspResult_e mspProcessInCommand(mspDescriptor_t srcDesc, uint8_t cmdMSP,
#ifdef USE_ACC #ifdef USE_ACC
case MSP_ACC_CALIBRATION: case MSP_ACC_CALIBRATION:
if (!ARMING_FLAG(ARMED)) if (!ARMING_FLAG(ARMED))
accSetCalibrationCycles(CALIBRATING_ACC_CYCLES); accStartCalibration();
break; break;
#endif #endif

View file

@ -80,12 +80,10 @@
#include "sensors/gyro.h" #include "sensors/gyro.h"
#include "sensors/sensors.h" #include "sensors/sensors.h"
#ifdef USE_HARDWARE_REVISION_DETECTION
#include "hardware_revision.h"
#endif
#include "acceleration.h" #include "acceleration.h"
#define CALIBRATING_ACC_CYCLES 400
FAST_RAM_ZERO_INIT acc_t acc; // acc access functions FAST_RAM_ZERO_INIT acc_t acc; // acc access functions
void resetRollAndPitchTrims(rollAndPitchTrims_t *rollAndPitchTrims) void resetRollAndPitchTrims(rollAndPitchTrims_t *rollAndPitchTrims)
@ -360,9 +358,9 @@ bool accInit(uint32_t gyroSamplingInverval)
return true; return true;
} }
void accSetCalibrationCycles(uint16_t calibrationCyclesRequired) void accStartCalibration(void)
{ {
calibratingA = calibrationCyclesRequired; calibratingA = CALIBRATING_ACC_CYCLES;
} }
bool accIsCalibrationComplete(void) bool accIsCalibrationComplete(void)

View file

@ -79,7 +79,7 @@ PG_DECLARE(accelerometerConfig_t, accelerometerConfig);
bool accInit(uint32_t gyroTargetLooptime); bool accInit(uint32_t gyroTargetLooptime);
bool accIsCalibrationComplete(void); bool accIsCalibrationComplete(void);
void accSetCalibrationCycles(uint16_t calibrationCyclesRequired); void accStartCalibration(void);
void resetRollAndPitchTrims(rollAndPitchTrims_t *rollAndPitchTrims); void resetRollAndPitchTrims(rollAndPitchTrims_t *rollAndPitchTrims);
void accUpdate(timeUs_t currentTimeUs, rollAndPitchTrims_t *rollAndPitchTrims); void accUpdate(timeUs_t currentTimeUs, rollAndPitchTrims_t *rollAndPitchTrims);
bool accGetAccumulationAverage(float *accumulation); bool accGetAccumulationAverage(float *accumulation);

View file

@ -44,7 +44,6 @@ typedef union flightDynamicsTrims_u {
flightDynamicsTrims_def_t values; flightDynamicsTrims_def_t values;
} flightDynamicsTrims_t; } flightDynamicsTrims_t;
#define CALIBRATING_ACC_CYCLES 400
#define CALIBRATING_BARO_CYCLES 200 // 10 seconds init_delay + 200 * 25 ms = 15 seconds before ground pressure settles #define CALIBRATING_BARO_CYCLES 200 // 10 seconds init_delay + 200 * 25 ms = 15 seconds before ground pressure settles
typedef enum { typedef enum {

View file

@ -536,7 +536,7 @@ static bool bstSlaveProcessWriteCommand(uint8_t bstWriteCommand)
#if defined(USE_ACC) #if defined(USE_ACC)
case BST_ACC_CALIBRATION: case BST_ACC_CALIBRATION:
if (!ARMING_FLAG(ARMED)) if (!ARMING_FLAG(ARMED))
accSetCalibrationCycles(CALIBRATING_ACC_CYCLES); accStartCalibration();
break; break;
#endif #endif
case BST_MAG_CALIBRATION: case BST_MAG_CALIBRATION:

View file

@ -1070,7 +1070,7 @@ extern "C" {
void blackboxUpdate(timeUs_t) {} void blackboxUpdate(timeUs_t) {}
void transponderUpdate(timeUs_t) {} void transponderUpdate(timeUs_t) {}
void GPS_reset_home_position(void) {} void GPS_reset_home_position(void) {}
void accSetCalibrationCycles(uint16_t) {} void accStartCalibration(void) {}
void baroSetCalibrationCycles(uint16_t) {} void baroSetCalibrationCycles(uint16_t) {}
void changePidProfile(uint8_t) {} void changePidProfile(uint8_t) {}
void changeControlRateProfile(uint8_t) {} void changeControlRateProfile(uint8_t) {}

View file

@ -610,7 +610,7 @@ void saveConfigAndNotify(void) {}
void initRcProcessing(void) {} void initRcProcessing(void) {}
void changePidProfile(uint8_t) {} void changePidProfile(uint8_t) {}
void pidInitConfig(const pidProfile_t *) {} void pidInitConfig(const pidProfile_t *) {}
void accSetCalibrationCycles(uint16_t) {} void accStartCalibration(void) {}
void gyroStartCalibration(bool isFirstArmingCalibration) void gyroStartCalibration(bool isFirstArmingCalibration)
{ {
UNUSED(isFirstArmingCalibration); UNUSED(isFirstArmingCalibration);

View file

@ -164,7 +164,7 @@ extern "C" {
void blackboxUpdate(timeUs_t) {} void blackboxUpdate(timeUs_t) {}
void transponderUpdate(timeUs_t) {} void transponderUpdate(timeUs_t) {}
void GPS_reset_home_position(void) {} void GPS_reset_home_position(void) {}
void accSetCalibrationCycles(uint16_t) {} void accStartCalibration(void) {}
void baroSetCalibrationCycles(uint16_t) {} void baroSetCalibrationCycles(uint16_t) {}
void changePidProfile(uint8_t) {} void changePidProfile(uint8_t) {}
void changeControlRateProfile(uint8_t) {} void changeControlRateProfile(uint8_t) {}