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

- Счетчик ошибок приема (CiERR<RERRCNT>)

Есть несколько правил по которым счетчики инкрементируются и/или декрементируются. В сущности, передатчик обнаруживший ошибку инкрементирует счетчик передачи быстрее чем слушающие узлы инкрементируют свои счетчики приема. Это потому что скорее всего передатчик неисправен.

Примечание: счетчики ошибок модифицируются по протоколу CAN2.0B.

Узлы выходят из активного режима. Когда какой либо из двух счетчиков ошибок равен или превысил значение 127, узел входит в состояние пассивного режима. Когда счетчик передачи превышает значение 255, узел входит в выключенное состояние.

- Активный узел передает активный кадр ошибки при обнаружении ошибки.

- Пассивный узел передает пассивный кадр ошибки при обнаружении ошибки

- Узел в состоянии BUS OFF не передает на шину ничего.

В дополнение, ECAN модуль использует свойство предупреждения об ошибке предупреждая пользователя (когда счетчик ошибок передачи равен или более 96) перед входом узла в пассивное состояние, как показано на рисунке 19.

Рисунок 19. Режимы ошибок

10.2.1 Передатчик в пассивном режиме ошибки

Бит пассивного состояния ошибки передатчика (CiINTF<RXBP>) устанавливается когда счетчик ошибок передачи равен или более 128 и генерируется прерывание ошибки (CiINTF<ERRIF>). Флаг Transmit Error Passive сбрасывается аппаратно когда счетчик ошибок передачи становится меньше 128.

10.2.2 Приемник в пассивном режиме ошибки

Бит пассивного состояния ошибки приемника (CiUNTF<RXBP>) устанавливается когда счетчик ошибок приёма равен или более 128 и генерируется прерывание ошибки (CiINTF<ERRIF>). Флаг Receive Error Passive сбрасывается аппаратно автоматически если счетчик ошибок приема становится меньше 128.

10.2.3 Передатчик в состоянии BusOff

Бит Передатчик в состоянии Bus Off (CiINTF<TXBO>) устанавливается когда счетчик ошибок передачи равен или более 256 и генерируется прерывание ошибки (CiINTF<ERRIF>).

10.2.4 Передатчик в состоянии предупреждающем об ошибке

Бит Передатчик в состоянии предупреждающем об ошибке (CiINTF<TXWAR>) устанавливается когда счетчик ошибок передачи равен или более 96 и генерируется прерывание ошибки (CiINTF<ERRIF>). Флаг Передатчик в состоянии предупреждающем об ошибке сбрасывается аппаратно если счетчик ошибок передачи становится меньше 96.

10.2.5 Приемник в состоянии предупреждающем об ошибке

Бит Приемник в состоянии предупреждающем об ошибке (CiINTF<RXWAR>) устанавливается когда счетчик приема ошибок равен или более 96 и генерируется прерывание ошибки (CiINTF<ERRIF>). Флаг Приемник в состоянии предупреждающем об ошибке сбрасывается аппаратно если счетчик приема ошибок становится меньше 96.

В дополнение, этот бит состояния предупреждающем об ошибке (CiINTF<EWARN>), который устанавливается если хотя бы один счетчик ошибок равен или более предупреждающего лимита 96. EWARN сбрасывается если оба счетчика меньше установленного лимита.

11 ECAN ПРЕРЫВАНИЯ

ECAN модуль генерирует три различных прерывания, каждое имеет свои: вектор прерывания, бит управления включением прерывания, флаг статуса прерывания и бит управления приоритетом прерывания. К этим прерываниям относятся:

CiTX запрос ECAN передачи данных

CiRX принятые ECAN данные готовы

Ci прерывание от событий ECAN

11.1 Прерывание запроса передачи данных

Прерывание запроса передачи данных означает передачу одного слова сообщения через регистр передачи данных (CiTXD). Пользователь должен назначить запросу передачи данных DMA канал для автоматической передачи сообщений из соответствующего DMA RAM буфера в ECAN модуль (регистр CiTXD).

11.2 Прерывание ECAN данные готовы

Прерывание данные готовы означает прием одного слова сообщения через регистр приема данных (CiRXD). Пользователь должен назначит прерывание ECAN принятые данные готовы - канал DMA для автоматической передачи сообщения из ECAN модуля (регистра CiRXD) в соответствующий буфер DMA RAM.