diff --git a/LinActuatorWork.c b/LinActuatorWork.c index dddc57f..0456d5e 100644 --- a/LinActuatorWork.c +++ b/LinActuatorWork.c @@ -2,7 +2,7 @@ // Created by cfif on 20.01.2026. // #include "LinActuatorWork.h" - +/* void LinActuatorWork(tMma *env) { if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) { @@ -89,4 +89,5 @@ void LinActuatorWork(tMma *env) { } -} \ No newline at end of file +} + */ \ No newline at end of file diff --git a/MainModesArbiter.c b/MainModesArbiter.c index b39b2d0..71a28a2 100644 --- a/MainModesArbiter.c +++ b/MainModesArbiter.c @@ -39,6 +39,53 @@ void Mma_Init( //uint8_t dataR[1024 * 2]; + +void LoadDataInFromModel(tMma *env) { + int16_t temp1 = 0; + int16_t temp2 = 0; + + if (osMutexAcquire(env->adcTask0.access, 1000) == osOK) { + temp1 = get_temperature_fast(env->adcTask0.ADC_Data[0], fast_lookup_Incar, 512); + + env->rtDW.controllerDataIncarInput.InIncarFL = env->adcTask0.ADC_Data[0]; + + osMutexRelease(env->adcTask0.access); + //LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "Temp1 = %d", temp1) + } + + if (osMutexAcquire(env->adcTask1.access, 1000) == osOK) { + temp2 = get_temperature_fast(env->adcTask1.ADC_Data[0], fast_lookup_KST45, 512); + + env->rtDW.controllerDataIncarInput.InIncarFR = env->adcTask1.ADC_Data[0]; + + osMutexRelease(env->adcTask1.access); + //LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "Temp2 = %d", temp2) + } + + if (osMutexAcquire(env->ModelTask.access, 5000) == osOK) { + rtDW.t_now = GetSystemTick(); + memcpy(&rtDW.controllerDataIncarInput, &env->rtDW, sizeof(env->rtDW)); + + if (env->ModelTask.isUpdate) { + env->ModelTask.isUpdate = false; + + + //bool IncarFLErr; + //bool IncarFRErr; + //bool IncarRLErr; + //bool IncarRRErr; + + + env->CCU_Errors.CCU_IncarTempErrF_Stat = 0; // CANIncarTempErrF + env->CCU_Errors.CCU_IncarTempErrR_Stat = 0; // CANIncarTempErrR + set_CCU_Errors(&env->canSpamTransmitter, &env->CCU_Errors); + + } + + osMutexRelease(env->ModelTask.access); + } +} + static _Noreturn void Mma_Thread(tMma *env) { // Инициализация периферийных интерфейсов @@ -50,8 +97,7 @@ static _Noreturn void Mma_Thread(tMma *env) { can_rx_message_type frame_data; uint32_t step = 0; - int16_t temp1 = 0; - int16_t temp2 = 0; + if (RGM_SRS_WAKEUP_MASK == (RGM->SRS & RGM_SRS_WAKEUP_MASK)) { LoggerInfoStatic(LOGGER, LOG_TASK_ARB, "Wake up from standby") @@ -59,7 +105,9 @@ static _Noreturn void Mma_Thread(tMma *env) { SystemDelayMs(1000); -// ModelTask_StartThread(&env->ModelTask); + LoadDataInFromModel(env); + + ModelTask_StartThread(&env->ModelTask); /* @@ -76,7 +124,7 @@ static _Noreturn void Mma_Thread(tMma *env) { env->pwms->pwmIo.run(env->pwms->pwmIo.env); for (;;) { - +/* env->pwms->pwmIo.setActivePercent(env->pwms->pwmIo.env, 77); SystemDelayMs(10); uint8_t pwm = env->pwms->pwmCaptureIO.getPwm(env->pwms->pwmCaptureIO.env); @@ -87,19 +135,9 @@ static _Noreturn void Mma_Thread(tMma *env) { pwm = env->pwms->pwmCaptureIO.getPwm(env->pwms->pwmCaptureIO.env); //LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "PWM = %d", pwm) +*/ - - - - - - - - - - - - + LoadDataInFromModel(env); /* diff --git a/MainModesArbiter.h b/MainModesArbiter.h index 1742b0d..669fe4d 100644 --- a/MainModesArbiter.h +++ b/MainModesArbiter.h @@ -77,8 +77,11 @@ typedef struct { osThreadAttr_t attr; } thread; - ExtU rtU_local; - ExtY rtY_local; +// ExtU rtU_local; +// ExtY rtY_local; + DW rtDW; + + CCU_Errors_t CCU_Errors; bool isActuatorWorkBusy;