реклама на сайте
подробности

 
 
> AT90CAN128 конфигурирование mob на прием?, CAN протокол
Alexeus
сообщение Feb 26 2010, 11:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 14-01-09
Пользователь №: 43 345



Контроллер AT90CAN128, cреда программирования CvAVR.
CAN инициализировал, мобы на отправку тоже. Сообщения отправляются.

Уперся в прием кадра:
В сеть другим устройством кидается кадр с id 401 и длиной 1 байт, мне нужно его принять.
Пытаюсь сконфигурировать моб7 на прием конкретного кадра с id 401. Что то не получается принять данные... Я правильно конфигурирую сам моб?
Пожалуйста прочтите каменты после строк кода и ответьте если в курсе...


CANPAGE = 0x78; //выбор моб7 автоинкремент буфера данных отключен
// вопрос. если автоинкремент отключен, то как читать/писать canmsg с индексом байта, так? canmsg[0]... canmsg[7]

CANCDMOB = 0;
//вводим моб в неопределенное состояние (прием/передача не определены) -думаю это не обязательно

CANIDT1 = 0x32; //задаем TAG: id "401"
CANIDT2 = 0x20; //...
//сдесь задаем именно этот id -401

CANIDM1 = 0xFF; //задаем mask "111 1111 1111" прием/передача только одного id
CANIDM2 = 0xE0; //...
//тут по-идее маска, что прием будет конкретного id, а зачем??? если мы уже указали в TAGe, что ждем id 401 и другие будут отсеиваться...

CANSTMOB=0; // очистим ош-ки и прерывания данного моба
CANCDMOB = 0b10000001; //Разрешаем прием кадров в этот моб, без ответа, CAN2.0A, ожидаемая длина сообщения 1байт

все, считаем что моб7 сконфигурирован на прием, затем по проверке флага на успешный прием будем обрабатывать сообщение или уходить дальше в программу...

Сообщение отредактировал Alexeus - Feb 26 2010, 11:34
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Juray
сообщение Mar 1 2010, 15:02
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 19-03-06
Из: Йошкар-Ола
Пользователь №: 15 388



В Remote Frame вообще нет поля данных, после DLC сразу CRC идет.
Цитата
There is no DATA FIELD, independent of the values of the DATA LENGTH CODE which may be signed any value within the admissible range 0...8.
The value is the DATA LENGTH CODE of the corresponding DATA FRAME.
(Это из бошевской спецификации CAN, версия Sep. 1991; Part A - page 15, 3.1.2; Part B - page 49, 3.2.2)
Так что если есть хоть один байт данных - то имеется явно Data Frame.

Если RTRMSK обнулить - то фильтр не будет различать Data Frame и Remote Frame с одинаковым ID, примет и то и другое.
Если выставить в 1 - будет приниматься то, что задаёт RTRTAG.
Про IDEMSK я сам плохо понимаю. По идее, его обнуление приведет к приему сообщений как стандартного так и расширенного формата. А вот если 1 - я не нашёл где задаётся, какой формат принимать (бит IDE в CANCDMOB - "IDE bit of the remote or data frame to send").
В атмеловском CAN Tutorial написано:
Для CAN2.0A: IDEMSK : Identifier extension mask value : 0 comparison true forced 1 comparison enable (detect CAN2.0b reception while CAN2.0a expected)
Для CAN2.0B: IDEMSK : Identifier extension mask value : 0 comparison true forced 1 comparison enable (detect CAN2.0A reception while CAN2.0B expected)

RB0TAG служит для задания значения резервного бита R0, который следует за битом IDE (в стандартном формате CAN2.0B с 11-битным ID) или за R1 (в расширенном формате CAN2.0B с 29-битным ID и в CAN2.0A).
Этот бит "reserved for future expansion", то есть в нынешних протоколах можно на него забить, и писать 0.
Что интересно, он входит в Control Field, а не в Arbitration Field, и в фильтрации не должен учитываться, по идее. Но в даташите в разделе Acceptance Filter указывается критерий фильтрации: ID + RTR + RBn + IDE


Все-таки попробуйте CANSTMOB=0 прописать сразу после задания CANPAGE, и только потом CANCDMOB=0 .
А еще на всякий случай при настройке принимающего моба в DLC задать 1.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 22:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016