Страница 2 из 2
Re: 1921DR035 CAN ID принимаемого сообщения
Добавлено: 30 янв 2023, 10:11
smispp
Спасибо за ссылки, не знал о их существовании. Хорошо что есть аналог, а то я испугался, что такой сложный КАН придумали в НИИЭТе.
И все же как в прерывании определить ящик с сообщением?
1. Настроил N ящиков (объектов сообщения) на прием и M ящиков на передачу с общим прерыванием. Как в прерывании определить какой ящик вызвал прерывание?
Не перебирать же все ящики в прерывании на предмет NewDat.
Re: 1921DR035 CAN ID принимаемого сообщения
Добавлено: 03 фев 2023, 17:23
serg_vega
Я просто использую разные прерывания. Неужели у Вас больше чем 16 ящиков?
Re: 1921DR035 CAN ID принимаемого сообщения
Добавлено: 07 фев 2023, 13:21
smispp
serg_vega писал(а): ↑03 фев 2023, 17:23
Я просто использую разные прерывания. Неужели у Вас больше чем 16 ящиков?
Можно конечно и так, но должен быть более правильный способ. На каждое сообщение - прерывание?
Когда будет железо, можно попробовать проверять регистры MSPND и MSID ?
Re: 1921DR035 CAN ID принимаемого сообщения
Добавлено: 07 фев 2023, 14:43
dav
smispp писал(а): ↑30 янв 2023, 10:11
И все же как в прерывании определить ящик с сообщением?
Доброго времени суток!
Модуль CAN микроконтроллера 1921ВК035 имеет возможность настройки регистра ждущих прерываний. Подробно рассказано в подразделе 18.11 "Прерывания объектов сообщения" (Ждущие сообщения) на стр. 163
Руководства Пользователя. На рисунке 18.25 проиллюстрирована запись в регистр ждущих прерываний MSPND0-MSPND3.
Достаточно записать в битовое поле "MPN" регистров MOIPR объектов сообщений номер регистра MSPND (биты MPN[6:5]) и номер устанавливаемого бита в регистре MSPND (биты MPN[4:0]), настроить прерывания от объектов сообщений на одну или несколько линий прерывания и в прерывании читать регистры ждущих прерываний MSPND. Таким образом можно определить от каких объектов сообщения пришли запросы на прерывания при использовании большого количества объектов.