diff --git a/AdcTasks.c b/AdcTasks.c index e1aa3a2..450f0d4 100644 --- a/AdcTasks.c +++ b/AdcTasks.c @@ -478,7 +478,7 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) { ++env->step; - if (env->step > MAX_ADC_FILTER_SIZE) { + if (env->step > MAX_ADC_FILTER_SIZE * 2) { SystemDelayMs(50); } } @@ -517,6 +517,13 @@ void Adc_1_Init(tAdc1Task *env, env->access = osMutexNew(NULL); env->gpios = gpios; + + 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); + ADC_Filter_Init(&env->ADC1_Filter_data.PBATT_CHECK, MAX_ADC_FILTER_SIZE); + ADC_Filter_Init(&env->ADC1_Filter_data.VN7008AJ_FrontLINActuatorPowerDriverAB, MAX_ADC_FILTER_SIZE); + ADC_Filter_Init(&env->ADC1_Filter_data.VN7008AJ_RearLINActuatorPowerDriverC, MAX_ADC_FILTER_SIZE); + InitThreadAtrStatic(&env->thread.attr, "Adc1", env->thread.controlBlock, env->thread.stack, osPriorityNormal); } @@ -529,16 +536,25 @@ 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; + if (osMutexAcquire(env->modelTaskAccess, 5000) == osOK) { - uint32_t *pData = (uint32_t *) ADC_Pointer_Data; + 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); + +/* rtDW.ADC_Data_Model.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB = pData[0]; rtDW.ADC_Data_Model.VN7008AJ_DIAG_RearLINActuatorPowerDriverC = pData[1]; rtDW.ADC_Data_Model.PBATT_CHECK = pData[2]; rtDW.ADC_Data_Model.VN7008AJ_FrontLINActuatorPowerDriverAB = pData[3]; rtDW.ADC_Data_Model.VN7008AJ_RearLINActuatorPowerDriverC = pData[4]; - +*/ /* rtDW.ADC_Data_Model.PT_F_HVAC_VCC_DIAG = pData[5]; // PT_F_HVAC_VCC_DIAG rtDW.ADC_Data_Model.PT_HVBchiller_VCC_DIAG = pData[6]; // PT_HVBchiller_VCC_DIAG @@ -591,7 +607,7 @@ static _Noreturn void Adc1_Thread(tAdc1Task *env) { ++env->step; - if (env->step > MAX_ADC_FILTER_SIZE) { + if (env->step > MAX_ADC_FILTER_SIZE * 2) { SystemDelayMs(50); } }