Обновление

This commit is contained in:
cfif 2025-12-19 16:07:24 +03:00
parent dbade30fac
commit 1627ce37dc
2 changed files with 19 additions and 16 deletions

View File

@ -576,7 +576,7 @@ lin_event_id_t Lin0_Scheduler(tLinTaskActuator *env) {
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_MOD) { if (env->linCommandActuator[i].COM == LIN_ACT_CFR_MOD) {
ret = CFR_MOD_x(env->linIo, env->linData, env->linCommandActuator[i].BUS_ADR, ret = CFR_MOD_x(env->linIo, env->linData, env->linCommandActuator[i].BUS_ADR | 0x20,
env->linCommandActuator[i].MODE); env->linCommandActuator[i].MODE);
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
@ -598,7 +598,7 @@ lin_event_id_t Lin0_Scheduler(tLinTaskActuator *env) {
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_INI) { if (env->linCommandActuator[i].COM == LIN_ACT_CFR_INI) {
ret = CFR_INI_x(env->linIo, env->linData, ret = CFR_INI_x(env->linIo, env->linData,
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR | 0x20,
env->linCommandActuator[i].POS); env->linCommandActuator[i].POS);
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
@ -618,7 +618,7 @@ lin_event_id_t Lin0_Scheduler(tLinTaskActuator *env) {
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_SET) { if (env->linCommandActuator[i].COM == LIN_ACT_CFR_SET) {
ret = CFR_SET_x(env->linIo, env->linData, ret = CFR_SET_x(env->linIo, env->linData,
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR | 0x20,
env->linCommandActuator[i].POS, env->linCommandActuator[i].POS,
env->linCommandActuator[i].Stall_SET, env->linCommandActuator[i].Stall_SET,
env->linCommandActuator[i].Lnoise_SET, env->linCommandActuator[i].Lnoise_SET,
@ -706,9 +706,9 @@ lin_event_id_t Lin0_Scheduler(tLinTaskActuator *env) {
env->linStateActuator[BUS_ADR].Reset_Slave = Reset_Slave; env->linStateActuator[BUS_ADR].Reset_Slave = Reset_Slave;
LoggerFormatInfo(LOGGER, LOG_SIGN, "BUS_ADR = %d, CPOS_ALL = %d, Stall_Slave = %d", BUS_ADR, // LoggerFormatInfo(LOGGER, LOG_SIGN, "BUS_ADR = %d, CPOS_ALL = %d, Stall_Slave = %d", BUS_ADR,
env->linStateActuator[BUS_ADR].CPOS_ALL, // env->linStateActuator[BUS_ADR].CPOS_ALL,
env->linStateActuator[BUS_ADR].Stall_Slave) // env->linStateActuator[BUS_ADR].Stall_Slave)
} else { } else {
asm("nop"); asm("nop");
@ -736,20 +736,19 @@ lin_event_id_t Lin0_Scheduler(tLinTaskActuator *env) {
return LIN_NO_EVENT; return LIN_NO_EVENT;
} }
static void isEnterCommand(tLinTaskActuator *env) { bool setBusy(tLinTaskActuator *env) {
for (uint8_t j = 0; j < 5; ++j) {
for (uint8_t i = 0; i < LIN0_ISSR_ALL; ++i) { for (uint8_t i = 0; i < LIN0_ISSR_ALL; ++i) {
if (env->linCommandActuator[i].COM != LIN_ACT_CFR_NONE) { if (env->linCommandActuator[i].COM != LIN_ACT_CFR_NONE) {
return; env->busy = true;
return true;
} }
} }
SystemDelayMs(100);
}
return false;
} }
void resetStall(tLinTaskActuator *env) { void resetStall(tLinTaskActuator *env) {
for (uint8_t i = 0; i < LIN0_ISSR_ALL; ++i) { for (uint8_t i = 0; i < LIN0_ISSR_ALL; ++i) {
@ -790,10 +789,12 @@ static _Noreturn void Lin0_Thread(tLinTaskActuator *env) {
env->error_connect = 0; env->error_connect = 0;
} }
env->busy = false;
osMutexRelease(env->access); osMutexRelease(env->access);
} }
isEnterCommand(env); SystemDelayMs(500);
} }
} }

View File

@ -454,7 +454,7 @@ typedef struct {
tLinIO *linIo; tLinIO *linIo;
osMutexId_t access; osMutexId_t access;
uint8_t busy; // Устройство занято bool busy; // Устройство занято
uint8_t error_connect; // Ошибка соединения (устройство не отвечает) uint8_t error_connect; // Ошибка соединения (устройство не отвечает)
tLinStateFullActuator linStateActuator[9]; tLinStateFullActuator linStateActuator[9];
@ -484,4 +484,6 @@ void GetLin0CallbackHandler(tLinData *env, uint8_t u8LinIndex, void *state);
void resetStall(tLinTaskActuator *env); void resetStall(tLinTaskActuator *env);
bool setBusy(tLinTaskActuator *env);
#endif //HVAC_LIN_TASKS_H #endif //HVAC_LIN_TASKS_H