Обновление после командировки 29.06.2026
This commit is contained in:
parent
9c6f14f3c5
commit
d101023c1d
|
|
@ -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 элемента (для избежания ошибок компиляции)
|
||||
|
|
|
|||
168
AdcTasks.c
168
AdcTasks.c
|
|
@ -5,29 +5,26 @@
|
|||
#include "CmsisRtosThreadUtils.h"
|
||||
#include <SystemDelayInterface.h>
|
||||
#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,26 +547,34 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) {
|
|||
|
||||
|
||||
|
||||
uint32_t countQueueCmdBusADCData = osMessageQueueGetSpace(env->queueCmdBusADCData);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
osMutexRelease(env->modelTaskAccess);
|
||||
} else {
|
||||
LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error Adc0_Thread");
|
||||
if (countQueueCmdBusADCData) {
|
||||
osStatus_t status = osMessageQueuePut(env->queueCmdBusADCData, &env->cmdBusADCData, 0, 0U);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
25
AdcTasks.h
25
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue