mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-17 21:35:44 +03:00
de-duplicate failsafe code. extract failsafe code to seperate files.
remove dependency on board.h and mw.h on a few files. Moved rx configuration paramaters into rxConfig in order to remove the dependency on config_t from the sbus rx code - sumd/spektrum to follow. Avoided use of YAW/PITCH/ROLL in some files since those constants are from an unrelated enum type. Replaced some magic numbers with constants to remove comments and improve code readability. Note, due to the tight coupling and global variable usage it was difficult to create a smaller commit.
This commit is contained in:
parent
d7eb416aa9
commit
0f02e12f40
26 changed files with 606 additions and 437 deletions
|
@ -1,8 +1,10 @@
|
|||
#include "board.h"
|
||||
#include "mw.h"
|
||||
|
||||
#include "flight_common.h"
|
||||
|
||||
#include "mw.h"
|
||||
|
||||
|
||||
uint16_t calibratingA = 0; // the calibration is done is the main loop. Calibrating decreases at each cycle down to 0, then we enter in a normal mode.
|
||||
|
||||
extern uint16_t InflightcalibratingA;
|
||||
|
@ -29,11 +31,11 @@ void ACC_Common(void)
|
|||
}
|
||||
// Calculate average, shift Z down by acc_1G and store values in EEPROM at end of calibration
|
||||
if (calibratingA == 1) {
|
||||
mcfg.accZero[ROLL] = (a[ROLL] + (CALIBRATING_ACC_CYCLES / 2)) / CALIBRATING_ACC_CYCLES;
|
||||
mcfg.accZero[PITCH] = (a[PITCH] + (CALIBRATING_ACC_CYCLES / 2)) / CALIBRATING_ACC_CYCLES;
|
||||
mcfg.accZero[YAW] = (a[YAW] + (CALIBRATING_ACC_CYCLES / 2)) / CALIBRATING_ACC_CYCLES - acc_1G;
|
||||
cfg.angleTrim[ROLL] = 0;
|
||||
cfg.angleTrim[PITCH] = 0;
|
||||
mcfg.accZero[GI_ROLL] = (a[GI_ROLL] + (CALIBRATING_ACC_CYCLES / 2)) / CALIBRATING_ACC_CYCLES;
|
||||
mcfg.accZero[GI_PITCH] = (a[GI_PITCH] + (CALIBRATING_ACC_CYCLES / 2)) / CALIBRATING_ACC_CYCLES;
|
||||
mcfg.accZero[GI_YAW] = (a[GI_YAW] + (CALIBRATING_ACC_CYCLES / 2)) / CALIBRATING_ACC_CYCLES - acc_1G;
|
||||
cfg.angleTrim[AI_ROLL] = 0;
|
||||
cfg.angleTrim[AI_PITCH] = 0;
|
||||
writeEEPROM(1, true); // write accZero in EEPROM
|
||||
}
|
||||
calibratingA--;
|
||||
|
@ -45,11 +47,11 @@ void ACC_Common(void)
|
|||
static int16_t angleTrim_saved[2] = { 0, 0 };
|
||||
// Saving old zeropoints before measurement
|
||||
if (InflightcalibratingA == 50) {
|
||||
accZero_saved[ROLL] = mcfg.accZero[ROLL];
|
||||
accZero_saved[PITCH] = mcfg.accZero[PITCH];
|
||||
accZero_saved[YAW] = mcfg.accZero[YAW];
|
||||
angleTrim_saved[ROLL] = cfg.angleTrim[ROLL];
|
||||
angleTrim_saved[PITCH] = cfg.angleTrim[PITCH];
|
||||
accZero_saved[GI_ROLL] = mcfg.accZero[GI_ROLL];
|
||||
accZero_saved[GI_PITCH] = mcfg.accZero[GI_PITCH];
|
||||
accZero_saved[GI_YAW] = mcfg.accZero[GI_YAW];
|
||||
angleTrim_saved[AI_ROLL] = cfg.angleTrim[AI_ROLL];
|
||||
angleTrim_saved[AI_PITCH] = cfg.angleTrim[AI_PITCH];
|
||||
}
|
||||
if (InflightcalibratingA > 0) {
|
||||
for (axis = 0; axis < 3; axis++) {
|
||||
|
@ -68,29 +70,29 @@ void ACC_Common(void)
|
|||
AccInflightCalibrationMeasurementDone = true;
|
||||
toggleBeep = 2; // buzzer for indicatiing the end of calibration
|
||||
// recover saved values to maintain current flight behavior until new values are transferred
|
||||
mcfg.accZero[ROLL] = accZero_saved[ROLL];
|
||||
mcfg.accZero[PITCH] = accZero_saved[PITCH];
|
||||
mcfg.accZero[YAW] = accZero_saved[YAW];
|
||||
cfg.angleTrim[ROLL] = angleTrim_saved[ROLL];
|
||||
cfg.angleTrim[PITCH] = angleTrim_saved[PITCH];
|
||||
mcfg.accZero[GI_ROLL] = accZero_saved[GI_ROLL];
|
||||
mcfg.accZero[GI_PITCH] = accZero_saved[GI_PITCH];
|
||||
mcfg.accZero[GI_YAW] = accZero_saved[GI_YAW];
|
||||
cfg.angleTrim[AI_ROLL] = angleTrim_saved[AI_ROLL];
|
||||
cfg.angleTrim[AI_PITCH] = angleTrim_saved[AI_PITCH];
|
||||
}
|
||||
InflightcalibratingA--;
|
||||
}
|
||||
// Calculate average, shift Z down by acc_1G and store values in EEPROM at end of calibration
|
||||
if (AccInflightCalibrationSavetoEEProm) { // the copter is landed, disarmed and the combo has been done again
|
||||
AccInflightCalibrationSavetoEEProm = false;
|
||||
mcfg.accZero[ROLL] = b[ROLL] / 50;
|
||||
mcfg.accZero[PITCH] = b[PITCH] / 50;
|
||||
mcfg.accZero[YAW] = b[YAW] / 50 - acc_1G; // for nunchuk 200=1G
|
||||
cfg.angleTrim[ROLL] = 0;
|
||||
cfg.angleTrim[PITCH] = 0;
|
||||
mcfg.accZero[GI_ROLL] = b[GI_ROLL] / 50;
|
||||
mcfg.accZero[GI_PITCH] = b[GI_PITCH] / 50;
|
||||
mcfg.accZero[GI_YAW] = b[GI_YAW] / 50 - acc_1G; // for nunchuk 200=1G
|
||||
cfg.angleTrim[AI_ROLL] = 0;
|
||||
cfg.angleTrim[AI_PITCH] = 0;
|
||||
writeEEPROM(1, true); // write accZero in EEPROM
|
||||
}
|
||||
}
|
||||
|
||||
accADC[ROLL] -= mcfg.accZero[ROLL];
|
||||
accADC[PITCH] -= mcfg.accZero[PITCH];
|
||||
accADC[YAW] -= mcfg.accZero[YAW];
|
||||
accADC[GI_ROLL] -= mcfg.accZero[GI_ROLL];
|
||||
accADC[GI_PITCH] -= mcfg.accZero[GI_PITCH];
|
||||
accADC[GI_YAW] -= mcfg.accZero[GI_YAW];
|
||||
}
|
||||
|
||||
void ACC_getADC(void)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue