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

 
 
> 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
Ответов
Alexeus
сообщение Mar 1 2010, 19:08
Сообщение #2


Участник
*

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



черт! я попутал с переводом id бинарника в хекс. 401 будет по другому записываться.

Вот так все пашет! CANSTMOB я действительно перенес в начало, но сомнительно, по-моему его и в конце можно ставить.
Спасибо тебе Juray, а то что то маловато тем по этому мк, подсмотреть реальные примеры негде... (

void Rx_mob(void)
{

CANPAGE = 0x70; //выбор моб7
CANSTMOB=0; // очистим ош-ки и прерывания данного моба

CANIDT1 = 0x80; //задаем TAG: id "401"
CANIDT2 = 0x20; //...
CANIDT3 = 0;
CANIDT4 = 0;

CANIDM1 = 0xFF; //задаем mask "111 1111 1111" прием/передача только одного id
CANIDM2 = 0xE0; //...
CANIDM3 = 0;
CANIDM4 = 0;

temp2=CANMSG;
CANCDMOB = 0x81; //Разрешаем прием кадров в этот моб, без ответа, CAN2.0A, ожидаемая длина сообщения 1байт
}

Сообщение отредактировал Alexeus - Mar 1 2010, 19:16
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:40
Рейтинг@Mail.ru


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