From 8ec7db34b5c28d05f4ddbb1494ff21ba23e04add Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 12 Dec 2025 16:21:37 +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 | 56 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/MainModesArbiter.c b/MainModesArbiter.c index 22e62c8..1bc1c4e 100644 --- a/MainModesArbiter.c +++ b/MainModesArbiter.c @@ -30,8 +30,56 @@ static _Noreturn void Mma_Thread(tMma *env) { can_rx_message_type frame_data; + uint32_t step = 0; + for (;;) { + if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) { + + + if (env->linTaskActuator0.linCommandActuator[0].COM == LIN_ACT_CFR_NONE) { + + switch (step) { + case 0: { + env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_MOD; + env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; + env->linTaskActuator0.linCommandActuator[0].MODE = LIN_MODE_STOP; + break; + } + case 1: { + env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_INI; + env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; + env->linTaskActuator0.linCommandActuator[0].POS = 6000; + break; + } + case 2: { + env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_MOD; + env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; + env->linTaskActuator0.linCommandActuator[0].MODE = LIN_MODE_NORMAL; + break; + } + case 3: { + env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_SET; + env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; + env->linTaskActuator0.linCommandActuator[0].POS = 0; + env->linTaskActuator0.linCommandActuator[0].Stall_SET = 1; + env->linTaskActuator0.linCommandActuator[0].Lnoise_SET = 0; + env->linTaskActuator0.linCommandActuator[0].Autos_SET = 1; + env->linTaskActuator0.linCommandActuator[0].Speed_SET = 0; + env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 1; + break; + } + default: { + } + } + + ++step; + } + + osMutexRelease(env->linTaskActuator0.access); + } + +/* uint16_t len = env->canPorts->Can0_IO.receive(env->canPorts->Can0_IO.env, 0, (uint8_t *)&frame_data, 1, 1000); if (len > 0) { @@ -47,15 +95,9 @@ static _Noreturn void Mma_Thread(tMma *env) { env->canPorts->Can0_IO.transmit(env->canPorts->Can0_IO.env, frame_data.data, frame_data.dlc, 1000); } +*/ - //uint8_t data[8] = {'1', '2', '3', '4', '5', '6', '7', '8'}; - //env->canPorts->Can0_IO.transmit(env->canPorts->Can0_IO.env, data, 8, 0); - -// GpioPinSet(&env->gpios->Led.ledR, true); - //SystemDelayMs(500); -// GpioPinSet(&env->gpios->Led.ledR, false); - } }