Add 2.6KHZ Target options (For now only COLIBRI_RACE)

This commit is contained in:
borisbstyle 2016-01-12 17:41:44 +01:00
parent 77d9d1d2b9
commit 29a936e773
3 changed files with 55 additions and 24 deletions

View File

@ -51,33 +51,53 @@ void setBiQuadCoefficients(int type, biquad_t *state) {
/* set coefficients */ /* set coefficients */
switch(type) { switch(type) {
case(GYRO_FILTER): case(GYRO_FILTER):
if (targetLooptime == 500) { switch (targetLooptime) {
state->a0= 0.007820199; case(SAMPLE_RATE_2KHZ):
state->a1= 0.015640399; state->a0= 0.007820199;
state->a2= 0.007820199; state->a1= 0.015640399;
state->a3= -1.73472382; state->a2= 0.007820199;
state->a4= 0.766004619; state->a3= -1.73472382;
} else { state->a4= 0.766004619;
state->a0= 0.027859711; break;
state->a1= 0.055719422; case(SAMPLE_RATE_2K6HZ):
state->a2= 0.027859711; state->a0= 0.004538377;
state->a3= -1.47547752; state->a1= 0.009076754;
state->a4= 0.586916365; state->a2= 0.004538377;
state->a3= -1.80059391;
state->a4= 0.818747415;
break;
default:
case(SAMPLE_RATE_1KHZ):
state->a0= 0.027859711;
state->a1= 0.055719422;
state->a2= 0.027859711;
state->a3= -1.47547752;
state->a4= 0.586916365;
} }
break; break;
case(DELTA_FILTER): case(DELTA_FILTER):
if (targetLooptime == 500) { switch (targetLooptime) {
state->a0= 0.003621679; case(SAMPLE_RATE_2KHZ):
state->a1= 0.007243357; state->a0= 0.003621679;
state->a2= 0.003621679; state->a1= 0.007243357;
state->a3= -1.82269350; state->a2= 0.003621679;
state->a4= 0.837180216; state->a3= -1.82269350;
} else { state->a4= 0.837180216;
state->a0= 0.013359181; break;
state->a1= 0.026718362; case(SAMPLE_RATE_2K6HZ):
state->a2= 0.013359181; state->a0= 0.002081573;
state->a3= -1.64745762; state->a1= 0.004163147;
state->a4= 0.700894342; state->a2= 0.002081573;
state->a3= -1.86685796;
state->a4= 0.875184256;
break;
default:
case(SAMPLE_RATE_1KHZ):
state->a0= 0.013359181;
state->a1= 0.026718362;
state->a2= 0.013359181;
state->a3= -1.64745762;
state->a4= 0.700894342;
} }
} }
} }

View File

@ -35,6 +35,13 @@ typedef enum {
DELTA_FILTER DELTA_FILTER
} filterType_e; } filterType_e;
typedef enum {
SAMPLE_RATE_1KHZ = 1000,
SAMPLE_RATE_2KHZ = 500,
SAMPLE_RATE_2K6HZ = 375,
SAMPLE_RATE_4KHZ = 250
} sampleRates_e;
float filterApplyPt1(float input, filterStatePt1_t *filter, uint8_t f_cut, float dt); float filterApplyPt1(float input, filterStatePt1_t *filter, uint8_t f_cut, float dt);
float applyBiQuadFilter(float sample, biquad_t * b); float applyBiQuadFilter(float sample, biquad_t * b);
void setBiQuadCoefficients(int type, biquad_t *state); void setBiQuadCoefficients(int type, biquad_t *state);

View File

@ -47,7 +47,11 @@ void gyroUpdateSampleRate(uint8_t lpf) {
if (!lpf) { if (!lpf) {
gyroSamplePeriod = 125; gyroSamplePeriod = 125;
#ifdef STM32F303xC #ifdef STM32F303xC
#ifdef COLIBRI_RACE
gyroSyncDenominator = 3; // Sample every 3d gyro measurement 2,6khz
#else
gyroSyncDenominator = 4; // Sample every 4th gyro measurement 2khz gyroSyncDenominator = 4; // Sample every 4th gyro measurement 2khz
#endif
#else #else
if (!sensors(SENSOR_ACC) && !sensors(SENSOR_BARO) && !sensors(SENSOR_MAG)) { if (!sensors(SENSOR_ACC) && !sensors(SENSOR_BARO) && !sensors(SENSOR_MAG)) {
gyroSyncDenominator = 4; // Sample every 4th gyro measurement 2khz gyroSyncDenominator = 4; // Sample every 4th gyro measurement 2khz