Обновление после командировки 29.06.2026
This commit is contained in:
parent
5c21e7fe8a
commit
f1407a74b3
|
|
@ -37,91 +37,41 @@ void Mma_Init(
|
|||
env->thread.id = 0;
|
||||
}
|
||||
|
||||
void LoadDataInFromModel(tMma *env) {
|
||||
|
||||
|
||||
if (osMutexAcquire(env->ModelTask.access, 5000) == osOK) {
|
||||
void GetCanErrors(tMma *env, uint8_t canIndex) {
|
||||
FLEXCAN_ErrorInfoType errorInfo;
|
||||
|
||||
// Включение 5V (0 - ВКЛ)
|
||||
GpioPinSet(&env->gpios->power.SW5V_EN, rtY.PowerEnable_Model.SW5V_EN);
|
||||
// GpioPinSet(&env->gpios->power.SW5V_EN, true);
|
||||
// Получить информацию об ошибках
|
||||
FLEXCAN_ErrorType result = FLEXCAN_GetErrorInfo(canIndex, &errorInfo);
|
||||
|
||||
// Контроль напряжения борт-сети (1 - ВКЛ)
|
||||
GpioPinSet(&env->gpios->power.PBATT_CK_EN, rtY.PowerEnable_Model.PBATT_CK_EN);
|
||||
if (result == FLEXCAN_ERROR_OK) {
|
||||
// Количество ошибок приёма
|
||||
uint32_t rxErrors = errorInfo.u32RxErrCnt;
|
||||
uint32_t rxErrorsFast = errorInfo.u32RxErrCnt_Fast;
|
||||
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_Motor_Front_EN, rtY.PowerEnable_Model.Incar_Motor_Front_EN);
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_EN_Diag, true);
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_Motor_Rear_EN, rtY.PowerEnable_Model.Incar_Motor_Rear_EN);
|
||||
// Количество ошибок передачи
|
||||
uint32_t txErrors = errorInfo.u32TxErrCnt;
|
||||
uint32_t txErrorsFast = errorInfo.u32TxErrCnt_Fast;
|
||||
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN, rtY.PowerEnable_Model.TwoWayValve_EN);
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN_Diag, true);
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.ReservePower_EN, rtY.PowerEnable_Model.ReservePower_EN);
|
||||
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "RX Errors: %lu (normal), %lu (fast)\n", rxErrors, rxErrorsFast);
|
||||
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "TX Errors: %lu (normal), %lu (fast)\n", txErrors, txErrorsFast);
|
||||
|
||||
GpioPinSet(&env->gpios->power.BTS4175SGAXUMA1_ReservePowerOutput.EN_ReservePower, rtY.PowerEnable_Model.EN_ReservePower);
|
||||
GpioPinSet(&env->gpios->power.BTS4175SGAXUMA1_PowerReserve.EN_PowerReserve, rtY.PowerEnable_Model.EN_PowerReserve);
|
||||
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver1_EN, rtY.PowerEnable_Model.PtcRelayDriver1_EN);
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver_EN_Diag, true);
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver2_EN, rtY.PowerEnable_Model.PtcRelayDriver2_EN);
|
||||
|
||||
GpioPinSet(&env->gpios->power.VN7008AJ_FrontLINActuatorPowerDriverAB.LIN_ActPower_AB, rtY.PowerEnable_Model.LIN_ActPower_AB);
|
||||
GpioPinSet(&env->gpios->power.VN7008AJ_FrontLINActuatorPowerDriverAB.EN_CurrentSensing_AB, true);
|
||||
|
||||
GpioPinSet(&env->gpios->power.VN7008AJ_RearLINActuatorPowerDriverC.LIN_ActPower_C, rtY.PowerEnable_Model.LIN_ActPower_C);
|
||||
GpioPinSet(&env->gpios->power.VN7008AJ_RearLINActuatorPowerDriverC.EN_CurrentSensing_C, true);
|
||||
|
||||
GpioPinSet(&env->gpios->power.BTS4175SGAXUMA1_ShutOFFValveBatteryChiller.EN_BATTChiller, rtY.PowerEnable_Model.EN_BATTChiller);
|
||||
|
||||
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOffFront_EN, rtY.PowerEnable_Model.ShutOffFront_EN);
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOff_EN_Diag, true);
|
||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOffRear_EN, rtY.PowerEnable_Model.ShutOffRear_EN);
|
||||
|
||||
GpioPinSet(&env->gpios->power.BTS5120_2EKA_ShutoffValvePowerTXV.ShutOffTXV1_EN, rtY.PowerEnable_Model.ShutOffTXV1_EN);
|
||||
GpioPinSet(&env->gpios->power.BTS5120_2EKA_ShutoffValvePowerTXV.ShutOffTXV_EN_Diag, true);
|
||||
GpioPinSet(&env->gpios->power.BTS5120_2EKA_ShutoffValvePowerTXV.ShutOffTXV2_EN, rtY.PowerEnable_Model.ShutOffTXV2_EN);
|
||||
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "============================================== %d", 0)
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "SET pwmPercentFront = %d", rtY.PWM_Get_f.pwmPercentFront)
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "SET pwmPercentRear = %d", rtY.PWM_Get_f.pwmPercentRear)
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "SET pwmPercentFrontReserved = %d", rtY.PWM_Get_f.pwmPercentFrontReserved)
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "SET pwmPercentRearReserved = %d", rtY.PWM_Get_f.pwmPercentRearReserved)
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "============================================== %d", 0)
|
||||
|
||||
env->pwms->pwmFrontIo.setActivePercent(env->pwms->pwmFrontIo.env, rtY.PWM_Get_f.pwmPercentFront);
|
||||
env->pwms->pwmRearIo.setActivePercent(env->pwms->pwmRearIo.env, rtY.PWM_Get_f.pwmPercentRear);
|
||||
env->pwms->pwmFrontReservedIo.setActivePercent(env->pwms->pwmFrontReservedIo.env, rtY.PWM_Get_f.pwmPercentFrontReserved);
|
||||
env->pwms->pwmRearReservedIo.setActivePercent(env->pwms->pwmRearReservedIo.env, rtY.PWM_Get_f.pwmPercentRearReserved);
|
||||
|
||||
PWM_Get.pwmPercentFront = env->pwms->pwmFrontCaptureIO.getPwm(env->pwms->pwmFrontCaptureIO.env);
|
||||
PWM_Get.pwmPercentRear = env->pwms->pwmRearCaptureIO.getPwm(env->pwms->pwmRearCaptureIO.env);
|
||||
PWM_Get.pwmPercentFrontReserved = env->pwms->pwmFrontCaptureIO.getPwm(
|
||||
env->pwms->pwmFrontReservedCaptureIO.env);
|
||||
PWM_Get.pwmPercentRearReserved = env->pwms->pwmRearCaptureIO.getPwm(
|
||||
env->pwms->pwmRearReservedCaptureIO.env);
|
||||
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "GET pwmPercentFront = %d", PWM_Get.pwmPercentFront)
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "GET pwmPercentRear = %d", PWM_Get.pwmPercentRear)
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "GET pwmPercentFrontReserved = %d", PWM_Get.pwmPercentFrontReserved)
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "GET pwmPercentRearReserved = %d", PWM_Get.pwmPercentRearReserved)
|
||||
// LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "============================================== %d", 0)
|
||||
|
||||
set_Dtc_state(&env->Diagnostic);
|
||||
set_CanDebugSpamTransmitter(&env->canSpamDebugTransmitter);
|
||||
set_CanSpamTransmitter(&env->canSpamTransmitter);
|
||||
get_CanSpamReceiver(&env->canSpamReceiver);
|
||||
|
||||
osMutexRelease(env->ModelTask.access);
|
||||
// Общее количество ошибок
|
||||
uint32_t totalErrors = rxErrors + rxErrorsFast + txErrors + txErrorsFast;
|
||||
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "Total errors: %lu\n", totalErrors);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static _Noreturn void Mma_Thread(tMma *env) {
|
||||
|
||||
// Запуск устройства
|
||||
Mma_InitStage(env);
|
||||
|
||||
// env->pwms->pwmFrontIo.run(env->pwms->pwmFrontIo.env);
|
||||
env->pwms->pwmFrontIo.run(env->pwms->pwmFrontIo.env);
|
||||
|
||||
ModelTask_StartThread(&env->ModelTask);
|
||||
|
||||
|
|
@ -132,7 +82,6 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
|
||||
LoggerInfoStatic(LOGGER, LOG_TASK_ARB, "Model running...")
|
||||
|
||||
|
||||
// SMC_SetSystemMode(SMC_MODE_STANBY_3);
|
||||
|
||||
for (;;) {
|
||||
|
|
@ -140,7 +89,8 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
// bool ST_PowerReserve = GpioPinGet(&env->gpios->power.BTS4175SGAXUMA1_PowerReserve.ST_PowerReserve);
|
||||
// bool ST_ReservePower = GpioPinGet(&env->gpios->power.BTS4175SGAXUMA1_ReservePowerOutput.ST_ReservePower);
|
||||
|
||||
LoadDataInFromModel(env);
|
||||
|
||||
// GetCanErrors(env, 0);
|
||||
|
||||
|
||||
SystemDelayMs(25);
|
||||
|
|
|
|||
|
|
@ -117,9 +117,6 @@ static void Mma_InitSubSystems(tMma *env) {
|
|||
|
||||
// Indication_Init(&env->Indication, HVAC_DEV_MODE_STARTUP);
|
||||
|
||||
ModelTask_Init(&env->ModelTask, &env->linTaskActuator1, &env->linTaskActuator2, &env->linTaskActuator3,
|
||||
&env->slog.logger);
|
||||
|
||||
CommandLine_Init(&env->cli, &env->slog, &env->serialPorts->SerialPortLog_IO,
|
||||
&env->serialPorts->cliVirtualPortOut_Io);
|
||||
CommandLine_StartThread(&env->cli);
|
||||
|
|
@ -144,21 +141,78 @@ static void Mma_InitSubSystems(tMma *env) {
|
|||
|
||||
CanXcpProcessing_Listener_Start(&env->CanSerialPortFrameXCP);
|
||||
|
||||
CanSpamReceiver_Init(&env->canSpamReceiver, &env->canPorts->Can0_IO, env->ModelTask.access, &env->slog.logger);
|
||||
CanSpamReceiver_Init(&env->canSpamReceiver, &env->canPorts->Can0_IO, &env->slog.logger);
|
||||
CanSpamReceiver_StartThread(&env->canSpamReceiver);
|
||||
|
||||
CanSpamTransmitter_Init(&env->canSpamTransmitter, &env->canPorts->Can0_IO, env->ModelTask.access, &env->slog.logger);
|
||||
CanSpamTransmitter_Init(&env->canSpamTransmitter, &env->canPorts->Can0_IO, &env->slog.logger);
|
||||
CanSpamTransmitter_StartThread(&env->canSpamTransmitter);
|
||||
|
||||
|
||||
CanSpamDebugReceiver_Init(&env->canSpamDebugReceiver, &env->canPorts->Can1_IO, env->ModelTask.access, &env->slog.logger);
|
||||
CanSpamDebugReceiver_Init(&env->canSpamDebugReceiver, &env->canPorts->Can1_IO, &env->slog.logger);
|
||||
CanSpamDebugReceiver_StartThread(&env->canSpamDebugReceiver);
|
||||
|
||||
CanSpamDebugTransmitter_Init(&env->canSpamDebugTransmitter, &env->canPorts->Can1_IO, &env->canSpamDebugReceiver, env->ModelTask.access,
|
||||
CanSpamDebugTransmitter_Init(&env->canSpamDebugTransmitter, &env->canPorts->Can1_IO, &env->canSpamDebugReceiver,
|
||||
&env->slog.logger);
|
||||
CanSpamDebugTransmitter_StartThread(&env->canSpamDebugTransmitter);
|
||||
|
||||
|
||||
tLinData *linData4 = Lin4_Init(GetLin123CallbackHandler);
|
||||
Lin_4_Init(&env->linTaskSensor4, linData4, &env->linPorts->lin4_Io, &env->slog.logger);
|
||||
// Lin4_StartThread(&env->linTaskSensor4);
|
||||
|
||||
tLinData *linData5 = Lin5_Init(GetLin123CallbackHandler);
|
||||
Lin_5_Init(&env->linTaskSensor5, linData5, &env->linPorts->lin5_Io, &env->slog.logger);
|
||||
Lin5_StartThread(&env->linTaskSensor5);
|
||||
|
||||
|
||||
// tLinData *linData6 = Lin6_Init(GetLin123CallbackHandler);
|
||||
// Lin_6_Init(&env->linTaskSensor6, linData6, &env->linPorts->lin6_Io, &env->slog.logger);
|
||||
// Lin6_StartThread(&env->linTaskSensor6);
|
||||
|
||||
Adc_0_Init(&env->adcTask0, &env->adcs->adc_0_IO, env->gpios, &env->slog.logger);
|
||||
Adc_0_StartThread(&env->adcTask0);
|
||||
|
||||
Adc_1_Init(&env->adcTask1, &env->adcs->adc_1_IO, env->gpios, &env->slog.logger);
|
||||
Adc_1_StartThread(&env->adcTask1);
|
||||
|
||||
CanUds_Init(
|
||||
&env->canUds,
|
||||
&env->Diagnostic,
|
||||
&env->canPorts->Can0_IO,
|
||||
&env->storage,
|
||||
&env->canSpamTransmitter,
|
||||
&env->canSpamDebugTransmitter,
|
||||
&env->adcTask0,
|
||||
&P_bInternalFlashPage_ClearRange,
|
||||
&P_bInternalFlashPage_WriteFromRam,
|
||||
&env->slog.logger);
|
||||
|
||||
CanSerialPortCanUds_Start(&env->canUds);
|
||||
|
||||
StandBy_Init();
|
||||
|
||||
|
||||
ModelTask_Init(
|
||||
&env->ModelTask,
|
||||
&env->linTaskActuator1,
|
||||
&env->linTaskActuator2,
|
||||
&env->linTaskActuator3,
|
||||
|
||||
env->pwms,
|
||||
|
||||
env->gpios,
|
||||
|
||||
&env->adcTask0,
|
||||
&env->adcTask1,
|
||||
|
||||
&env->canSpamReceiver,
|
||||
&env->canSpamTransmitter,
|
||||
&env->canSpamDebugTransmitter,
|
||||
&env->Diagnostic,
|
||||
|
||||
&env->slog.logger
|
||||
);
|
||||
|
||||
|
||||
tLinData *linData1 = Lin1_Init(GetLin123CallbackHandler);
|
||||
Lin_1_Init(&env->linTaskActuator1,
|
||||
linData1, &env->linPorts->lin1_Io, 9,
|
||||
|
|
@ -196,41 +250,6 @@ static void Mma_InitSubSystems(tMma *env) {
|
|||
|
||||
Lin3_StartThread(&env->linTaskActuator3);
|
||||
|
||||
tLinData *linData4 = Lin4_Init(GetLin123CallbackHandler);
|
||||
Lin_4_Init(&env->linTaskSensor4, linData4, &env->linPorts->lin4_Io, &env->slog.logger);
|
||||
// Lin4_StartThread(&env->linTaskSensor4);
|
||||
|
||||
tLinData *linData5 = Lin5_Init(GetLin123CallbackHandler);
|
||||
Lin_5_Init(&env->linTaskSensor5, linData5, &env->linPorts->lin5_Io, &env->slog.logger);
|
||||
Lin5_StartThread(&env->linTaskSensor5);
|
||||
|
||||
|
||||
// tLinData *linData6 = Lin6_Init(GetLin123CallbackHandler);
|
||||
// Lin_6_Init(&env->linTaskSensor6, linData6, &env->linPorts->lin6_Io, &env->slog.logger);
|
||||
// Lin6_StartThread(&env->linTaskSensor6);
|
||||
|
||||
Adc_0_Init(&env->adcTask0, env->ModelTask.access, &env->adcs->adc_0_IO, env->gpios, &env->slog.logger);
|
||||
Adc_0_StartThread(&env->adcTask0);
|
||||
|
||||
Adc_1_Init(&env->adcTask1, env->ModelTask.access, &env->adcs->adc_1_IO, env->gpios, &env->slog.logger);
|
||||
Adc_1_StartThread(&env->adcTask1);
|
||||
|
||||
CanUds_Init(
|
||||
&env->canUds,
|
||||
&env->Diagnostic,
|
||||
&env->canPorts->Can0_IO,
|
||||
&env->storage,
|
||||
&env->canSpamTransmitter,
|
||||
&env->canSpamDebugTransmitter,
|
||||
&env->adcTask0,
|
||||
&P_bInternalFlashPage_ClearRange,
|
||||
&P_bInternalFlashPage_WriteFromRam,
|
||||
&env->slog.logger);
|
||||
|
||||
CanSerialPortCanUds_Start(&env->canUds);
|
||||
|
||||
StandBy_Init();
|
||||
|
||||
|
||||
LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "End of subsystem initialization")
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
void InitPeripheralInterfaces(tLoggerInterface *logger) {
|
||||
Gpios_Init();
|
||||
|
||||
CanPorts_Init(logger);
|
||||
Adcs_Init(logger);
|
||||
Pwms_Init(logger);
|
||||
|
|
|
|||
Loading…
Reference in New Issue