Обновление после командировки 29.06.2026
This commit is contained in:
parent
5c21e7fe8a
commit
f1407a74b3
|
|
@ -37,91 +37,41 @@ void Mma_Init(
|
||||||
env->thread.id = 0;
|
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);
|
FLEXCAN_ErrorType result = FLEXCAN_GetErrorInfo(canIndex, &errorInfo);
|
||||||
// GpioPinSet(&env->gpios->power.SW5V_EN, true);
|
|
||||||
|
|
||||||
// Контроль напряжения борт-сети (1 - ВКЛ)
|
if (result == FLEXCAN_ERROR_OK) {
|
||||||
GpioPinSet(&env->gpios->power.PBATT_CK_EN, rtY.PowerEnable_Model.PBATT_CK_EN);
|
// Количество ошибок приёма
|
||||||
|
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);
|
uint32_t txErrors = errorInfo.u32TxErrCnt;
|
||||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_Motor_Rear_EN, rtY.PowerEnable_Model.Incar_Motor_Rear_EN);
|
uint32_t txErrorsFast = errorInfo.u32TxErrCnt_Fast;
|
||||||
|
|
||||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN, rtY.PowerEnable_Model.TwoWayValve_EN);
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "RX Errors: %lu (normal), %lu (fast)\n", rxErrors, rxErrorsFast);
|
||||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN_Diag, true);
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "TX Errors: %lu (normal), %lu (fast)\n", txErrors, txErrorsFast);
|
||||||
GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.ReservePower_EN, rtY.PowerEnable_Model.ReservePower_EN);
|
|
||||||
|
|
||||||
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);
|
uint32_t totalErrors = rxErrors + rxErrorsFast + txErrors + txErrorsFast;
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "Total errors: %lu\n", totalErrors);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static _Noreturn void Mma_Thread(tMma *env) {
|
static _Noreturn void Mma_Thread(tMma *env) {
|
||||||
|
|
||||||
// Запуск устройства
|
// Запуск устройства
|
||||||
Mma_InitStage(env);
|
Mma_InitStage(env);
|
||||||
|
|
||||||
// env->pwms->pwmFrontIo.run(env->pwms->pwmFrontIo.env);
|
env->pwms->pwmFrontIo.run(env->pwms->pwmFrontIo.env);
|
||||||
|
|
||||||
ModelTask_StartThread(&env->ModelTask);
|
ModelTask_StartThread(&env->ModelTask);
|
||||||
|
|
||||||
|
|
@ -132,7 +82,6 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
||||||
|
|
||||||
LoggerInfoStatic(LOGGER, LOG_TASK_ARB, "Model running...")
|
LoggerInfoStatic(LOGGER, LOG_TASK_ARB, "Model running...")
|
||||||
|
|
||||||
|
|
||||||
// SMC_SetSystemMode(SMC_MODE_STANBY_3);
|
// SMC_SetSystemMode(SMC_MODE_STANBY_3);
|
||||||
|
|
||||||
for (;;) {
|
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_PowerReserve = GpioPinGet(&env->gpios->power.BTS4175SGAXUMA1_PowerReserve.ST_PowerReserve);
|
||||||
// bool ST_ReservePower = GpioPinGet(&env->gpios->power.BTS4175SGAXUMA1_ReservePowerOutput.ST_ReservePower);
|
// bool ST_ReservePower = GpioPinGet(&env->gpios->power.BTS4175SGAXUMA1_ReservePowerOutput.ST_ReservePower);
|
||||||
|
|
||||||
LoadDataInFromModel(env);
|
|
||||||
|
// GetCanErrors(env, 0);
|
||||||
|
|
||||||
|
|
||||||
SystemDelayMs(25);
|
SystemDelayMs(25);
|
||||||
|
|
|
||||||
|
|
@ -117,9 +117,6 @@ static void Mma_InitSubSystems(tMma *env) {
|
||||||
|
|
||||||
// Indication_Init(&env->Indication, HVAC_DEV_MODE_STARTUP);
|
// 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,
|
CommandLine_Init(&env->cli, &env->slog, &env->serialPorts->SerialPortLog_IO,
|
||||||
&env->serialPorts->cliVirtualPortOut_Io);
|
&env->serialPorts->cliVirtualPortOut_Io);
|
||||||
CommandLine_StartThread(&env->cli);
|
CommandLine_StartThread(&env->cli);
|
||||||
|
|
@ -144,21 +141,78 @@ static void Mma_InitSubSystems(tMma *env) {
|
||||||
|
|
||||||
CanXcpProcessing_Listener_Start(&env->CanSerialPortFrameXCP);
|
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);
|
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);
|
CanSpamTransmitter_StartThread(&env->canSpamTransmitter);
|
||||||
|
|
||||||
|
CanSpamDebugReceiver_Init(&env->canSpamDebugReceiver, &env->canPorts->Can1_IO, &env->slog.logger);
|
||||||
CanSpamDebugReceiver_Init(&env->canSpamDebugReceiver, &env->canPorts->Can1_IO, env->ModelTask.access, &env->slog.logger);
|
|
||||||
CanSpamDebugReceiver_StartThread(&env->canSpamDebugReceiver);
|
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);
|
&env->slog.logger);
|
||||||
CanSpamDebugTransmitter_StartThread(&env->canSpamDebugTransmitter);
|
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);
|
tLinData *linData1 = Lin1_Init(GetLin123CallbackHandler);
|
||||||
Lin_1_Init(&env->linTaskActuator1,
|
Lin_1_Init(&env->linTaskActuator1,
|
||||||
linData1, &env->linPorts->lin1_Io, 9,
|
linData1, &env->linPorts->lin1_Io, 9,
|
||||||
|
|
@ -196,41 +250,6 @@ static void Mma_InitSubSystems(tMma *env) {
|
||||||
|
|
||||||
Lin3_StartThread(&env->linTaskActuator3);
|
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")
|
LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "End of subsystem initialization")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
void InitPeripheralInterfaces(tLoggerInterface *logger) {
|
void InitPeripheralInterfaces(tLoggerInterface *logger) {
|
||||||
Gpios_Init();
|
Gpios_Init();
|
||||||
|
|
||||||
CanPorts_Init(logger);
|
CanPorts_Init(logger);
|
||||||
Adcs_Init(logger);
|
Adcs_Init(logger);
|
||||||
Pwms_Init(logger);
|
Pwms_Init(logger);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue