mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-25 17:25:20 +03:00
Use slightly flatter directory structure since some developers did not
like too many folders. Extracted code from some files into separate files to fit with the new layout.
This commit is contained in:
parent
39adc34278
commit
3bd4cd2ed2
84 changed files with 732 additions and 645 deletions
51
src/sensors_gyro.c
Normal file
51
src/sensors_gyro.c
Normal file
|
@ -0,0 +1,51 @@
|
|||
#include "board.h"
|
||||
#include "mw.h"
|
||||
|
||||
#include "maths.h"
|
||||
|
||||
void GYRO_Common(void)
|
||||
{
|
||||
int axis;
|
||||
static int32_t g[3];
|
||||
static stdev_t var[3];
|
||||
|
||||
if (calibratingG > 0) {
|
||||
for (axis = 0; axis < 3; axis++) {
|
||||
// Reset g[axis] at start of calibration
|
||||
if (calibratingG == CALIBRATING_GYRO_CYCLES) {
|
||||
g[axis] = 0;
|
||||
devClear(&var[axis]);
|
||||
}
|
||||
// Sum up 1000 readings
|
||||
g[axis] += gyroADC[axis];
|
||||
devPush(&var[axis], gyroADC[axis]);
|
||||
// Clear global variables for next reading
|
||||
gyroADC[axis] = 0;
|
||||
gyroZero[axis] = 0;
|
||||
if (calibratingG == 1) {
|
||||
float dev = devStandardDeviation(&var[axis]);
|
||||
// check deviation and startover if idiot was moving the model
|
||||
if (mcfg.moron_threshold && dev > mcfg.moron_threshold) {
|
||||
calibratingG = CALIBRATING_GYRO_CYCLES;
|
||||
devClear(&var[0]);
|
||||
devClear(&var[1]);
|
||||
devClear(&var[2]);
|
||||
g[0] = g[1] = g[2] = 0;
|
||||
continue;
|
||||
}
|
||||
gyroZero[axis] = (g[axis] + (CALIBRATING_GYRO_CYCLES / 2)) / CALIBRATING_GYRO_CYCLES;
|
||||
blinkLED(10, 15, 1);
|
||||
}
|
||||
}
|
||||
calibratingG--;
|
||||
}
|
||||
for (axis = 0; axis < 3; axis++)
|
||||
gyroADC[axis] -= gyroZero[axis];
|
||||
}
|
||||
|
||||
void Gyro_getADC(void)
|
||||
{
|
||||
// range: +/- 8192; +/- 2000 deg/sec
|
||||
gyro.read(gyroADC);
|
||||
GYRO_Common();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue