mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-26 09:45:37 +03:00
Set FAST_RAM to go into .fastram_data by default. Added FAST_RAM_NOINIT
This commit is contained in:
parent
35d6067a64
commit
d8dd6f29f8
13 changed files with 93 additions and 92 deletions
|
@ -82,7 +82,7 @@
|
|||
#endif
|
||||
|
||||
|
||||
FAST_RAM acc_t acc; // acc access functions
|
||||
FAST_RAM_ZERO_INIT acc_t acc; // acc access functions
|
||||
|
||||
static float accumulatedMeasurements[XYZ_AXIS_COUNT];
|
||||
static int accumulatedMeasurementCount;
|
||||
|
|
|
@ -83,18 +83,18 @@
|
|||
#define USE_GYRO_SLEW_LIMITER
|
||||
#endif
|
||||
|
||||
FAST_RAM gyro_t gyro;
|
||||
static FAST_RAM uint8_t gyroDebugMode;
|
||||
FAST_RAM_ZERO_INIT gyro_t gyro;
|
||||
static FAST_RAM_ZERO_INIT uint8_t gyroDebugMode;
|
||||
|
||||
static uint8_t gyroToUse = 0;
|
||||
|
||||
#ifdef USE_GYRO_OVERFLOW_CHECK
|
||||
static FAST_RAM uint8_t overflowAxisMask;
|
||||
static FAST_RAM_ZERO_INIT uint8_t overflowAxisMask;
|
||||
#endif
|
||||
static FAST_RAM float accumulatedMeasurements[XYZ_AXIS_COUNT];
|
||||
static FAST_RAM float gyroPrevious[XYZ_AXIS_COUNT];
|
||||
static FAST_RAM timeUs_t accumulatedMeasurementTimeUs;
|
||||
static FAST_RAM timeUs_t accumulationLastTimeSampledUs;
|
||||
static FAST_RAM_ZERO_INIT float accumulatedMeasurements[XYZ_AXIS_COUNT];
|
||||
static FAST_RAM_ZERO_INIT float gyroPrevious[XYZ_AXIS_COUNT];
|
||||
static FAST_RAM_ZERO_INIT timeUs_t accumulatedMeasurementTimeUs;
|
||||
static FAST_RAM_ZERO_INIT timeUs_t accumulationLastTimeSampledUs;
|
||||
|
||||
static bool gyroHasOverflowProtection = true;
|
||||
|
||||
|
@ -152,9 +152,9 @@ typedef struct gyroSensor_s {
|
|||
|
||||
} gyroSensor_t;
|
||||
|
||||
STATIC_UNIT_TESTED FAST_RAM gyroSensor_t gyroSensor1;
|
||||
STATIC_UNIT_TESTED FAST_RAM_ZERO_INIT gyroSensor_t gyroSensor1;
|
||||
#ifdef USE_DUAL_GYRO
|
||||
STATIC_UNIT_TESTED FAST_RAM gyroSensor_t gyroSensor2;
|
||||
STATIC_UNIT_TESTED FAST_RAM_ZERO_INIT gyroSensor_t gyroSensor2;
|
||||
#endif
|
||||
|
||||
#ifdef UNIT_TEST
|
||||
|
|
|
@ -57,27 +57,27 @@
|
|||
|
||||
#define BIQUAD_Q 1.0f / sqrtf(2.0f) // quality factor - butterworth
|
||||
|
||||
static FAST_RAM uint16_t fftSamplingScale;
|
||||
static FAST_RAM_ZERO_INIT uint16_t fftSamplingScale;
|
||||
|
||||
// gyro data used for frequency analysis
|
||||
static float FAST_RAM gyroData[XYZ_AXIS_COUNT][FFT_WINDOW_SIZE];
|
||||
static float FAST_RAM_ZERO_INIT gyroData[XYZ_AXIS_COUNT][FFT_WINDOW_SIZE];
|
||||
|
||||
static FAST_RAM arm_rfft_fast_instance_f32 fftInstance;
|
||||
static FAST_RAM float fftData[FFT_WINDOW_SIZE];
|
||||
static FAST_RAM float rfftData[FFT_WINDOW_SIZE];
|
||||
static FAST_RAM gyroFftData_t fftResult[XYZ_AXIS_COUNT];
|
||||
static FAST_RAM_ZERO_INIT arm_rfft_fast_instance_f32 fftInstance;
|
||||
static FAST_RAM_ZERO_INIT float fftData[FFT_WINDOW_SIZE];
|
||||
static FAST_RAM_ZERO_INIT float rfftData[FFT_WINDOW_SIZE];
|
||||
static FAST_RAM_ZERO_INIT gyroFftData_t fftResult[XYZ_AXIS_COUNT];
|
||||
|
||||
// use a circular buffer for the last FFT_WINDOW_SIZE samples
|
||||
static FAST_RAM uint16_t fftIdx;
|
||||
static FAST_RAM_ZERO_INIT uint16_t fftIdx;
|
||||
|
||||
// bandpass filter gyro data
|
||||
static FAST_RAM biquadFilter_t fftGyroFilter[XYZ_AXIS_COUNT];
|
||||
static FAST_RAM_ZERO_INIT biquadFilter_t fftGyroFilter[XYZ_AXIS_COUNT];
|
||||
|
||||
// filter for smoothing frequency estimation
|
||||
static FAST_RAM biquadFilter_t fftFreqFilter[XYZ_AXIS_COUNT];
|
||||
static FAST_RAM_ZERO_INIT biquadFilter_t fftFreqFilter[XYZ_AXIS_COUNT];
|
||||
|
||||
// Hanning window, see https://en.wikipedia.org/wiki/Window_function#Hann_.28Hanning.29_window
|
||||
static FAST_RAM float hanningWindow[FFT_WINDOW_SIZE];
|
||||
static FAST_RAM_ZERO_INIT float hanningWindow[FFT_WINDOW_SIZE];
|
||||
|
||||
void initHanning(void)
|
||||
{
|
||||
|
@ -128,10 +128,10 @@ const gyroFftData_t *gyroFftData(int axis)
|
|||
void gyroDataAnalyse(const gyroDev_t *gyroDev, biquadFilter_t *notchFilterDyn)
|
||||
{
|
||||
// accumulator for oversampled data => no aliasing and less noise
|
||||
static FAST_RAM float fftAcc[XYZ_AXIS_COUNT];
|
||||
static FAST_RAM uint32_t fftAccCount;
|
||||
static FAST_RAM_ZERO_INIT float fftAcc[XYZ_AXIS_COUNT];
|
||||
static FAST_RAM_ZERO_INIT uint32_t fftAccCount;
|
||||
|
||||
static FAST_RAM uint32_t gyroDataAnalyseUpdateTicks;
|
||||
static FAST_RAM_ZERO_INIT uint32_t gyroDataAnalyseUpdateTicks;
|
||||
|
||||
// if gyro sampling is > 1kHz, accumulate multiple samples
|
||||
for (int axis = 0; axis < XYZ_AXIS_COUNT; axis++) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue