From b3596f89695e4ce7d85785f36cd4cf9046387963 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Fri, 2 Oct 2020 17:49:56 -0700 Subject: [PATCH] configure all sample times - fix MRE knock sampling (#1841) * configure all sample times * smpr 1 vs smpr 2 * man I can't type Co-authored-by: Matthew Kennedy --- .../config/boards/microrusefi/knock_config.h | 8 ----- .../controllers/sensors/software_knock.cpp | 36 ++++++++++++++----- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/firmware/config/boards/microrusefi/knock_config.h b/firmware/config/boards/microrusefi/knock_config.h index 46d78b9bd8..5de7633707 100644 --- a/firmware/config/boards/microrusefi/knock_config.h +++ b/firmware/config/boards/microrusefi/knock_config.h @@ -7,14 +7,6 @@ #define KNOCK_ADC_CH1 ADC_CHANNEL_IN3 #define KNOCK_PIN_CH1 GPIOA_3 -// knock 2 - pin PF5 NOT used! - not used for MRE -#define KNOCK_ADC_CH2 ADC_CHANNEL_IN15 -#define KNOCK_PIN_CH2 GPIOF_5 - // Sample rate & time - depends on the exact MCU #define KNOCK_SAMPLE_TIME ADC_SAMPLE_84 #define KNOCK_SAMPLE_RATE (STM32_PCLK2 / (4 * (84 + 12))) - -#ifndef MRE_SW_KNOCK_ADC - #define MRE_SW_KNOCK_ADC -#endif diff --git a/firmware/controllers/sensors/software_knock.cpp b/firmware/controllers/sensors/software_knock.cpp index 6de391281f..07c46c4d18 100644 --- a/firmware/controllers/sensors/software_knock.cpp +++ b/firmware/controllers/sensors/software_knock.cpp @@ -38,15 +38,33 @@ static void completionCallback(ADCDriver* adcp, adcsample_t*, size_t) { static void errorCallback(ADCDriver*, adcerror_t err) { } +static const uint32_t smpr1 = + ADC_SMPR1_SMP_AN10(KNOCK_SAMPLE_TIME) | + ADC_SMPR1_SMP_AN11(KNOCK_SAMPLE_TIME) | + ADC_SMPR1_SMP_AN12(KNOCK_SAMPLE_TIME) | + ADC_SMPR1_SMP_AN13(KNOCK_SAMPLE_TIME) | + ADC_SMPR1_SMP_AN14(KNOCK_SAMPLE_TIME) | + ADC_SMPR1_SMP_AN15(KNOCK_SAMPLE_TIME); + +static const uint32_t smpr2 = + ADC_SMPR2_SMP_AN0(KNOCK_SAMPLE_TIME) | + ADC_SMPR2_SMP_AN1(KNOCK_SAMPLE_TIME) | + ADC_SMPR2_SMP_AN2(KNOCK_SAMPLE_TIME) | + ADC_SMPR2_SMP_AN3(KNOCK_SAMPLE_TIME) | + ADC_SMPR2_SMP_AN4(KNOCK_SAMPLE_TIME) | + ADC_SMPR2_SMP_AN5(KNOCK_SAMPLE_TIME) | + ADC_SMPR2_SMP_AN6(KNOCK_SAMPLE_TIME) | + ADC_SMPR2_SMP_AN7(KNOCK_SAMPLE_TIME) | + ADC_SMPR2_SMP_AN8(KNOCK_SAMPLE_TIME) | + ADC_SMPR2_SMP_AN9(KNOCK_SAMPLE_TIME); + static const ADCConversionGroup adcConvGroupCh1 = { FALSE, 1, &completionCallback, &errorCallback, 0, ADC_CR2_SWSTART, -#ifdef MRE_SW_KNOCK_ADC - ADC_SMPR2_SMP_AN3(KNOCK_SAMPLE_TIME), // sample times for channels 10...18 -#else - ADC_SMPR1_SMP_AN14(KNOCK_SAMPLE_TIME), // sample times for channels 10...18 -#endif - 0, + // sample times for channels 10...18 + smpr1, + // sample times for channels 0...9 + smpr2, 0, // htr 0, // ltr @@ -61,8 +79,10 @@ static const ADCConversionGroup adcConvGroupCh1 = { FALSE, 1, &completionCallbac static const ADCConversionGroup adcConvGroupCh2 = { FALSE, 1, &completionCallback, &errorCallback, 0, ADC_CR2_SWSTART, - ADC_SMPR1_SMP_AN14(KNOCK_SAMPLE_TIME), // sample times for channels 10...18 - 0, + // sample times for channels 10...18 + smpr1, + // sample times for channels 0...9 + smpr2, 0, // htr 0, // ltr