Обновление платы на V2

This commit is contained in:
cfif 2026-05-18 10:43:58 +03:00
parent 0e187ecfff
commit ad833e84fb
2 changed files with 55 additions and 41 deletions

View File

@ -333,18 +333,16 @@ static void set_led_group(tCCU_DRS_Req *req, uint8_t led_group, uint8_t count) {
static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) { static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
lin_event_id_t ret = LIN_NO_EVENT; lin_event_id_t ret = LIN_NO_EVENT;
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
set_led_group(&env->d_CCU_DRS_Req, i, env->linStateSensor.LED_COUNT[i]);
}
env->d_CCU_DRS_Req.BCM_SwIndIntens_Stat = 0;
env->d_CCU_DRS_Req.BCM_IndFadingTime_Req = 2;
ret = Set_CCU_DRS_Req(env->linIo, env->linData, &env->d_CCU_DRS_Req); ret = Set_CCU_DRS_Req(env->linIo, env->linData, &env->d_CCU_DRS_Req);
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
set_led_group(&env->d_CCU_DRS_Req, i, env->linStateSensor.LED_COUNT[i]);
}
env->d_CCU_DRS_Req.BCM_SwIndIntens_Stat = 0;
env->d_CCU_DRS_Req.BCM_IndFadingTime_Req = 0;
#if (LOG_LIN5_SENSOR == 1) #if (LOG_LIN5_SENSOR == 1)
if (*((uint32_t *) &env->d_CCU_DRS_Req) != *((uint32_t *) &env->d_old_CCU_DRS_Req)) { if (*((uint32_t *) &env->d_CCU_DRS_Req) != *((uint32_t *) &env->d_old_CCU_DRS_Req)) {
@ -361,53 +359,64 @@ static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
#endif #endif
} }
SystemDelayMs(50);
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) { for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
ret = Get_DRS_Stat(env->linIo, env->linData, &env->linStateSensor.d_DRS_Stat[i], DRS_SENSON_ADR_Stat[i]); if (env->linStateSensor.error_connect[i] == 0) {
if (env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat) { ret = Get_DRS_Stat(env->linIo, env->linData, &env->linStateSensor.d_DRS_Stat[i], DRS_SENSON_ADR_Stat[i]);
++env->linStateSensor.LED_COUNT[i];
uint8_t current_btn_state = env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat;
if ((current_btn_state) && (!env->linStateSensor.prev_btn_state[i])) {
if (env->linStateSensor.LED_COUNT[i] == 0) {
env->linStateSensor.LED_COUNT[i] = 3;
} else {
--env->linStateSensor.LED_COUNT[i];
}
if (env->linStateSensor.LED_COUNT[i] > 3) {
env->linStateSensor.LED_COUNT[i] = 0;
} }
} env->linStateSensor.prev_btn_state[i] = current_btn_state;
env->linStateSensor.LinRespErr_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat; env->linStateSensor.LinRespErr_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat;
env->linStateSensor.Err_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat; env->linStateSensor.Err_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat;
if (ret == LIN_RX_COMPLETED) { if (ret == LIN_RX_COMPLETED) {
env->linStateSensor.error_connect[i] = 0; env->linStateSensor.error_connect[i] = 0;
#if (LOG_LIN5_SENSOR == 1) #if (LOG_LIN5_SENSOR == 1)
if ((*((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]) != if ((*((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]) !=
*((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i])) || *((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i])) ||
(env->linStateSensor.LED_COUNT[i] != env->linStateSensor.LED_OLD_COUNT[i])) { (env->linStateSensor.LED_COUNT[i] != env->linStateSensor.LED_OLD_COUNT[i])) {
*((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i]) = *((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]); *((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i]) = *((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]);
env->linStateSensor.LED_OLD_COUNT[i] = env->linStateSensor.LED_COUNT[i]; env->linStateSensor.LED_OLD_COUNT[i] = env->linStateSensor.LED_COUNT[i];
LoggerFormatInfo(LOGGER, LOG_SIGN5, LoggerFormatInfo(LOGGER, LOG_SIGN5,
"Sensor number %d: COUNT = %d DRS_Btn_Stat = %d DRS_LinRespErr_Stat = %d DRS_Err_Stat = %d", "Sensor number %d: COUNT = %d DRS_Btn_Stat = %d DRS_LinRespErr_Stat = %d DRS_Err_Stat = %d",
i, i,
env->linStateSensor.LED_COUNT[i], env->linStateSensor.LED_COUNT[i],
env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat, env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat,
env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat, env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat,
env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat
) )
} }
#endif #endif
} else { } else {
env->linStateSensor.error_connect[i] = 1; env->linStateSensor.error_connect[i] = 1;
#if (LOG_LIN5_SENSOR == 1) #if (LOG_LIN5_SENSOR == 1)
if (env->linStateSensor.error_connect[i] != env->linStateSensor.error_old_connect[i]) { if (env->linStateSensor.error_connect[i] != env->linStateSensor.error_old_connect[i]) {
env->linStateSensor.error_old_connect[i] = env->linStateSensor.error_connect[i]; env->linStateSensor.error_old_connect[i] = env->linStateSensor.error_connect[i];
LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor number %d: ERROR Get_FPL_Stat = %d", i, ret) LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor number %d: ERROR Get_FPL_Stat = %d", i, ret)
} }
#endif #endif
} }
SystemDelayMs(50);
}
} }
@ -424,6 +433,10 @@ void Lin_5_Init(tLin5TaskSensor *env,
env->logger = logger; env->logger = logger;
env->access = osMutexNew(NULL); env->access = osMutexNew(NULL);
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
env->linStateSensor.LED_COUNT[i] = 3;
}
InitThreadAtrStatic(&env->threadLin.attr, "Ln5", env->threadLin.controlBlock, env->threadLin.stack, InitThreadAtrStatic(&env->threadLin.attr, "Ln5", env->threadLin.controlBlock, env->threadLin.stack,
osPriorityNormal); osPriorityNormal);
} }
@ -454,7 +467,6 @@ static _Noreturn void Lin5_Thread(tLin5TaskSensor *env) {
LoggerErrorStatic(LOGGER, LOG_SIGN5, "Access error Lin5_Thread"); LoggerErrorStatic(LOGGER, LOG_SIGN5, "Access error Lin5_Thread");
} }
SystemDelayMs(50);
} }
} }

View File

@ -259,6 +259,8 @@ typedef struct {
uint8_t error_connect[LIN5_SENSOR_COUNT]; uint8_t error_connect[LIN5_SENSOR_COUNT];
uint8_t error_old_connect[LIN5_SENSOR_COUNT]; uint8_t error_old_connect[LIN5_SENSOR_COUNT];
uint8_t prev_btn_state[LIN5_SENSOR_COUNT];
uint8_t LinRespErr_Stat[LIN5_SENSOR_COUNT]; uint8_t LinRespErr_Stat[LIN5_SENSOR_COUNT];
uint8_t Err_Stat[LIN5_SENSOR_COUNT]; uint8_t Err_Stat[LIN5_SENSOR_COUNT];
} linStateSensor; } linStateSensor;