14.5.2. «Спящий» режим
CAN-контроллер переходит в «спящий» режим, если установлен бит SM в регистре режима CAN, отсутствуют обрабатываемые прерывания CAN и не отмечено никакой активности на шине CAN. Пользовательская программа может установить бит SM лишь в том случае, когда сброшен бит RM в регистре режима CANMOD. Пользовательская программа может также установить бит WUIE в регистре разрешения прерываний CANIER с тем, чтобы разрешить «пробуждение» от любого прерывания.
CAN-контроллер «пробуждается» (и, если установлен бит WUIE в регистре разрешения прерываний CANIER, устанавливает бит WUI в регистре захвата и прерываний CANICR) в ответ на одно из следующих действий:
• на шине CAN обнаружен доминантный бит;
• программный сброс бита SM в регистре режима CANMOD. CAN-контроллер, «пробудившийся» из-за возникновения активности на шине,
не переходит в режим готовности к приему сообщений до тех пор, пока он не определит наличие на шине условия «Bus-Free» (11 последовательных рецессивных битов). Если во время программной установки бита SM производится обработка прерывания или шина CAN активна, то пробуждение происходит немедленно.
14.5.3. Прерывания
Каждый CAN-контроллер может генерировать три запроса на прерывание: по приему, по передаче и от «другого состояния». Прерывания по передаче от трех буферов Тх объединяются по схеме ИЛИ (OR). Каждому запросу на преры-
" В описании протокола CAN используются понятия «доминантный бит» и «рецессивный бит». По умолчанию, доминантный бит имеет значение НИЗКОГО уровня и «затирает» любое количество рецессивных битов (по умолчанию, имеющих значение ВЫСОКОГО уровня). То есть, если одно из участвующих в процессе обмена устройств выставило на.шину CAN доминантный бит (0), а одно или несколько других — рецессивный (1), то текущее состояние шины будет определяться доминантным битом. (Прим. науч. ред.)
вание по приему и по передаче от каждого из контроллеров CAN назначен свой собственный канал в контроллере векторов прерывания (VIC), и каждый запрос должен обрабатываться своей собственной подпрограммой обработки прерывания. Прерывания от «другого состояния» могут генерировать все CAN-контрол-леры, а также приемный фильтр по условию LUTerr (см. ниже). Эти прерывания также объединяются по схеме ИЛИ и направляются в какой-либо канал VIC.
14.5.4. Приоритет передачи
В режиме передачи, буферы Тх конкурируют между собой за право первоочередной отправки содержащихся в них сообщений. Если бит ТРМ в регистре CANMOD сброшен, то результат конкуренции зависит от значений CAN-иден-тификаторов (TID) этих буферов. Если бит ТРМ установлен, то результат конкуренции при передаче зависит от значений полей PRIO в битах 7:0 регистров CANTFI. В обоих этих случаях, наименьшее двоичное значение поля или идентификатора имеет наибольший приоритет. Если два (или три) буфера, которым разрешена передача, имеют одинаковое наименьшее значение поля или идентификатора, то первым передает буфер с меньшим номером.
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |