Добавить heartbeat и передачу CAN по изменению и таймеру
Для всех Mode передавать пакеты при обновлении данных и повторять каждый через 1300 мс от последнего CAN ACK. Отдельно отправлять heartbeat раз в секунду. Сохранить маски рассылки, отключение потоков нулевым периодом и неблокирующее восстановление после ошибок TX. Проверены границы периодов, все Mode, занятый mailbox, отмена без CANAA, отсутствие ACK, переполнение Timer1, первый снимок и справедливость потоков. Изменённые модули ecan.c и main.c скомпилированы компилятором TI C2000.
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
/* Телеметрия eCAN и фоновая выдача ответов логгера.
|
||||
* UMP_CAN_service вызывается из main, не из приёмного IRQ.
|
||||
/* Телеметрия eCAN и фоновая выдача ответов логгера.
|
||||
* UMP_CAN_service вызывается из main, не из приёмного IRQ.
|
||||
*/
|
||||
void InitCan(int Port, int DevNum);
|
||||
void CAN_send(int Port, int data[], int Addr);
|
||||
int CAN_send(int Port, int data[], int Addr); /* 0: занят, 1: кадр поставлен, 2: подтверждённые данные не изменились и 1,3 с ещё не прошли. */
|
||||
void CAN_heartbeat_service(void); /* Планирует отдельный heartbeat по Timer1 с периодом одна секунда. */
|
||||
void CAN_telemetry_service(void); /* В main обслуживает heartbeat, изменения данных и повтор каждого разрешённого пакета через 1,3 с. */
|
||||
extern int CAN_input_data[];
|
||||
|
||||
/* Неблокирующая передача ответов логгера отдельным CAN mailbox. */
|
||||
/* Неблокирующая передача ответов логгера отдельным CAN mailbox. */
|
||||
void UMP_CAN_service(void);
|
||||
|
||||
Reference in New Issue
Block a user