Модуль ECAN для dsPIC. Типичная сеть ECAN. 16 приемных фильтров для фильтрования сообщения, страница 24

11.3 Прерывание по событиям ECAN

Прерывание по событиям ECAN имеет семь основных источников, каждый из которых может быть включен индивидуально. Регистр флагов прерывания (CiINTF) содержит флаги прерывания, и регистр включения прерываний (CiINTE) содержит биты включения. Биты кода флага прерывания (ICODE<6:0>) в регистре CiVEC<6:0> может использоваться в комбинации с таблицей векторов прерываний для рационального использования прерываний. Все прерывания имеют один источник, за исключением прерывания ошибки. Любое из пяти источников прерываний (TX Error Warn, RX Error Warn, TX Error Passive, RX Error Passive и TX Bus Off) могут установить флаг ошибки прерывания. Источники прерывания ошибки определяются чтением регистра CiINTF.

Рисунок 20 показывает генерацию прерывания по событиям ECAN для различных источников:

Рисунок 20. Прерывания по событиям ECAN

11.3.1 Прерывание передающего буфера

Буферы сообщений от 0 до 7 которые сконфигурированы для передачи сообщений сгенерируют бит прерывания передающего буфера (CiINTF<TBIF>) после передачи CAN сообщения. Биты ICODE указывают определённый буфер сообщения, который сгенерировал прерывания передающего буфера. Флаг прерывания передающего буфера TBIF должен быть сброшен программно.

11.3.2 Прерывание приемного буфера

Когда сообщение успешно принято и загружено в один из приемных буферов (буфер сообщений от 0 до 31) активируется прерывание приемного буфера (CiINTF<RBIF>) после модуль устанавливает бит CiRXFULm<RXFILn>. Биты ICODE указывают на тот буфер, который сгенерировал прерывание. Флаг прерывания приёмного буфера RBIF должне быть сбросшен программно.

11.3.3 Прерывание по переполнению приемного буфера

Когда сообщение успешно принято но назначенный буфер полон, то устанавливается бит прерывание по переполнению приёмника (CiINTF<RBOVIF>) после модуль устанавливает бит CiRXOVFm<RXOVFn>. Биты флагов кода прерываний (ICODE<6:0>) в регистре CiVEC показывают какой буфер сгенерировал прерывание. Флаг прерывания по переполнению приёмного буфера RBOVIF должен быть сброшен программно.

11.3.4 Прерывание FIFO почти полон.

Когда FIFO имеет только один свободный буфер активируется прерывание FIFO почти полон (CiINTF<FIFOIF>), после модуль устанавливает бит CiRXFULm<RXFULn> для следующего последнего доступного буфера. Биты CiVEC<ICODE> показывают состояние переполнения FIFO. Флаг прерывания FIFO почти полон CiINTF<FIFOIF> должно быть сброшено программно.

11.3.5 Прерывания связанные с ошибками

Прерывание ошибки (CiINTF<ERRIF>) генерируется пятью источниками:

TX Error Warm  (внимание, ошибка передатчика)

RX Error Warm (внимание, ошибка приёмника)

TX Error Passive (пассивная ошибка передатчика)

RX Error Passive (пассивная ошибка приёмника)

TX Bus Off (модуль ECAN перешёл в отключённое состояния, из-за множества ошибок)

Бит CiVEC<ICODE> показывает состояние ошибки. Флаг прерывания связанного с ошибками CiINTF<ERRIF> должно быть сброшено программно.

11.3.6 Прерывание пробуждения.

В режиме Sleep устройство отслеживает линию приема ECAN (CiRX) на активность на шине. Прерывание пробуждения (CiINTF<WAKIF>) генерируется когда обнаруживается активность на шине. Биты CiVEC<ICODE> указывают на состояние пробуждения. Флаг прерывания пробуждения CiINTF<WAKIF> должно быть сброшено программно.

11.3.7 Прерывание «Получено недопустимое сообщение»

Прерывание по принятию недопустимого (неверного) сообщения генерируется в течении приема сообщения с ошибкой любого типа. Биты CiVEC<ICODE> указывает состояние ошибочного сообщения.

12. ECAN В РЕЖИМЕ НИЗКОГО ПОТРЕБЛЕНИЯ

ECAN модуль может ответить на инструкцию центрального процессора PWRSAV.

12.1 Режим Sleep

Инструкция центрального процессора PWRSAV, 1 останавливает системный генератор тактовых импульсов. Пользовательская программа прежде чем входить в режим Sleep должна гарантировать, что модуль в шине ECAN находится в неактивном состоянии.