Обновить логгер УМП и исправить запуск UART и EEPROM
Перейти на компактные 12-словные записи v4 и сохранять 10 процентов банка после отключения. Добавить трёхсекундное ожидание роста ЗПТ и настраиваемый лимит пусков. Явно инициализировать состояние UART и гарантировать публикацию параметров EEPROM перед запуском Timer2. Сохранить воспроизводимые сборки, регрессионные проверки, документацию и обновлённые результаты сборки; исключить временные артефакты.
This commit is contained in:
+10
-22
@@ -335,10 +335,8 @@ void CAN_send(int Port, int data[], int Addr)
|
||||
void Handlai(volatile struct ECAN_MBOXES * ECanMboxes)
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Объявляет adr — данные adr. */
|
||||
unsigned int adr;
|
||||
/* Объявляет bit — представление регистра отдельными битовыми полями. */
|
||||
unsigned int bit[3];
|
||||
/* adr адресует очередное технологическое слово, slot выбирает одно из трёх слов кадра, mask хранит их биты достоверности 15..13. */
|
||||
unsigned int adr, slot, mask;
|
||||
/* Объявляет hiword — данные hiword; loword — данные loword. */
|
||||
unsigned long hiword,loword;
|
||||
/* Объявляет Data — данные. */
|
||||
@@ -376,12 +374,8 @@ void Handlai(volatile struct ECAN_MBOXES * ECanMboxes)
|
||||
/* Записывает adr значением (hiword >> 16); данные adr. */
|
||||
adr = (hiword >> 16);
|
||||
|
||||
/* Записывает bit[0] значением adr & 0x8000; представление регистра отдельными битовыми полями. */
|
||||
bit[0] = adr & 0x8000;
|
||||
/* Записывает bit[1] значением adr & 0x4000; представление регистра отдельными битовыми полями. */
|
||||
bit[1] = adr & 0x4000;
|
||||
/* Записывает bit[2] значением adr & 0x2000; представление регистра отдельными битовыми полями. */
|
||||
bit[2] = adr & 0x2000;
|
||||
/* Маска 0xE000 объединяет биты достоверности трёх слов CAN; сдвиг в цикле последовательно выводит каждый из них в бит 15. */
|
||||
mask = adr & 0xE000U;
|
||||
|
||||
/* Оставляет биты маски adr значением 0x1fff; данные adr. */
|
||||
adr &= 0x1fff;
|
||||
@@ -393,18 +387,12 @@ void Handlai(volatile struct ECAN_MBOXES * ECanMboxes)
|
||||
/* Записывает Data[2] значением (loword ) & 0xffff; данные. */
|
||||
Data[2] = (loword ) & 0xffff;
|
||||
|
||||
/* Проверяет if(bit[0]) if(adr < ANSWER_LEN и; последующий оператор выполняется только при истинном условии. */
|
||||
if(bit[0]) if(adr < ANSWER_LEN &&
|
||||
/* Записывает modbus[adr] значением Data[0]; adr++; массив технологических регистров; слово int на C28x занимает 16 бит. */
|
||||
!(Desk == dsk_LOAD && (adr == 0x7CU || adr == 0x7DU))) modbus[adr] = Data[0]; adr++;
|
||||
/* Проверяет if(bit[1]) if(adr < ANSWER_LEN и; последующий оператор выполняется только при истинном условии. */
|
||||
if(bit[1]) if(adr < ANSWER_LEN &&
|
||||
/* Записывает modbus[adr] значением Data[1]; adr++; массив технологических регистров; слово int на C28x занимает 16 бит. */
|
||||
!(Desk == dsk_LOAD && (adr == 0x7CU || adr == 0x7DU))) modbus[adr] = Data[1]; adr++;
|
||||
/* Проверяет if(bit[2]) if(adr < ANSWER_LEN и; последующий оператор выполняется только при истинном условии. */
|
||||
if(bit[2]) if(adr < ANSWER_LEN &&
|
||||
/* Записывает modbus[adr] значением Data[2]; массив технологических регистров; слово int на C28x занимает 16 бит. */
|
||||
!(Desk == dsk_LOAD && (adr == 0x7CU || adr == 0x7DU))) modbus[adr] = Data[2];
|
||||
/* Обрабатывает ровно три слова CAN; адрес растёт независимо от маски, а её сдвиг выбирает достоверность следующего слова. */
|
||||
for (slot = 0; slot < 3; slot++, adr++, mask <<= 1)
|
||||
/* Бит 15 текущей маски разрешает запись только в опубликованные 128 регистров, исключая выход за массив. */
|
||||
if ((mask & 0x8000U) && adr < ANSWER_LEN &&
|
||||
/* Для LOAD сохраняет статус 0x7C и отклоняет ноль в лимите 0x7D; остальные значения сохраняются как исходное 16-битное слово. */
|
||||
!(Desk == dsk_LOAD && (adr == 0x7CU || (adr == 0x7DU && !(unsigned int)Data[slot])))) modbus[adr] = Data[slot];
|
||||
|
||||
/* Фиксируем применённую команду до выхода из обработчика CAN. */
|
||||
/* A short frame cannot confirm voltage freshness. Service frames
|
||||
|
||||
Reference in New Issue
Block a user