Обновление

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 (;;) { for (;;) {
/*
LoggerInfoStatic(&env->slog.logger, LOG_TASK_ARB, "Zorro...") LoggerInfoStatic(&env->slog.logger, LOG_TASK_ARB, "Zorro...")
printf("Test Test Test Test Test Test Test Test Test Test XA XA ...\n"); printf("Test Test Test Test Test Test Test Test Test Test XA XA ...\n");
GpioPinToggle(&env->gpios->led.LED1); GpioPinToggle(&env->gpios->led.LED1);
SystemDelayMs(500); SystemDelayMs(500);
*/
/* /*
if (RGM_SRS_WAKEUP_MASK == (RGM->SRS & RGM_SRS_WAKEUP_MASK)) { 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) LoggerFormatInfo(&env->slog.logger, LOG_TASK_ARB, "Temp2 = %d", temp2)
} }
*/ */
bool isBusy = true;
/*
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) { if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
if (env->linTaskActuator0.linCommandActuator[0].COM == LIN_ACT_CFR_NONE) { if (env->linTaskActuator0.linCommandActuator[0].COM == LIN_ACT_CFR_NONE) {
isBusy = false;
}
osMutexRelease(env->linTaskActuator0.access);
}
switch (step) { if (isBusy == false) {
case 0: {
switch (step) {
case 0: {
if (osMutexAcquire(env->linTaskActuator0.access, 5000) == osOK) {
env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_MOD; env->linTaskActuator0.linCommandActuator[0].COM = LIN_ACT_CFR_MOD;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].MODE = LIN_MODE_STOP; env->linTaskActuator0.linCommandActuator[0].MODE = LIN_MODE_STOP;
++step; ++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].COM = LIN_ACT_CFR_INI;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].POS = 6000; env->linTaskActuator0.linCommandActuator[0].POS = 6000;
++step; ++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].COM = LIN_ACT_CFR_MOD;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].MODE = LIN_MODE_NORMAL; env->linTaskActuator0.linCommandActuator[0].MODE = LIN_MODE_NORMAL;
++step; ++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].COM = LIN_ACT_CFR_SET;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].POS = 0; 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].Autos_SET = 1;
env->linTaskActuator0.linCommandActuator[0].Speed_SET = 3; env->linTaskActuator0.linCommandActuator[0].Speed_SET = 3;
env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 0; env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 0;
++step;
break;
}
case 4: { resetStall(&env->linTaskActuator0);
SystemDelayMs(3000);
++step; ++step;
//if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL == 0) { osMutexRelease(env->linTaskActuator0.access);
// ++step; }
//} break;
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].COM = LIN_ACT_CFR_INI;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].POS = 0; env->linTaskActuator0.linCommandActuator[0].POS = 0;
++step; ++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].COM = LIN_ACT_CFR_SET;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].POS = 6000; 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].Autos_SET = 1;
env->linTaskActuator0.linCommandActuator[0].Speed_SET = 3; env->linTaskActuator0.linCommandActuator[0].Speed_SET = 3;
env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 0; env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 0;
resetStall(&env->linTaskActuator0);
++step; ++step;
break; osMutexRelease(env->linTaskActuator0.access);
} }
break;
}
case 7: { case 7: {
if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL >= 6000) { SystemDelayMs(10000);
++step; asm("nop");
} ++step;
break;
} //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].COM = LIN_ACT_CFR_SET;
env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20; env->linTaskActuator0.linCommandActuator[0].BUS_ADR = 0x20;
env->linTaskActuator0.linCommandActuator[0].POS = 8000; 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].Autos_SET = 1;
env->linTaskActuator0.linCommandActuator[0].Speed_SET = 3; env->linTaskActuator0.linCommandActuator[0].Speed_SET = 3;
env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 0; env->linTaskActuator0.linCommandActuator[0].Coils_Stop_SET = 0;
resetStall(&env->linTaskActuator0);
++step; ++step;
break; osMutexRelease(env->linTaskActuator0.access);
}
case 9: {
if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL >= 8000) {
++step;
}
break;
}
default: {
} }
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); 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); 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); Lin0_StartThread(&env->linTaskActuator0);
Adc_0_Init(&env->adcTask0, &env->adcs->adc_0_IO); Adc_0_Init(&env->adcTask0, &env->adcs->adc_0_IO);