Добавить heartbeat и передачу CAN по изменению и таймеру
Для всех Mode передавать пакеты при обновлении данных и повторять каждый через 1300 мс от последнего CAN ACK. Отдельно отправлять heartbeat раз в секунду. Сохранить маски рассылки, отключение потоков нулевым периодом и неблокирующее восстановление после ошибок TX. Проверены границы периодов, все Mode, занятый mailbox, отмена без CANAA, отсутствие ACK, переполнение Timer1, первый снимок и справедливость потоков. Изменённые модули ecan.c и main.c скомпилированы компилятором TI C2000.
This commit is contained in:
@@ -73,3 +73,25 @@ SetGUI проверено программно; обмен новой проши
|
||||
|
||||
Конфигурация **Release** перенесена из 167 без изменений и не проверялась;
|
||||
для сборки прошивки используйте **Debug**.
|
||||
|
||||
## Телеметрия CAN: heartbeat, изменения и повтор 1,3 с
|
||||
|
||||
Для всех Mode технологические пакеты выбранных масками регистров R0–R127
|
||||
передаются при первом снимке, изменении любого из трёх слов или через 1300 мс
|
||||
после последнего успешного CAN ACK этого пакета. Неудачная попытка не обновляет
|
||||
подтверждённый снимок. Конечные пакеты карты дополняются нулями за R127.
|
||||
Сканирование изменений идёт по Timer1 с шагом 20 мс; готовая очередь выдаётся
|
||||
по мере освобождения mailbox, без ожидания нового периода между её кадрами.
|
||||
Фактическую отправку могут задержать занятая шина, ошибки и работа main.
|
||||
|
||||
Heartbeat отправляется независимо раз в секунду: адрес `0x0100`, затем три
|
||||
16-битных слова — счётчик секунд, Mode, Desk. После задержки main отправляется
|
||||
последнее значение, без очереди пропущенных секундных кадров.
|
||||
|
||||
Ноль в `Cancount[0]` или `Cancount[1]` по-прежнему отключает данные соответствующей
|
||||
маски. Любое ненулевое значение включает новый режим изменения/1300 мс;
|
||||
прежний числовой делитель периода больше не используется. Heartbeat остаётся
|
||||
включённым при отключённых потоках данных. Параметры EEPROM не переносятся.
|
||||
После ошибки TX новая попытка разрешается через секунду без ожидания в цикле.
|
||||
|
||||
Проверка без CAN-адаптера: `python tests/can_telemetry/run_test.py`.
|
||||
|
||||
Reference in New Issue
Block a user