diff --git a/MainModesArbiter.c b/MainModesArbiter.c index 683600e..3736440 100644 --- a/MainModesArbiter.c +++ b/MainModesArbiter.c @@ -7,7 +7,7 @@ #include "HVAC_model.h" #include "LinActuatorWork.h" -#include "ADC_Temp_Table.h" +#include "ADC_Temp.h" const char LOG_TASK_ARB[] = "Arb"; @@ -222,8 +222,10 @@ void LoadDataInFromModel(tMma *env) { if (osMutexAcquire(env->ModelTask.access, 5000) == osOK) { - rtDW.ADC_Key_Data_Model.ST_ReservePower = GpioPinGet(&env->gpios->power.BTS4175SGAXUMA1_ReservePowerOutput.ST_ReservePower); - rtDW.ADC_Key_Data_Model.ST_BATTChiller = GpioPinGet(&env->gpios->power.BTS4175SGAXUMA1_ShutOFFValveBatteryChiller.ST_BATTChiller); + rtDW.ADC_Key_Data_Model.ST_ReservePower = GpioPinGet( + &env->gpios->power.BTS4175SGAXUMA1_ReservePowerOutput.ST_ReservePower); + rtDW.ADC_Key_Data_Model.ST_BATTChiller = GpioPinGet( + &env->gpios->power.BTS4175SGAXUMA1_ShutOFFValveBatteryChiller.ST_BATTChiller); rtDW.ADC_Key_Data_Model.EmergencyAirCleanSwitch = GpioPinGet(&env->gpios->EmergencyAirCleanSwitch); rtDW.ADC_Key_Data_Model.FireExtinguishSwitch = GpioPinGet(&env->gpios->FireExtinguishSwitch); rtDW.ADC_Key_Data_Model.Ign_Wakeup = GpioPinGet(&env->gpios->Ign_Wakeup); @@ -247,16 +249,18 @@ void LoadDataInFromModel(tMma *env) { rtDW.PWM_Set_Model.pwmPercentFront = env->pwms->pwmFrontCaptureIO.getPwm(env->pwms->pwmFrontCaptureIO.env); - rtDW.PWM_Set_Model.pwmPercentRear= env->pwms->pwmRearCaptureIO.getPwm(env->pwms->pwmRearCaptureIO.env); - rtDW.PWM_Set_Model.pwmPercentFrontReserved = env->pwms->pwmFrontCaptureIO.getPwm(env->pwms->pwmFrontReservedCaptureIO.env); - rtDW.PWM_Set_Model.pwmPercentRearReserved= env->pwms->pwmRearCaptureIO.getPwm(env->pwms->pwmRearReservedCaptureIO.env); - + rtDW.PWM_Set_Model.pwmPercentRear = env->pwms->pwmRearCaptureIO.getPwm(env->pwms->pwmRearCaptureIO.env); + rtDW.PWM_Set_Model.pwmPercentFrontReserved = env->pwms->pwmFrontCaptureIO.getPwm( + env->pwms->pwmFrontReservedCaptureIO.env); + rtDW.PWM_Set_Model.pwmPercentRearReserved = env->pwms->pwmRearCaptureIO.getPwm( + env->pwms->pwmRearReservedCaptureIO.env); env->pwms->pwmFrontIo.setActivePercent(env->pwms->pwmFrontIo.env, PWM_Get.pwmPercentFront); env->pwms->pwmRearIo.setActivePercent(env->pwms->pwmRearIo.env, PWM_Get.pwmPercentRear); - env->pwms->pwmFrontReservedIo.setActivePercent(env->pwms->pwmFrontReservedIo.env, PWM_Get.pwmPercentFrontReserved); - env->pwms->pwmRearReservedIo.setActivePercent(env->pwms->pwmRearReservedIo.env, PWM_Get.pwmPercentRearReserved ); + env->pwms->pwmFrontReservedIo.setActivePercent(env->pwms->pwmFrontReservedIo.env, + PWM_Get.pwmPercentFrontReserved); + env->pwms->pwmRearReservedIo.setActivePercent(env->pwms->pwmRearReservedIo.env, PWM_Get.pwmPercentRearReserved); rtDW.t_now = GetSystemTick(); @@ -280,7 +284,12 @@ static _Noreturn void Mma_Thread(tMma *env) { // Запуск устройства Mma_InitStage(env); - init_fast_lookup_table(ALG_STEINHART); + // Инициализируем обе таблицы одновременно с разными значениями R1 + init_both_tables(3000.0f, // R1 для KST45 + 3000.0f, // R1 для INCAR + ALG_STEINHART); + + can_rx_message_type frame_data; // uint32_t step = 0; @@ -312,6 +321,20 @@ static _Noreturn void Mma_Thread(tMma *env) { for (;;) { + if (osMutexAcquire(env->adcTask0.access, 1000) == osOK) { + uint16_t adc_value = env->adcTask0.ADC0_Data.Sensor_Front_Duct1; + + //ANALOG_SENSOR(env, "Sensor_Front_Duct1", env->adcTask0.ADC0_Data.Sensor_Front_Duct1); + // Получаем температуру для INCAR + int16_t temp_incar = get_temperature_log_fast_for_table(adc_value, TABLE_INCAR); + + LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "Sensor_Front_Duct1: ADC = %u, Temp = %.2f °C", adc_value, + temp_incar / 10.0f) + + + osMutexRelease(env->adcTask0.access); + } + /* env->pwms->pwmFrontIo.setActivePercent(env->pwms->pwmFrontIo.env, 40); env->pwms->pwmRearIo.setActivePercent(env->pwms->pwmRearIo.env, 50); @@ -334,7 +357,7 @@ static _Noreturn void Mma_Thread(tMma *env) { uint8_t pwm4 = env->pwms->pwmRearCaptureIO.getPwm(env->pwms->pwmRearReservedCaptureIO.env); LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "PWM (Rear Reserve) = %d", pwm4) */ - +/* LoadDataInFromModel(env); LinActuatorWork(env, &env->linTaskActuator1, @@ -354,7 +377,7 @@ static _Noreturn void Mma_Thread(tMma *env) { &env->ModelTask.triggerActuatorCmdBus_3, &env->actuator_Ch2_Input_Model_local_3, &rtDW.Actuator_Ch2_Status_Model, &env->ModelTask.triggerCommand3, "Ln3 "); - +*/ SystemDelayMs(50); GpioPinToggle(&env->gpios->led.LED_G);