From 890f4c2ef52d3100a191afb4a94fafe6e5fcb0a2 Mon Sep 17 00:00:00 2001 From: cfif Date: Thu, 15 Jan 2026 12:08:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MainModesArbiter.c | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/MainModesArbiter.c b/MainModesArbiter.c index 88e0402..55e8b5d 100644 --- a/MainModesArbiter.c +++ b/MainModesArbiter.c @@ -39,6 +39,9 @@ void Mma_Init( static _Noreturn void Mma_Thread(tMma *env) { + // Инициализация периферийных интерфейсов + InitPeripheralInterfaces(); + // Запуск устройства Mma_InitStage(env); @@ -58,14 +61,27 @@ static _Noreturn void Mma_Thread(tMma *env) { bool isActuatorWorkBusy = false; -// env->pwms->pwmIo.run(env->pwms->pwmIo.env); + +// GpioPinSet(&env->gpios->led.LED1, true); +// GpioPinSet(&env->gpios->led.LED1, false); + + + env->pwms->pwmIo.run(env->pwms->pwmIo.env); bool busy = true; + for (;;) { + env->pwms->pwmIo.setActivePercent(env->pwms->pwmIo.env, 77); + SystemDelayMs(10); + uint8_t pwm = env->pwms->pwmCaptureIO.getPwm(env->pwms->pwmCaptureIO.env); + LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "PWM = %d", pwm) - + env->pwms->pwmIo.setActivePercent(env->pwms->pwmIo.env, 22); + SystemDelayMs(10); + pwm = env->pwms->pwmCaptureIO.getPwm(env->pwms->pwmCaptureIO.env); + LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "PWM = %d", pwm) if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) { @@ -94,13 +110,13 @@ static _Noreturn void Mma_Thread(tMma *env) { env->linTaskActuator0.linCommandActuator[i].Speed_SET = env->rtY_local.Out1.Speed_SET[i]; env->linTaskActuator0.linCommandActuator[i].Coils_Stop_SET = env->rtY_local.Out1.Coils_Stop_SET[i]; - env->rtU_local.in_CPOS_ALL_Ch0[i] = (int16_t)env->linTaskActuator0.linStateActuator[i].CPOS_ALL; - env->rtU_local.in_Act_Emrf_Slave_Ch0[i] = (int8_t)env->linTaskActuator0.linStateActuator[i].Emrf_Slave; - env->rtU_local.in_Mode_Slave_Ch0[i] = (int8_t)env->linTaskActuator0.linStateActuator[i].Mode_Slave; - env->rtU_local.in_Act_Err1_Supply_Ch0[i] = (int8_t)env->linTaskActuator0.linStateActuator[i].Error1_Supply_Slave; - env->rtU_local.in_Act_Err2_Communication_Ch0[i] = (int8_t)env->linTaskActuator0.linStateActuator[i].Error2_Communication_Slave; - env->rtU_local.in_Act_Err3_Temperature_Ch0[i] = (int8_t)env->linTaskActuator0.linStateActuator[i].Error3_Temperature_Slave; - env->rtU_local.in_Act_Err4_Permanent_Electrical_Ch0[i] = (int8_t)env->linTaskActuator0.linStateActuator[i].Error4_Permanent_Electrical_Slave; + env->rtU_local.in_CPOS_ALL_Ch0[i] = (int16_t) env->linTaskActuator0.linStateActuator[i].CPOS_ALL; + env->rtU_local.in_Act_Emrf_Slave_Ch0[i] = (int8_t) env->linTaskActuator0.linStateActuator[i].Emrf_Slave; + env->rtU_local.in_Mode_Slave_Ch0[i] = (int8_t) env->linTaskActuator0.linStateActuator[i].Mode_Slave; + env->rtU_local.in_Act_Err1_Supply_Ch0[i] = (int8_t) env->linTaskActuator0.linStateActuator[i].Error1_Supply_Slave; + env->rtU_local.in_Act_Err2_Communication_Ch0[i] = (int8_t) env->linTaskActuator0.linStateActuator[i].Error2_Communication_Slave; + env->rtU_local.in_Act_Err3_Temperature_Ch0[i] = (int8_t) env->linTaskActuator0.linStateActuator[i].Error3_Temperature_Slave; + env->rtU_local.in_Act_Err4_Permanent_Electrical_Ch0[i] = (int8_t) env->linTaskActuator0.linStateActuator[i].Error4_Permanent_Electrical_Slave; env->rtU_local.in_Act_Stall_Slave_Ch0[i] = env->linTaskActuator0.linStateActuator[i].Stall_Slave; env->rtU_local.in_Act_Reset_Ch0[i] = env->linTaskActuator0.linStateActuator[i].Reset_Slave; } @@ -133,7 +149,7 @@ static _Noreturn void Mma_Thread(tMma *env) { isActuatorWorkBusy = true; // Сброс STALL в состоянии актуатор и локальном состоянии - resetStall(&env->linTaskActuator0, (uint8_t *)env->rtU_local.in_Act_Stall_Slave_Ch0); + resetStall(&env->linTaskActuator0, (uint8_t *) env->rtU_local.in_Act_Stall_Slave_Ch0); // Копирование команд for (uint8_t i = 0; i < 9; ++i) {