From 4402853e993c9dcf0bcb7ef88e6aafe6d427e7a6 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Sat, 10 Sep 2016 22:03:38 -0400 Subject: [PATCH] auto-sync --- firmware/config/engines/dodge_neon.cpp | 4 ++-- firmware/controllers/math/biquad.cpp | 5 +++++ firmware/controllers/math/biquad.h | 1 + firmware/hw_layer/adc_inputs.cpp | 10 +++++++++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/firmware/config/engines/dodge_neon.cpp b/firmware/config/engines/dodge_neon.cpp index d517033b16..b92663db21 100644 --- a/firmware/config/engines/dodge_neon.cpp +++ b/firmware/config/engines/dodge_neon.cpp @@ -409,8 +409,8 @@ void setDodgeNeonNGCEngineConfiguration(DECLARE_ENGINE_PARAMETER_F) { * TPS */ engineConfiguration->tpsAdcChannel = EFI_ADC_2; - engineConfiguration->tpsMax = 125; // convert 12to10 bit (ADC/4) - engineConfiguration->tpsMin = 625; // convert 12to10 bit (ADC/4) + engineConfiguration->tpsMax = 625; // convert 12to10 bit (ADC/4) + engineConfiguration->tpsMin = 125; // convert 12to10 bit (ADC/4) /** * IAT D15/W7 diff --git a/firmware/controllers/math/biquad.cpp b/firmware/controllers/math/biquad.cpp index 7d24f32ce7..cac33055f1 100644 --- a/firmware/controllers/math/biquad.cpp +++ b/firmware/controllers/math/biquad.cpp @@ -17,6 +17,11 @@ Biquad::Biquad() { z1 = z2 = 0; } +void Biquad::initValue(float input) { + z1 = input * (1 - a0); + z2 = input * (1 - a0 - a1 + b1); +} + float Biquad::getValue(float input) { float result = input * a0 + z1; z1 = input * a1 + z2 - b1 * result; diff --git a/firmware/controllers/math/biquad.h b/firmware/controllers/math/biquad.h index 2a2edd462b..6782a26e4e 100644 --- a/firmware/controllers/math/biquad.h +++ b/firmware/controllers/math/biquad.h @@ -11,6 +11,7 @@ class Biquad { public: Biquad(); + void initValue(float input); float getValue(float input); float a0, a1, a2, b1, b2; diff --git a/firmware/hw_layer/adc_inputs.cpp b/firmware/hw_layer/adc_inputs.cpp index 1205b85b3b..98beab7cdf 100644 --- a/firmware/hw_layer/adc_inputs.cpp +++ b/firmware/hw_layer/adc_inputs.cpp @@ -25,11 +25,13 @@ #include "board_test.h" #include "engine_controller.h" #include "maf.h" +#include "biquad.h" /* Depth of the conversion buffer, channels are sampled X times each.*/ #define ADC_BUF_DEPTH_SLOW 8 #define ADC_BUF_DEPTH_FAST 4 +Biquad biq[ADC_MAX_CHANNELS_COUNT]; static adc_channel_mode_e adcHwChannelEnabled[HW_MAX_ADC_INDEX]; static const char * adcHwChannelUsage[HW_MAX_ADC_INDEX]; @@ -489,8 +491,14 @@ static void adc_callback_slow(ADCDriver *adcp, adcsample_t *buffer, size_t n) { for (int i = 0; i < slowAdc.size(); i++) { int value = getAvgAdcValue(i, slowAdc.samples, ADC_BUF_DEPTH_SLOW, slowAdc.size()); adcsample_t prev = slowAdc.values.adc_data[i]; - slowAdc.values.adc_data[i] = (slowAdcCounter == 0) ? value : + float result = (slowAdcCounter == 0) ? value : CONFIG(slowAdcAlpha) * value + (1 - CONFIG(slowAdcAlpha)) * prev; +// if (slowAdcCounter == 0) { +// biq[i].initValue(value); +// } +// float result = biq[i].getValue(value); + + slowAdc.values.adc_data[i] = result; } slowAdcCounter++; }