Спасибо за ссылки, не знал о их существовании. Хорошо что есть аналог, а то я испугался, что такой сложный КАН придумали в НИИЭТе.
И все же как в прерывании определить ящик с сообщением?
1. Настроил N ящиков (объектов сообщения) на прием и M ящиков на передачу с общим прерыванием. Как в прерывании определить какой ящик вызвал прерывание?
Не перебирать же все ящики в прерывании на предмет NewDat.
1921DR035 CAN ID принимаемого сообщения
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
Re: 1921DR035 CAN ID принимаемого сообщения
Я просто использую разные прерывания. Неужели у Вас больше чем 16 ящиков?
-
- Сообщения: 209
- Зарегистрирован: 14 дек 2015, 09:21
- Предприятие: АО НИИЭТ
- Откуда: АО НИИЭТ, Воронеж
Re: 1921DR035 CAN ID принимаемого сообщения
Доброго времени суток!
Модуль CAN микроконтроллера 1921ВК035 имеет возможность настройки регистра ждущих прерываний. Подробно рассказано в подразделе 18.11 "Прерывания объектов сообщения" (Ждущие сообщения) на стр. 163 Руководства Пользователя. На рисунке 18.25 проиллюстрирована запись в регистр ждущих прерываний MSPND0-MSPND3.
Достаточно записать в битовое поле "MPN" регистров MOIPR объектов сообщений номер регистра MSPND (биты MPN[6:5]) и номер устанавливаемого бита в регистре MSPND (биты MPN[4:0]), настроить прерывания от объектов сообщений на одну или несколько линий прерывания и в прерывании читать регистры ждущих прерываний MSPND. Таким образом можно определить от каких объектов сообщения пришли запросы на прерывания при использовании большого количества объектов.