diff --git a/MainModesArbiter.c b/MainModesArbiter.c index 1bc1c4e..e818ed4 100644 --- a/MainModesArbiter.c +++ b/MainModesArbiter.c @@ -44,18 +44,21 @@ static _Noreturn void Mma_Thread(tMma *env) { env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_MOD; env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; env->linTaskActuator0.linCommandActuator[0].MODE = LIN_MODE_STOP; + ++step; 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; + ++step; 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; + ++step; break; } case 3: { @@ -67,13 +70,50 @@ static _Noreturn void Mma_Thread(tMma *env) { env->linTaskActuator0.linCommandActuator[0].Autos_SET = 1; env->linTaskActuator0.linCommandActuator[0].Speed_SET = 0; env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 1; + ++step; break; } + + case 4: { + if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL == 0) { + ++step; + } + break; + } + + case 5: { + env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_INI; + env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; + env->linTaskActuator0.linCommandActuator[0].POS = 0; + ++step; + break; + } + + case 6: { + env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_SET; + env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; + env->linTaskActuator0.linCommandActuator[0].POS = 32000; + 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; + ++step; + break; + } + + case 7: { + if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL >= 32000) { + ++step; + } + break; + } + default: { } } - ++step; + } osMutexRelease(env->linTaskActuator0.access);