Обновление

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);
}
if (isBusy == false) {
switch (step) { switch (step) {
case 0: { 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;
osMutexRelease(env->linTaskActuator0.access);
}
break; break;
} }
case 1: { 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;
osMutexRelease(env->linTaskActuator0.access);
}
break; break;
} }
case 2: { 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;
osMutexRelease(env->linTaskActuator0.access);
}
break; break;
} }
case 3: { 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,12 +130,18 @@ 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;
osMutexRelease(env->linTaskActuator0.access);
}
break; break;
} }
case 4: { case 4: {
SystemDelayMs(3000); SystemDelayMs(10000);
asm("nop");
++step; ++step;
//if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL == 0) { //if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL == 0) {
// ++step; // ++step;
@ -130,14 +150,20 @@ static _Noreturn void Mma_Thread(tMma *env) {
} }
case 5: { case 5: {
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 = 0; env->linTaskActuator0.linCommandActuator[0].POS = 0;
++step; ++step;
osMutexRelease(env->linTaskActuator0.access);
}
break; break;
} }
case 6: { case 6: {
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 = 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;
osMutexRelease(env->linTaskActuator0.access);
}
break; break;
} }
case 7: { case 7: {
if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL >= 6000) { SystemDelayMs(10000);
asm("nop");
++step; ++step;
}
//if (env->linTaskActuator0.linStateActuator[7].CPOS_ALL >= 6000) {
// ++step;
//}
break; break;
} }
case 8: { case 8: {
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 = 8000; env->linTaskActuator0.linCommandActuator[0].POS = 8000;
@ -166,7 +203,12 @@ 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;
osMutexRelease(env->linTaskActuator0.access);
}
break; break;
} }
@ -184,9 +226,8 @@ static _Noreturn void Mma_Thread(tMma *env) {
} }
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);