1921DR035 CAN ID принимаемого сообщения

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

smispp
Сообщения: 15
Зарегистрирован: 28 ноя 2022, 10:30
Предприятие: оао нпк спп

Re: 1921DR035 CAN ID принимаемого сообщения

Сообщение smispp »

Спасибо за ссылки, не знал о их существовании. Хорошо что есть аналог, а то я испугался, что такой сложный КАН придумали в НИИЭТе. :)

И все же как в прерывании определить ящик с сообщением?

1. Настроил N ящиков (объектов сообщения) на прием и M ящиков на передачу с общим прерыванием. Как в прерывании определить какой ящик вызвал прерывание?
Не перебирать же все ящики в прерывании на предмет NewDat.
serg_vega
Сообщения: 96
Зарегистрирован: 20 июл 2020, 15:50
Предприятие: АО "ВНИИ "Вега"

Re: 1921DR035 CAN ID принимаемого сообщения

Сообщение serg_vega »

Я просто использую разные прерывания. Неужели у Вас больше чем 16 ящиков?
smispp
Сообщения: 15
Зарегистрирован: 28 ноя 2022, 10:30
Предприятие: оао нпк спп

Re: 1921DR035 CAN ID принимаемого сообщения

Сообщение smispp »

serg_vega писал(а): 03 фев 2023, 17:23 Я просто использую разные прерывания. Неужели у Вас больше чем 16 ящиков?
Можно конечно и так, но должен быть более правильный способ. На каждое сообщение - прерывание?
Когда будет железо, можно попробовать проверять регистры MSPND и MSID ?
dav
Сообщения: 209
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: 1921DR035 CAN ID принимаемого сообщения

Сообщение 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. Таким образом можно определить от каких объектов сообщения пришли запросы на прерывания при использовании большого количества объектов.
Ответить

Вернуться в «32-разрядные микроконтроллеры»