From e6720ca65eb8ab1e4a2c0f32c615516eedde22a4 Mon Sep 17 00:00:00 2001 From: cfif Date: Wed, 13 May 2026 17:48:21 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BB=D0=B0=D1=82=D1=8B=20=D0=BD?= =?UTF-8?q?=D0=B0=20V2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AdcTasks.c | 227 +++++++++++++++++++++++++++++++++++------------------ AdcTasks.h | 4 + 2 files changed, 154 insertions(+), 77 deletions(-) diff --git a/AdcTasks.c b/AdcTasks.c index 97fc8ed..e1aa3a2 100644 --- a/AdcTasks.c +++ b/AdcTasks.c @@ -28,7 +28,6 @@ void Adc_0_Init(tAdc0Task *env, env->queueRandom = osMessageQueueNew(10, 4, NULL); - ADC_Filter_Init(&env->ADC0_Filter_data.Sensor_Ambient_Temp, MAX_ADC_FILTER_SIZE); ADC_Filter_Init(&env->ADC0_Filter_data.IGN_ANS, MAX_ADC_FILTER_SIZE); ADC_Filter_Init(&env->ADC0_Filter_data.Sensor_AC_Pressure, MAX_ADC_FILTER_SIZE); @@ -69,11 +68,6 @@ void Adc_0_Init(tAdc0Task *env, ADC_Filter_Init(&env->ADC0_Filter_data.BTS5180_2EKA_ChannelPTCPower2, MAX_ADC_FILTER_SIZE); - - - - - InitThreadAtrStatic(&env->thread.attr, "Adc0", env->thread.controlBlock, env->thread.stack, osPriorityNormal); } @@ -86,7 +80,7 @@ void BTS5180_120(tAdc0Task *env, char *desc, uint16_t adc_value) { uint16_t ERROR_THRESHOLD_HIGH_CODE = (uint16_t) (ERROR_THRESHOLD_HIGH_V * 4095.0f / 5.0f); // uint16_t ERROR_THRESHOLD_LOW_CODE = (uint16_t) (ERROR_THRESHOLD_LOW_V * 4095.0f / 5.0f); - if (adc_value >= ERROR_THRESHOLD_HIGH_CODE ) { + if (adc_value >= ERROR_THRESHOLD_HIGH_CODE) { LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: Error !!! (adc = %d)", desc, adc_value) } else { // Преобразование в напряжение @@ -152,10 +146,10 @@ void ANALOG_SENSOR(tAdc0Task *env, char *desc, uint16_t adc_value, eNtcTable Ntc case TABLE_DUCT: if (R == 3000) { - temp = get_temperature_by_adc(temperature_table_duct_KST45_table_3000, 4096, adc_value); + temp = get_temperature_by_adc(temperature_table_duct_KST45_table_3000, 1024, adc_value); } if (R == 20000) { - temp = get_temperature_by_adc(temperature_table_duct_KST45_table_20000, 4096, adc_value); + temp = lookup_table_get_temp(temperature_table_duct_KST45_table_20000, adc_value); } break; @@ -172,26 +166,55 @@ void ANALOG_SENSOR(tAdc0Task *env, char *desc, uint16_t adc_value, eNtcTable Ntc } - -float calculate_ntc_resistance_case_a(uint16_t adc_value, - float R_series, - float V_ref, - uint16_t adc_max) -{ - // Защита от деления на ноль и выхода за пределы +/** + * Расчет сопротивления NTC для схемы с делителем напряжения + * + * Схема: VCC --- R_series --- NTC --- GND + * АЦП подключен к точке соединения R_series и NTC + * + * @param adc_value - значение АЦП (0..adc_max) + * @param R_series - сопротивление балластного резистора (Ом) + * @param Vcc_mv - напряжение питания делителя (мВ) + * @param Vref_mv - опорное напряжение АЦП (мВ) + * @param adc_max - максимальное значение АЦП (4095 для 12 бит) + * @return - сопротивление NTC (Ом) + */ +float calculate_ntc_resistance(uint16_t adc_value, + float R_series, + float Vcc_mv, + float Vref_mv, + uint16_t adc_max) { + // Защита от деления на ноль if (adc_value == 0) { - return 0.0f; // Rntc = 0 (короткое замыкание на GND) + return 0; // Rntc = бесконечность (обрыв) - NTC не подключен } + if (adc_value >= adc_max) { - return 0.0f; // Rntc стремится к бесконечности (обрыв) + return 0.0f; // Rntc = 0 (короткое замыкание) } - // Напряжение на NTC, измеренное АЦП - float V_ntc = (float)adc_value / adc_max * V_ref; + // Напряжение на NTC, измеренное АЦП (используем Vref АЦП) + float V_ntc = (float) adc_value / adc_max * Vref_mv; - // Формула: V_ntc / V_ref = Rntc / (Rntc + R_series) - // Rntc = R_series * V_ntc / (V_ref - V_ntc) - float Rntc = R_series * V_ntc / (V_ref - V_ntc); + // Проверка, что V_ntc не превышает Vcc + if (V_ntc > Vcc_mv) { + V_ntc = Vcc_mv; // Ограничиваем физически возможным значением + } + + // Напряжение на балластном резисторе + float V_r1 = Vcc_mv - V_ntc; + + // Защита от отрицательного напряжения + if (V_r1 <= 0.0f) { + return 0.0f; // Короткое замыкание + } + + // Закон Ома: Rntc = R_series * (V_ntc / V_r1) + float Rntc = R_series * (V_ntc / V_r1); + + // Ограничиваем разумными пределами (1 Ом ... 10 МОм) + if (Rntc < 1.0f) Rntc = 1.0f; + if (Rntc > 10000000.0f) Rntc = 10000000.0f; return Rntc; } @@ -229,32 +252,52 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { tADC0_data *ADC0_data = (tADC0_data *) ADC_Pointer_Data; - rtDW.ADC_Data_Model.Sensor_Ambient_Temp = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Ambient_Temp, ADC0_data->Sensor_Ambient_Temp); + rtDW.ADC_Data_Model.Sensor_Ambient_Temp = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Ambient_Temp,ADC0_data->Sensor_Ambient_Temp); rtDW.ADC_Data_Model.IGN_ANS = ADC_Filter_Update(&env->ADC0_Filter_data.IGN_ANS, ADC0_data->IGN_ANS); - rtDW.ADC_Data_Model.Sensor_AC_Pressure = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_AC_Pressure, ADC0_data->Sensor_AC_Pressure); - rtDW.ADC_Data_Model.Sensor_Incar_Temp_FL = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_FL, ADC0_data->Sensor_Incar_Temp_FL); - rtDW.ADC_Data_Model.Sensor_Incar_Temp_RL = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_RL, ADC0_data->Sensor_Incar_Temp_RL); - rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Evap_Temp, ADC0_data->Sensor_Rear_Evap_Temp); - rtDW.ADC_Data_Model.Sensor_Rear_Duct1 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct1, ADC0_data->Sensor_Rear_Duct1); - rtDW.ADC_Data_Model.Sensor_Rear_Duct2 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct2, ADC0_data->Sensor_Rear_Duct2); - rtDW.ADC_Data_Model.Sensor_Front_Duct1 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct1, ADC0_data->Sensor_Front_Duct1); - rtDW.ADC_Data_Model.Sensor_Front_Duct2 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct2, ADC0_data->Sensor_Front_Duct2); - rtDW.ADC_Data_Model.Sensor_Front_Duct3 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct3, ADC0_data->Sensor_Front_Duct3); - rtDW.ADC_Data_Model.Sensor_Front_Duct4 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct4, ADC0_data->Sensor_Front_Duct4); - rtDW.ADC_Data_Model.Sensor_Rear_Duct3 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct3, ADC0_data->Sensor_Rear_Duct3); - rtDW.ADC_Data_Model.Sensor_Rear_Duct4 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct4, ADC0_data->Sensor_Rear_Duct4); - rtDW.ADC_Data_Model.Sensor_Incar_Temp_FR = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_FR, ADC0_data->Sensor_Incar_Temp_FR); - rtDW.ADC_Data_Model.Sensor_Incar_Temp_RR = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_RR, ADC0_data->Sensor_Incar_Temp_RR); - rtDW.ADC_Data_Model.Sensor_Rear_Duct5 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct5, ADC0_data->Sensor_Rear_Duct5); - rtDW.ADC_Data_Model.Sensor_Rear_Duct6 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct6, ADC0_data->Sensor_Rear_Duct6); + rtDW.ADC_Data_Model.Sensor_AC_Pressure = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_AC_Pressure,ADC0_data->Sensor_AC_Pressure); + rtDW.ADC_Data_Model.Sensor_Incar_Temp_FL = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_FL,ADC0_data->Sensor_Incar_Temp_FL); + rtDW.ADC_Data_Model.Sensor_Incar_Temp_RL = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_RL,ADC0_data->Sensor_Incar_Temp_RL); + rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Evap_Temp,ADC0_data->Sensor_Rear_Evap_Temp); + rtDW.ADC_Data_Model.Sensor_Rear_Duct1 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct1,ADC0_data->Sensor_Rear_Duct1); + rtDW.ADC_Data_Model.Sensor_Rear_Duct2 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct2,ADC0_data->Sensor_Rear_Duct2); + rtDW.ADC_Data_Model.Sensor_Front_Duct1 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct1,ADC0_data->Sensor_Front_Duct1); + rtDW.ADC_Data_Model.Sensor_Front_Duct2 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct2,ADC0_data->Sensor_Front_Duct2); + rtDW.ADC_Data_Model.Sensor_Front_Duct3 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct3,ADC0_data->Sensor_Front_Duct3); + rtDW.ADC_Data_Model.Sensor_Front_Duct4 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct4,ADC0_data->Sensor_Front_Duct4); + + rtDW.ADC_Data_Model.Sensor_Rear_Duct3 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct3,ADC0_data->Sensor_Rear_Duct3); + + rtDW.ADC_Data_Model.Sensor_Rear_Duct4 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct4,ADC0_data->Sensor_Rear_Duct4); + rtDW.ADC_Data_Model.Sensor_Incar_Temp_FR = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_FR,ADC0_data->Sensor_Incar_Temp_FR); + rtDW.ADC_Data_Model.Sensor_Incar_Temp_RR = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_RR,ADC0_data->Sensor_Incar_Temp_RR); + rtDW.ADC_Data_Model.Sensor_Rear_Duct5 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct5,ADC0_data->Sensor_Rear_Duct5); + rtDW.ADC_Data_Model.Sensor_Rear_Duct6 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct6,ADC0_data->Sensor_Rear_Duct6); rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_1 = ADC_Filter_Update(&env->ADC0_Filter_data.Reserve_Sensor_Duct_Temp_1, ADC0_data->Reserve_Sensor_Duct_Temp_1); - rtDW.ADC_Data_Model.Sensor_Front_Duct5 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct5, ADC0_data->Sensor_Front_Duct5); - rtDW.ADC_Data_Model.Sensor_Front_Duct6 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct6, ADC0_data->Sensor_Front_Duct6); - rtDW.ADC_Data_Model.Pressure_DIAG = ADC_Filter_Update(&env->ADC0_Filter_data.Pressure_DIAG, ADC0_data->Pressure_DIAG); - rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_2 = ADC_Filter_Update(&env->ADC0_Filter_data.Reserve_Sensor_Duct_Temp_2, ADC0_data->Reserve_Sensor_Duct_Temp_2); + rtDW.ADC_Data_Model.Sensor_Front_Duct5 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct5,ADC0_data->Sensor_Front_Duct5); + rtDW.ADC_Data_Model.Sensor_Front_Duct6 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct6,ADC0_data->Sensor_Front_Duct6); + rtDW.ADC_Data_Model.Pressure_DIAG = ADC_Filter_Update(&env->ADC0_Filter_data.Pressure_DIAG,ADC0_data->Pressure_DIAG); + rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_2 = ADC_Filter_Update( + &env->ADC0_Filter_data.Reserve_Sensor_Duct_Temp_2, ADC0_data->Reserve_Sensor_Duct_Temp_2); // rtDW.ADC_Data_Model.Sensor_PT_rHVAC_P = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_PT_rHVAC_P, ADC0_data->Sensor_PT_rHVAC_P); // rtDW.ADC_Data_Model.Sensor_A_T_reserve = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_A_T_reserve, ADC0_data->Sensor_A_T_reserve); + + +/* + rtDW.ADC_Data_Model.Sensor_Front_Duct1 = 3071; + rtDW.ADC_Data_Model.Sensor_Front_Duct2 = 3031; + rtDW.ADC_Data_Model.Sensor_Front_Duct3 = 2993; + rtDW.ADC_Data_Model.Sensor_Front_Duct4 = 2952; + rtDW.ADC_Data_Model.Sensor_Front_Duct5 = 2912; + rtDW.ADC_Data_Model.Sensor_Front_Duct6 = 2871; + + rtDW.ADC_Data_Model.Sensor_Rear_Duct1 = 2829; + rtDW.ADC_Data_Model.Sensor_Rear_Duct2 = 2787; + rtDW.ADC_Data_Model.Sensor_Rear_Duct3 = 2744; + rtDW.ADC_Data_Model.Sensor_Rear_Duct4 = 2701; +*/ + + /* rtDW.ADC_Data_Model.Sensor_Ambient_Temp = pData[0]; rtDW.ADC_Data_Model.IGN_ANS = pData[1]; @@ -294,11 +337,18 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_SEL_Diag, true); GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver_SEL_Diag, true); - rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV1 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5120_2EKA_ShutoffValvePowerTXV1, ADC0_data->BTS5120_2EKA_ShutoffValvePowerTXV1); - rtDW.ADC_Data_Model.BTS5180_2EKA_ShutOFFValveFront = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ShutOFFValveFront, ADC0_data->BTS5180_2EKA_ShutOFFValveFront); - rtDW.ADC_Data_Model.BTS5180_2EKA_TwoWayValve = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_TwoWayValve, ADC0_data->BTS5180_2EKA_TwoWayValve); - rtDW.ADC_Data_Model.BTS5180_2EKA_FrontIncarMotor = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_FrontIncarMotor, ADC0_data->BTS5180_2EKA_FrontIncarMotor); - rtDW.ADC_Data_Model.BTS5180_2EKA_ChannelPTCPower1 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ChannelPTCPower1, ADC0_data->BTS5180_2EKA_ChannelPTCPower1); + rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV1 = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5120_2EKA_ShutoffValvePowerTXV1, + ADC0_data->BTS5120_2EKA_ShutoffValvePowerTXV1); + rtDW.ADC_Data_Model.BTS5180_2EKA_ShutOFFValveFront = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5180_2EKA_ShutOFFValveFront, + ADC0_data->BTS5180_2EKA_ShutOFFValveFront); + rtDW.ADC_Data_Model.BTS5180_2EKA_TwoWayValve = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5180_2EKA_TwoWayValve, ADC0_data->BTS5180_2EKA_TwoWayValve); + rtDW.ADC_Data_Model.BTS5180_2EKA_FrontIncarMotor = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5180_2EKA_FrontIncarMotor, ADC0_data->BTS5180_2EKA_FrontIncarMotor); + rtDW.ADC_Data_Model.BTS5180_2EKA_ChannelPTCPower1 = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5180_2EKA_ChannelPTCPower1, ADC0_data->BTS5180_2EKA_ChannelPTCPower1); /* rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV1 = pData[22]; // rtDW.ADC_Data_Model.BTS5180_2EKA_ShutOFFValveFront = pData[24]; // @@ -311,15 +361,23 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { GpioPinSet(&env->gpios->power.BTS5120_2EKA_ShutoffValvePowerTXV.ShutSelTXV_SEL_Diag, false); GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutSel_SEL_Diag, false); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_SEL_Diag,false); + GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_SEL_Diag, + false); GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_SEL_Diag, false); GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver_SEL_Diag, false); - rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV2 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5120_2EKA_ShutoffValvePowerTXV2, ADC0_data->BTS5120_2EKA_ShutoffValvePowerTXV2); - rtDW.ADC_Data_Model.BTS5180_2EKA_ShutOFFValveRear = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ShutOFFValveRear, ADC0_data->BTS5180_2EKA_ShutOFFValveRear); - rtDW.ADC_Data_Model.BTS5180_2EKA_ReservePowerSupply = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ReservePowerSupply, ADC0_data->BTS5180_2EKA_ReservePowerSupply); - rtDW.ADC_Data_Model.BTS5180_2EKA_RearIncarMotor = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_RearIncarMotor, ADC0_data->BTS5180_2EKA_RearIncarMotor); - rtDW.ADC_Data_Model.BTS5180_2EKA_ChannelPTCPower2 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ChannelPTCPower2, ADC0_data->BTS5180_2EKA_ChannelPTCPower2); + rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV2 = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5120_2EKA_ShutoffValvePowerTXV2, + ADC0_data->BTS5120_2EKA_ShutoffValvePowerTXV2); + rtDW.ADC_Data_Model.BTS5180_2EKA_ShutOFFValveRear = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5180_2EKA_ShutOFFValveRear, ADC0_data->BTS5180_2EKA_ShutOFFValveRear); + rtDW.ADC_Data_Model.BTS5180_2EKA_ReservePowerSupply = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5180_2EKA_ReservePowerSupply, + ADC0_data->BTS5180_2EKA_ReservePowerSupply); + rtDW.ADC_Data_Model.BTS5180_2EKA_RearIncarMotor = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5180_2EKA_RearIncarMotor, ADC0_data->BTS5180_2EKA_RearIncarMotor); + rtDW.ADC_Data_Model.BTS5180_2EKA_ChannelPTCPower2 = ADC_Filter_Update( + &env->ADC0_Filter_data.BTS5180_2EKA_ChannelPTCPower2, ADC0_data->BTS5180_2EKA_ChannelPTCPower2); /* rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV2 = pData[22]; // @@ -330,9 +388,9 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { */ } - -//////////////////////////////////////----DEBUG----//////////////////////////////////////////////////////////////////// /* +//////////////////////////////////////----DEBUG----//////////////////////////////////////////////////////////////////// + BTS5180_120(env, "BTS5120_2EKA_ShutoffValvePowerTXV1", rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV1); BTS5180_120(env, "BTS5120_2EKA_ShutoffValvePowerTXV2", @@ -354,31 +412,38 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { ANALOG_SENSOR(env, "Sensor_Ambient_Temp", rtDW.ADC_Data_Model.Sensor_Ambient_Temp, TABLE_AMBIENT, 20000); ANALOG_SENSOR(env, "Sensor_AC_Pressure", rtDW.ADC_Data_Model.Sensor_AC_Pressure, TABLE_NONE, 0); + ANALOG_SENSOR(env, "Sensor_Incar_Temp_FL", rtDW.ADC_Data_Model.Sensor_Incar_Temp_FL, TABLE_INCAR, 20000); ANALOG_SENSOR(env, "Sensor_Incar_Temp_RL", rtDW.ADC_Data_Model.Sensor_Incar_Temp_RL, TABLE_INCAR, 20000); - ANALOG_SENSOR(env, "Sensor_Rear_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp, TABLE_DUCT, 20000); - ANALOG_SENSOR(env, "Sensor_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Evap_Temp, TABLE_DUCT, 20000); - ANALOG_SENSOR(env, "Sensor_Rear_Duct1", rtDW.ADC_Data_Model.Sensor_Rear_Duct1, TABLE_DUCT, 3000); - ANALOG_SENSOR(env, "Sensor_Rear_Duct2", rtDW.ADC_Data_Model.Sensor_Rear_Duct2, TABLE_DUCT, 3000); - ANALOG_SENSOR(env, "Sensor_Front_Duct1", rtDW.ADC_Data_Model.Sensor_Front_Duct1, TABLE_DUCT, 3000); - ANALOG_SENSOR(env, "Sensor_Front_Duct2", rtDW.ADC_Data_Model.Sensor_Front_Duct2, TABLE_DUCT, 3000); - ANALOG_SENSOR(env, "Sensor_Front_Duct3", rtDW.ADC_Data_Model.Sensor_Front_Duct3, TABLE_DUCT, 3000); - ANALOG_SENSOR(env, "Sensor_Front_Duct4", rtDW.ADC_Data_Model.Sensor_Front_Duct4, TABLE_DUCT, 3000); - ANALOG_SENSOR(env, "Sensor_Rear_Duct3", rtDW.ADC_Data_Model.Sensor_Rear_Duct3, TABLE_DUCT, 3000); - ANALOG_SENSOR(env, "Sensor_Rear_Duct4", rtDW.ADC_Data_Model.Sensor_Rear_Duct4, TABLE_DUCT, 3000); ANALOG_SENSOR(env, "Sensor_Incar_Temp_FR", rtDW.ADC_Data_Model.Sensor_Incar_Temp_FR, TABLE_INCAR, 20000); ANALOG_SENSOR(env, "Sensor_Incar_Temp_RR", rtDW.ADC_Data_Model.Sensor_Incar_Temp_RR, TABLE_INCAR, 20000); + + ANALOG_SENSOR(env, "Sensor_Rear_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp, TABLE_DUCT, 20000); + ANALOG_SENSOR(env, "Sensor_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Evap_Temp, TABLE_DUCT, 20000); + + ANALOG_SENSOR(env, "Sensor_Rear_Duct1 (dbg_Sen_Duct_RL_Fb)", rtDW.ADC_Data_Model.Sensor_Rear_Duct1, TABLE_DUCT, 3000); + ANALOG_SENSOR(env, "Sensor_Rear_Duct2 (dbg_Sen_Duct_RR_Fb)", rtDW.ADC_Data_Model.Sensor_Rear_Duct2, TABLE_DUCT, 3000); + ANALOG_SENSOR(env, "Sensor_Rear_Duct3 (dbg_Sen_Duct_RL_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Rear_Duct3, TABLE_DUCT, 3000); + ANALOG_SENSOR(env, "Sensor_Rear_Duct4 (dbg_Sen_Duct_RR_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Rear_Duct4, TABLE_DUCT, 3000); ANALOG_SENSOR(env, "Sensor_Rear_Duct5", rtDW.ADC_Data_Model.Sensor_Rear_Duct5, TABLE_DUCT, 3000); ANALOG_SENSOR(env, "Sensor_Rear_Duct6", rtDW.ADC_Data_Model.Sensor_Rear_Duct6, TABLE_DUCT, 3000); - ANALOG_SENSOR(env, "Reserve_Sensor_Duct_Temp_1", rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_1, TABLE_DUCT, - 20000); + + + ANALOG_SENSOR(env, "Sensor_Front_Duct1 (dbg_Sen_Duct_FL_Upper_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct1, TABLE_DUCT, 3000); + ANALOG_SENSOR(env, "Sensor_Front_Duct2 (dbg_Sen_Duct_FR_Upper_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct2, TABLE_DUCT, 3000); + ANALOG_SENSOR(env, "Sensor_Front_Duct3 (dbg_Sen_Duct_FL_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct3, TABLE_DUCT, 3000); + ANALOG_SENSOR(env, "Sensor_Front_Duct4 (dbg_Sen_Duct_FR_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct4, TABLE_DUCT, 3000); + ANALOG_SENSOR(env, "Sensor_Front_Duct5 (dbg_Sen_Duct_FL_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct5, TABLE_DUCT, 3000); + ANALOG_SENSOR(env, "Sensor_Front_Duct6 (dbg_Sen_Duct_FR_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct6, TABLE_DUCT, 3000); + + + ANALOG_SENSOR(env, "Reserve_Sensor_Duct_Temp_1", rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_1, TABLE_DUCT,20000); */ -// ANALOG_SENSOR(env, "Sensor_Front_Duct5", rtDW.ADC_Data_Model.Sensor_Front_Duct5, TABLE_DUCT, 3000); - ANALOG_SENSOR(env, "Sensor_Front_Duct6", rtDW.ADC_Data_Model.Sensor_Front_Duct6, TABLE_DUCT, 3000); +// ANALOG_SENSOR(env, "Sensor_Rear_Duct3", rtDW.ADC_Data_Model.Sensor_Rear_Duct3, TABLE_DUCT, 3000); - float Rntc = calculate_ntc_resistance_case_a(rtDW.ADC_Data_Model.Sensor_Front_Duct6,3000,5,4095); - LoggerFormatInfo(LOGGER, LOG_SIGN, "Rntc = %f", Rntc) +// float Rntc = calculate_ntc_resistance(rtDW.ADC_Data_Model.Sensor_Rear_Duct3, 3000, 4.96f, 5, 4095); +// LoggerFormatInfo(LOGGER, LOG_SIGN, "Rntc = %f", Rntc) /* @@ -411,7 +476,11 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error Adc0_Thread"); } - SystemDelayMs(50); + ++env->step; + + if (env->step > MAX_ADC_FILTER_SIZE) { + SystemDelayMs(50); + } } } @@ -512,15 +581,19 @@ static _Noreturn void Adc1_Thread(tAdc1Task *env) { //////////////////////////////////////----DEBUG----//////////////////////////////////////////////////////////////////// */ - float V_ref = (float) pData[16] / 4095.0f * 5.0f; - LoggerFormatInfo(LOGGER, LOG_SIGN, "V_ref = %f", V_ref) +// float V_ref = (float) pData[16] / 4095.0f * 5.0f; +// LoggerFormatInfo(LOGGER, LOG_SIGN, "V_ref = %f", V_ref) osMutexRelease(env->modelTaskAccess); } else { LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error Adc1_Thread"); } - SystemDelayMs(50); + ++env->step; + + if (env->step > MAX_ADC_FILTER_SIZE) { + SystemDelayMs(50); + } } } diff --git a/AdcTasks.h b/AdcTasks.h index 006ee69..2bf0b6d 100644 --- a/AdcTasks.h +++ b/AdcTasks.h @@ -171,6 +171,8 @@ typedef struct { tLoggerInterface *logger; + uint32_t step; + struct { osThreadId_t id; uint32_t stack[384]; @@ -196,6 +198,8 @@ typedef struct { tLoggerInterface *logger; + uint32_t step; + struct { osThreadId_t id; uint32_t stack[384];