diff --git a/AdcFilter.h b/AdcFilter.h index 0448020..cbff92f 100644 --- a/AdcFilter.h +++ b/AdcFilter.h @@ -6,7 +6,7 @@ // Максимальный размер фильтра (может быть 0 для отключения) #ifndef MAX_ADC_FILTER_SIZE -#define MAX_ADC_FILTER_SIZE 0 +#define MAX_ADC_FILTER_SIZE 32 #endif // Если размер равен 0, используем буфер из 1 элемента (для избежания ошибок компиляции) diff --git a/AdcTasks.c b/AdcTasks.c index 87bbab8..881e6ad 100644 --- a/AdcTasks.c +++ b/AdcTasks.c @@ -5,29 +5,26 @@ #include "CmsisRtosThreadUtils.h" #include #include "memory.h" -#include "HVAC_model.h" #include "ADC_Temp.h" #include "ADC_Temp_Fast.h" -#include "fc7xxx_driver_smc.h" + #define LOG_SIGN "ADC" #define LOGGER env->logger void Adc_0_Init(tAdc0Task *env, - osMutexId_t modelTaskAccess, tAdcIO *adcIO, tGpios *gpios, tLoggerInterface *logger ) { env->adcIO = adcIO; - env->modelTaskAccess = modelTaskAccess; env->access = osMutexNew(NULL); env->logger = logger; env->gpios = gpios; env->queueRandom = osMessageQueueNew(10, 4, NULL); - + env->queueCmdBusADCData = osMessageQueueNew(1, sizeof(CmdBusADCData), 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); @@ -265,39 +262,51 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { } - if (osMutexAcquire(env->modelTaskAccess, 5000) == osOK) { +// if (osMutexAcquire(env->modelTaskAccess, 5000) == osOK) { 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.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_Evap_Temp = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Evap_Temp,ADC0_data->Sensor_Evap_Temp); + env->cmdBusADCData.Sensor_Ambient_Temp = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Ambient_Temp,ADC0_data->Sensor_Ambient_Temp); + env->cmdBusADCData.IGN_ANS = ADC_Filter_Update(&env->ADC0_Filter_data.IGN_ANS, ADC0_data->IGN_ANS); + env->cmdBusADCData.Sensor_AC_Pressure = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_AC_Pressure,ADC0_data->Sensor_AC_Pressure); + env->cmdBusADCData.Sensor_Incar_Temp_FL = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_FL,ADC0_data->Sensor_Incar_Temp_FL); + env->cmdBusADCData.Sensor_Incar_Temp_RL = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_RL,ADC0_data->Sensor_Incar_Temp_RL); + env->cmdBusADCData.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); + env->cmdBusADCData.Sensor_Evap_Temp = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Evap_Temp,ADC0_data->Sensor_Evap_Temp); - rtDW.ADC_Data_Model.Sensor_Rear_Duct3 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct3,ADC0_data->Sensor_Rear_Duct3); + env->cmdBusADCData.Sensor_Rear_Duct1 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct1,ADC0_data->Sensor_Rear_Duct1); + env->cmdBusADCData.Sensor_Rear_Duct2 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct2,ADC0_data->Sensor_Rear_Duct2); + env->cmdBusADCData.Sensor_Front_Duct1 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct1,ADC0_data->Sensor_Front_Duct1); + env->cmdBusADCData.Sensor_Front_Duct2 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct2,ADC0_data->Sensor_Front_Duct2); + env->cmdBusADCData.Sensor_Front_Duct3 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct3,ADC0_data->Sensor_Front_Duct3); + env->cmdBusADCData.Sensor_Front_Duct4 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct4,ADC0_data->Sensor_Front_Duct4); - 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_PT_rHVAC_P = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_PT_rHVAC_P, ADC0_data->Sensor_PT_rHVAC_P); + env->cmdBusADCData.Sensor_Rear_Duct3 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct3,ADC0_data->Sensor_Rear_Duct3); + + env->cmdBusADCData.Sensor_Rear_Duct4 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct4,ADC0_data->Sensor_Rear_Duct4); + env->cmdBusADCData.Sensor_Incar_Temp_FR = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_FR,ADC0_data->Sensor_Incar_Temp_FR); + env->cmdBusADCData.Sensor_Incar_Temp_RR = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Incar_Temp_RR,ADC0_data->Sensor_Incar_Temp_RR); + env->cmdBusADCData.Sensor_Rear_Duct5 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct5,ADC0_data->Sensor_Rear_Duct5); + env->cmdBusADCData.Sensor_Rear_Duct6 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Rear_Duct6,ADC0_data->Sensor_Rear_Duct6); + env->cmdBusADCData.Reserve_Sensor_Duct_Temp_1 = ADC_Filter_Update(&env->ADC0_Filter_data.Reserve_Sensor_Duct_Temp_1, ADC0_data->Reserve_Sensor_Duct_Temp_1); + env->cmdBusADCData.Sensor_Front_Duct5 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct5,ADC0_data->Sensor_Front_Duct5); + env->cmdBusADCData.Sensor_Front_Duct6 = ADC_Filter_Update(&env->ADC0_Filter_data.Sensor_Front_Duct6,ADC0_data->Sensor_Front_Duct6); + env->cmdBusADCData.Pressure_DIAG = ADC_Filter_Update(&env->ADC0_Filter_data.Pressure_DIAG,ADC0_data->Pressure_DIAG); + env->cmdBusADCData.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); @@ -356,11 +365,11 @@ 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_BTS5120_2EKA_ShutoffValvePowerTXV2); - rtDW.ADC_Data_Model.BTS5180_2EKA_ShutOFFValveFront = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ShutOFFValveFront,ADC0_data->BTS5180_2EKA_ShutOFFValveFront_BTS5180_2EKA_ShutOFFValveRear); - rtDW.ADC_Data_Model.BTS5180_2EKA_TwoWayValve = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_TwoWayValve, ADC0_data->BTS5180_2EKA_TwoWayValve_BTS5180_2EKA_ReservePowerSupply); - rtDW.ADC_Data_Model.BTS5180_2EKA_FrontIncarMotor = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_FrontIncarMotor, ADC0_data->BTS5180_2EKA_FrontIncarMotor_BTS5180_2EKA_RearIncarMotor); - rtDW.ADC_Data_Model.BTS5180_2EKA_ChannelPTCPower1 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ChannelPTCPower1, ADC0_data->BTS5180_2EKA_ChannelPTCPower1_BTS5180_2EKA_ChannelPTCPower2); + env->cmdBusADCData.BTS5120_2EKA_ShutoffValvePowerTXV1 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5120_2EKA_ShutoffValvePowerTXV1,ADC0_data->BTS5120_2EKA_ShutoffValvePowerTXV1_BTS5120_2EKA_ShutoffValvePowerTXV2); + env->cmdBusADCData.BTS5180_2EKA_ShutOFFValveFront = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ShutOFFValveFront,ADC0_data->BTS5180_2EKA_ShutOFFValveFront_BTS5180_2EKA_ShutOFFValveRear); + env->cmdBusADCData.BTS5180_2EKA_TwoWayValve = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_TwoWayValve, ADC0_data->BTS5180_2EKA_TwoWayValve_BTS5180_2EKA_ReservePowerSupply); + env->cmdBusADCData.BTS5180_2EKA_FrontIncarMotor = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_FrontIncarMotor, ADC0_data->BTS5180_2EKA_FrontIncarMotor_BTS5180_2EKA_RearIncarMotor); + env->cmdBusADCData.BTS5180_2EKA_ChannelPTCPower1 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ChannelPTCPower1, ADC0_data->BTS5180_2EKA_ChannelPTCPower1_BTS5180_2EKA_ChannelPTCPower2); /* rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV1 = pData[22]; // rtDW.ADC_Data_Model.BTS5180_2EKA_ShutOFFValveFront = pData[24]; // @@ -377,11 +386,11 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { 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_ShutoffValvePowerTXV1_BTS5120_2EKA_ShutoffValvePowerTXV2); - rtDW.ADC_Data_Model.BTS5180_2EKA_ShutOFFValveRear = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ShutOFFValveRear, ADC0_data->BTS5180_2EKA_ShutOFFValveFront_BTS5180_2EKA_ShutOFFValveRear); - rtDW.ADC_Data_Model.BTS5180_2EKA_ReservePowerSupply = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ReservePowerSupply,ADC0_data->BTS5180_2EKA_TwoWayValve_BTS5180_2EKA_ReservePowerSupply); - rtDW.ADC_Data_Model.BTS5180_2EKA_RearIncarMotor = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_RearIncarMotor, ADC0_data->BTS5180_2EKA_FrontIncarMotor_BTS5180_2EKA_RearIncarMotor); - rtDW.ADC_Data_Model.BTS5180_2EKA_ChannelPTCPower2 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ChannelPTCPower2, ADC0_data->BTS5180_2EKA_ChannelPTCPower1_BTS5180_2EKA_ChannelPTCPower2); + env->cmdBusADCData.BTS5120_2EKA_ShutoffValvePowerTXV2 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5120_2EKA_ShutoffValvePowerTXV2,ADC0_data->BTS5120_2EKA_ShutoffValvePowerTXV1_BTS5120_2EKA_ShutoffValvePowerTXV2); + env->cmdBusADCData.BTS5180_2EKA_ShutOFFValveRear = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ShutOFFValveRear, ADC0_data->BTS5180_2EKA_ShutOFFValveFront_BTS5180_2EKA_ShutOFFValveRear); + env->cmdBusADCData.BTS5180_2EKA_ReservePowerSupply = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ReservePowerSupply,ADC0_data->BTS5180_2EKA_TwoWayValve_BTS5180_2EKA_ReservePowerSupply); + env->cmdBusADCData.BTS5180_2EKA_RearIncarMotor = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_RearIncarMotor, ADC0_data->BTS5180_2EKA_FrontIncarMotor_BTS5180_2EKA_RearIncarMotor); + env->cmdBusADCData.BTS5180_2EKA_ChannelPTCPower2 = ADC_Filter_Update(&env->ADC0_Filter_data.BTS5180_2EKA_ChannelPTCPower2, ADC0_data->BTS5180_2EKA_ChannelPTCPower1_BTS5180_2EKA_ChannelPTCPower2); /* rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV2 = pData[22]; // @@ -538,6 +547,11 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { + uint32_t countQueueCmdBusADCData = osMessageQueueGetSpace(env->queueCmdBusADCData); + + if (countQueueCmdBusADCData) { + osStatus_t status = osMessageQueuePut(env->queueCmdBusADCData, &env->cmdBusADCData, 0, 0U); + } @@ -546,20 +560,23 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { - - osMutexRelease(env->modelTaskAccess); - } else { - LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error Adc0_Thread"); - } +// osMutexRelease(env->modelTaskAccess); +// } else { +// LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error Adc0_Thread"); +// } // ++env->step; -// if (env->step > MAX_ADC_FILTER_SIZE * 2) { -// SystemDelayMs(10); -// } + if (env->step > MAX_ADC_FILTER_SIZE * 2) { + SystemDelayMs(10); + } } } +void getCmdBusADCData(tAdc0Task *env, CmdBusADCData *cmdBusADCData) { + osStatus_t status = osMessageQueueGet(env->queueCmdBusADCData, cmdBusADCData, 0, 0); +} + uint32_t getRandom32(tAdc0Task *env) { @@ -584,17 +601,16 @@ void Adc_0_StartThread(tAdc0Task *env) { void Adc_1_Init(tAdc1Task *env, - osMutexId_t modelTaskAccess, tAdcIO *adcIO, tGpios *gpios, tLoggerInterface *logger) { env->adcIO = adcIO; - env->modelTaskAccess = modelTaskAccess; env->logger = logger; env->access = osMutexNew(NULL); env->gpios = gpios; + env->queueCmdBusADC2Data = osMessageQueueNew(1, sizeof(CmdBusADC2Data), NULL); ADC_Filter_Init(&env->ADC1_Filter_data.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB, MAX_ADC_FILTER_SIZE); ADC_Filter_Init(&env->ADC1_Filter_data.VN7008AJ_DIAG_RearLINActuatorPowerDriverC, MAX_ADC_FILTER_SIZE); @@ -614,18 +630,23 @@ static _Noreturn void Adc1_Thread(tAdc1Task *env) { for (;;) { env->ADC_ChannelCount = env->adcIO->get(env->adcIO->env, &ADC_Pointer_Data, 5000); - uint32_t *pData = (uint32_t *) ADC_Pointer_Data; +// uint32_t *pData = (uint32_t *) ADC_Pointer_Data; - if (osMutexAcquire(env->modelTaskAccess, 5000) == osOK) { +// if (osMutexAcquire(env->modelTaskAccess, 5000) == osOK) { tADC1_data *ADC1_data = (tADC1_data *) ADC_Pointer_Data; - rtDW.ADC_Data_Model.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB = ADC_Filter_Update(&env->ADC1_Filter_data.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB,ADC1_data->VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB); - rtDW.ADC_Data_Model.VN7008AJ_DIAG_RearLINActuatorPowerDriverC = ADC_Filter_Update(&env->ADC1_Filter_data.VN7008AJ_DIAG_RearLINActuatorPowerDriverC,ADC1_data->VN7008AJ_DIAG_RearLINActuatorPowerDriverC); - rtDW.ADC_Data_Model.PBATT_CHECK = ADC_Filter_Update(&env->ADC1_Filter_data.PBATT_CHECK,ADC1_data->PBATT_CHECK); - rtDW.ADC_Data_Model.VN7008AJ_FrontLINActuatorPowerDriverAB = ADC_Filter_Update(&env->ADC1_Filter_data.VN7008AJ_FrontLINActuatorPowerDriverAB,ADC1_data->VN7008AJ_FrontLINActuatorPowerDriverAB); - rtDW.ADC_Data_Model.VN7008AJ_RearLINActuatorPowerDriverC = ADC_Filter_Update(&env->ADC1_Filter_data.VN7008AJ_RearLINActuatorPowerDriverC,ADC1_data->VN7008AJ_RearLINActuatorPowerDriverC); + env->cmdBusADC2Data.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB = ADC_Filter_Update(&env->ADC1_Filter_data.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB,ADC1_data->VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB); + env->cmdBusADC2Data.VN7008AJ_DIAG_RearLINActuatorPowerDriverC = ADC_Filter_Update(&env->ADC1_Filter_data.VN7008AJ_DIAG_RearLINActuatorPowerDriverC,ADC1_data->VN7008AJ_DIAG_RearLINActuatorPowerDriverC); + env->cmdBusADC2Data.PBATT_CHECK = ADC_Filter_Update(&env->ADC1_Filter_data.PBATT_CHECK,ADC1_data->PBATT_CHECK); + env->cmdBusADC2Data.VN7008AJ_FrontLINActuatorPowerDriverAB = ADC_Filter_Update(&env->ADC1_Filter_data.VN7008AJ_FrontLINActuatorPowerDriverAB,ADC1_data->VN7008AJ_FrontLINActuatorPowerDriverAB); + env->cmdBusADC2Data.VN7008AJ_RearLINActuatorPowerDriverC = ADC_Filter_Update(&env->ADC1_Filter_data.VN7008AJ_RearLINActuatorPowerDriverC,ADC1_data->VN7008AJ_RearLINActuatorPowerDriverC); + uint32_t countQueueCmdBusADC2Data = osMessageQueueGetSpace(env->queueCmdBusADC2Data); + + if (countQueueCmdBusADC2Data) { + osStatus_t status = osMessageQueuePut(env->queueCmdBusADC2Data, &env->cmdBusADC2Data, 0, 0U); + } /* rtDW.ADC_Data_Model.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB = pData[0]; rtDW.ADC_Data_Model.VN7008AJ_DIAG_RearLINActuatorPowerDriverC = pData[1]; @@ -697,19 +718,24 @@ static _Noreturn void Adc1_Thread(tAdc1Task *env) { // 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"); - } +// osMutexRelease(env->modelTaskAccess); +// } else { +// LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error Adc1_Thread"); +// } // ++env->step; -// if (env->step > MAX_ADC_FILTER_SIZE * 2) { -// SystemDelayMs(10); -// } + if (env->step > MAX_ADC_FILTER_SIZE * 2) { + SystemDelayMs(10); + } } } +void getCmdBusADC2Data(tAdc1Task *env, CmdBusADC2Data *cmdBusADC2Data) { + osStatus_t status = osMessageQueueGet(env->queueCmdBusADC2Data, cmdBusADC2Data, 0, 0); +} + + void Adc_1_StartThread(tAdc1Task *env) { if (!env->thread.id) { env->thread.id = osThreadNew((osThreadFunc_t) (Adc1_Thread), (void *) (env), &env->thread.attr); diff --git a/AdcTasks.h b/AdcTasks.h index e7bb41d..de08d71 100644 --- a/AdcTasks.h +++ b/AdcTasks.h @@ -11,6 +11,8 @@ #include "Gpios.h" #include "LoggerInterface.h" #include "AdcFilter.h" +#include "HVAC_model.h" + /* typedef struct { uint32_t Sensor_Ambient_Temp; @@ -206,7 +208,6 @@ typedef struct { tADC0_data ADC0_Data; tADC0_Filter_data ADC0_Filter_data; - osMutexId_t modelTaskAccess; uint8_t ADC_ChannelCount; @@ -216,7 +217,8 @@ typedef struct { osMessageQueueId_t queueRandom; - + CmdBusADCData cmdBusADCData; + osMessageQueueId_t queueCmdBusADCData; uint32_t step; @@ -229,6 +231,15 @@ typedef struct { } tAdc0Task; + +typedef struct { + uint16_t VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB; + uint16_t VN7008AJ_DIAG_RearLINActuatorPowerDriverC; + uint16_t PBATT_CHECK; + uint16_t VN7008AJ_FrontLINActuatorPowerDriverAB; + uint16_t VN7008AJ_RearLINActuatorPowerDriverC; +} CmdBusADC2Data; + typedef struct { tAdcIO *adcIO; @@ -238,12 +249,14 @@ typedef struct { tADC1_data ADC1_Data; tADC1_Filter_data ADC1_Filter_data; - osMutexId_t modelTaskAccess; + uint8_t ADC_ChannelCount; tGpios *gpios; + CmdBusADC2Data cmdBusADC2Data; + osMessageQueueId_t queueCmdBusADC2Data; uint32_t step; @@ -259,19 +272,21 @@ typedef struct { uint32_t getRandom32(tAdc0Task *env); void Adc_0_Init(tAdc0Task *env, - osMutexId_t modelTaskAccess, tAdcIO *adcIO, tGpios *gpios, tLoggerInterface *logger); void Adc_0_StartThread(tAdc0Task *env); +void getCmdBusADCData(tAdc0Task *env, CmdBusADCData *cmdBusADCData); + void Adc_1_Init(tAdc1Task *env, - osMutexId_t modelTaskAccess, tAdcIO *adcIO, tGpios *gpios, tLoggerInterface *logger); void Adc_1_StartThread(tAdc1Task *env); +void getCmdBusADC2Data(tAdc1Task *env, CmdBusADC2Data *cmdBusADC2Data); + #endif //HVAC_M7_ADCTASKS_H diff --git a/modular.json b/modular.json old mode 100755 new mode 100644