Обновление

This commit is contained in:
cfif 2025-12-17 17:28:47 +03:00
parent d6e7c81777
commit 35d3424462
2 changed files with 92 additions and 50 deletions

View File

@ -48,13 +48,14 @@ static _Noreturn void Mma_Thread(tMma *env) {
}
for (;;) {
/*
LoggerInfoStatic(&env->slog.logger, LOG_TASK_ARB, "Zorro...")
printf("Test Test Test Test Test Test Test Test Test Test XA XA ...\n");
GpioPinToggle(&env->gpios->led.LED1);
SystemDelayMs(500);
*/
/*
if (RGM_SRS_WAKEUP_MASK == (RGM->SRS & RGM_SRS_WAKEUP_MASK)) {
@ -77,37 +78,50 @@ static _Noreturn void Mma_Thread(tMma *env) {
LoggerFormatInfo(&env->slog.logger, LOG_TASK_ARB, "Temp2 = %d", temp2)
}
*/
/*
bool isBusy = true;
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
if (env->linTaskActuator0.linCommandActuator[0].COM == LIN_ACT_CFR_NONE) {
isBusy = false;
}
osMutexRelease(env->linTaskActuator0.access);
}
switch (step) {
case 0: {
if (isBusy == false) {
switch (step) {
case 0: {
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
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;
osMutexRelease(env->linTaskActuator0.access);
}
case 1: {
break;
}
case 1: {
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_INI;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].POS = 6000;
++step;
break;
osMutexRelease(env->linTaskActuator0.access);
}
case 2: {
break;
}
case 2: {
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
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;
osMutexRelease(env->linTaskActuator0.access);
}
case 3: {
break;
}
case 3: {
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_SET;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].POS = 0;
@ -116,28 +130,40 @@ static _Noreturn void Mma_Thread(tMma *env) {
env->linTaskActuator0.linCommandActuator[0].Autos_SET = 1;
env->linTaskActuator0.linCommandActuator[0].Speed_SET = 3;
env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 0;
++step;
break;
}
case 4: {
SystemDelayMs(3000);
++step;
//if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL == 0) {
// ++step;
//}
break;
}
resetStall(&env->linTaskActuator0);
++step;
osMutexRelease(env->linTaskActuator0.access);
}
break;
}
case 4: {
SystemDelayMs(10000);
asm("nop");
++step;
//if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL == 0) {
// ++step;
//}
break;
}
case 5: {
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
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;
osMutexRelease(env->linTaskActuator0.access);
}
break;
}
case 6: {
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
case 6: {
env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_SET;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].POS = 6000;
@ -146,18 +172,29 @@ static _Noreturn void Mma_Thread(tMma *env) {
env->linTaskActuator0.linCommandActuator[0].Autos_SET = 1;
env->linTaskActuator0.linCommandActuator[0].Speed_SET = 3;
env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 0;
resetStall(&env->linTaskActuator0);
++step;
break;
osMutexRelease(env->linTaskActuator0.access);
}
break;
}
case 7: {
if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL >= 6000) {
++step;
}
break;
}
case 7: {
SystemDelayMs(10000);
asm("nop");
++step;
//if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL >= 6000) {
// ++step;
//}
break;
}
case 8: {
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
case 8: {
env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_SET;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].POS = 8000;
@ -166,27 +203,31 @@ static _Noreturn void Mma_Thread(tMma *env) {
env->linTaskActuator0.linCommandActuator[0].Autos_SET = 1;
env->linTaskActuator0.linCommandActuator[0].Speed_SET = 3;
env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 0;
resetStall(&env->linTaskActuator0);
++step;
break;
}
case 9: {
if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL >= 8000) {
++step;
}
break;
}
default: {
osMutexRelease(env->linTaskActuator0.access);
}
break;
}
case 9: {
if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL >= 8000) {
++step;
}
break;
}
default: {
}
}
osMutexRelease(env->linTaskActuator0.access);
}
*/
/*
uint16_t len = env->canPorts->Can0_IO.receive(env->canPorts->Can0_IO.env, 0, (uint8_t *)&frame_data, 1, 1000);
@ -205,6 +246,7 @@ static _Noreturn void Mma_Thread(tMma *env) {
}
*/
SystemDelayMs(100);
}
}

View File

@ -80,7 +80,7 @@ static void Mma_InitSubSystems(tMma *env) {
*/
tLinData *linData = Lin0_Init(GetLin0CallbackHandler);
Lin_0_Init(&env->linTaskActuator0, linData, &env->linPorts->lin0_Io);
Lin_0_Init(&env->linTaskActuator0, linData, &env->linPorts->lin0_Io, &env->slog.logger);
Lin0_StartThread(&env->linTaskActuator0);
Adc_0_Init(&env->adcTask0, &env->adcs->adc_0_IO);