From 4a9f203a50222b99b20774754f1831f49dabd469 Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 29 May 2026 15:04:59 +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 | 131 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 83 insertions(+), 48 deletions(-) diff --git a/AdcTasks.c b/AdcTasks.c index caab06d..987afbd 100644 --- a/AdcTasks.c +++ b/AdcTasks.c @@ -124,49 +124,6 @@ void VN7008AJ(tAdc0Task *env, char *desc, uint16_t adc_value) { } -void ANALOG_SENSOR(tAdc0Task *env, char *desc, uint16_t adc_value, eNtcTable NtcTable, float R) { - float ERROR_THRESHOLD_HIGH_V = 4.9f; - float ERROR_THRESHOLD_LOW_V = 0.1f; - 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); - - // 1. Проверка на ошибку - if (adc_value >= ERROR_THRESHOLD_HIGH_CODE || adc_value <= ERROR_THRESHOLD_LOW_CODE) { - LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: Error !!! (adc = %d)", desc, adc_value) - } else { - // Преобразование в напряжение - float U = (float) adc_value * 5.0f / 4095.0f; - - float temp = 0; - - switch (NtcTable) { - - case TABLE_NONE: - LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d)", desc, U, adc_value) - return; - - case TABLE_DUCT: - if (R == 3000) { - temp = get_temperature_by_adc(temperature_table_duct_KST45_table_3000, 1024, adc_value); - } - if (R == 20000) { - temp = lookup_table_get_temp(temperature_table_duct_KST45_table_20000, adc_value); - } - - break; - case TABLE_INCAR: - break; - case TABLE_AMBIENT: - break; - - } - - LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d) Temp = %f", desc, U, adc_value, temp / 10) - } - -} - - /** * Расчет сопротивления NTC для схемы с делителем напряжения * @@ -220,6 +177,56 @@ float calculate_ntc_resistance(uint16_t adc_value, return Rntc; } +void ANALOG_SENSOR(tAdc0Task *env, char *desc, uint16_t adc_value, eNtcTable NtcTable, float R) { + float ERROR_THRESHOLD_HIGH_V = 4.9f; + float ERROR_THRESHOLD_LOW_V = 0.1f; + 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); + + // 1. Проверка на ошибку + if (adc_value >= ERROR_THRESHOLD_HIGH_CODE || adc_value <= ERROR_THRESHOLD_LOW_CODE) { + LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: Error !!! (adc = %d)", desc, adc_value) + } else { + // Преобразование в напряжение + float U = (float) adc_value * 5.0f / 4095.0f; + + float temp = 0; + float Rntc = 0; + + switch (NtcTable) { + + case TABLE_NONE: + LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d)", desc, U, adc_value) + return; + + case TABLE_DUCT: + if (R == 3000) { +// temp = get_temperature_by_adc(temperature_table_duct_KST45_table_3000, 1024, adc_value); + temp = lookup_table_get_temp(temperature_table_duct_KST45_table_3000, adc_value); + Rntc = calculate_ntc_resistance(adc_value, 3000, 4.96f, 5.0f, 4095); + } + if (R == 20000) { +// temp = get_temperature_by_adc(temperature_table_duct_KST45_table_3000, 1024, adc_value); + temp = lookup_table_get_temp(temperature_table_duct_KST45_table_20000, adc_value); + Rntc = calculate_ntc_resistance(adc_value, 20000, 4.96f, 5.0f, 4095); + } + + break; + case TABLE_INCAR: + break; + case TABLE_AMBIENT: + break; + + } + + + + LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d) Temp = %f Rntc = %f", desc, U, adc_value, temp / 10, Rntc) + } + +} + + static _Noreturn void Adc0_Thread(tAdc0Task *env) { @@ -415,10 +422,10 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { // LoggerFormatInfo(LOGGER, LOG_SIGN, "IGN = %f", IGN_ANS); -/* + //////////////////////////////////////----DEBUG----//////////////////////////////////////////////////////////////////// - +/* BTS5180_120(env, "BTS5120_2EKA_ShutoffValvePowerTXV1", rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV1); @@ -462,13 +469,41 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { 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.ADNcfr\C_Data_Model.Sensor_Front_Duct5, 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_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, "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, "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_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp, TABLE_DUCT, 20000); + + + + + // ANALOG_SENSOR(env, "Sensor_Rear_Duct3", rtDW.ADC_Data_Model.Sensor_Rear_Duct3, TABLE_DUCT, 3000); // float Rntc = calculate_ntc_resistance(rtDW.ADC_Data_Model.Sensor_Rear_Duct3, 3000, 4.96f, 5, 4095); @@ -508,7 +543,7 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { ++env->step; if (env->step > MAX_ADC_FILTER_SIZE * 2) { - SystemDelayMs(50); + SystemDelayMs(25); } } } @@ -646,7 +681,7 @@ static _Noreturn void Adc1_Thread(tAdc1Task *env) { ++env->step; if (env->step > MAX_ADC_FILTER_SIZE * 2) { - SystemDelayMs(50); + SystemDelayMs(25); } } }