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

 
 
 
Reply to this topicStart new topic
> Алгоритм CAN-приема, (AT90CAN128)
DVF
сообщение Sep 7 2009, 04:41
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



Может ли кто привести алгоритм обработки прерывания CAINT при приеме кадра и собственно чтения байтов из MOb?
Проверили источник прерывания: ошибка или нет. Если нет, то какие шаги далее?

Сообщение отредактировал DVF - Sep 7 2009, 04:46
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 7 2009, 10:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Да собственно никакие. Читаем соответствующий mailbox да и всё. Единственное, что возможно надо также таймаут обрабатывать. Это на случай, чтобы отловить ситуацию когда произошёл обрыв CAN канала.

Если у вас передача сообщения это часть протокола более высокого уровня (Например CAN-Open), то тогда необходима дальнейшая обработка этого протокола.
Go to the top of the page
 
+Quote Post
DVF
сообщение Sep 7 2009, 11:56
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



Цитата
Единственное, что возможно надо также таймаут обрабатывать. Это на случай, чтобы отловить ситуацию когда произошёл обрыв CAN канала.

Подробнее можно? Имеется ввиду ожидание флага BXOK, если данные с ожидаемой длиной?
Go to the top of the page
 
+Quote Post
ARV
сообщение Sep 7 2009, 16:08
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



а чего бы вам не использовать готовую атмеловскую билиотеку поддержки CAN? правда, по умолчанию там не по прерываниям, а поллингом все делается... но ежели вы мало-мало покумекаете - не трудно и прерывания сделать smile.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
DVF
сообщение Sep 8 2009, 05:13
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



И такой вариант рассматривается, но что-то он мне сложно дается - не тот уровень у меня, однако smile.gif
Go to the top of the page
 
+Quote Post
DVF
сообщение Sep 28 2009, 08:42
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



Вот код :
Код
void can_Set_mob_Rx(void)
{
    Can_clear_rtr();                                                          
    Can_set_mob(MOB_rx);// Выбор mob: #define Can_set_mob(mob)       { CANPAGE = ((mob) << 4);}
    Can_set_mask_mob();                // Принимать конкретные адреса
    Can_set_dlc(2);                    // Длина пакета 2 байта
    Can_clear_rplv();                    // Без ответа
    CANIDT1 = 0x68;
    CANIDT2 = 0x00;
    CANIDT3 = 0x00;
    CANIDT4 = 0x00;
    Can_config_rx();                    // На прием
}

void can_Set_mob_Tx(void)
{
    Can_set_mob(MOB_tx);                // Выбор mob
    CANIDT1 = 0x66;
    CANIDT2 = 0x00;
    CANIDT3 = 0x00;
    CANIDT4 = 0x00;
    Can_set_dlc(2);                    // Длина пакета 2 байта
    for(U8 i = 0; i < (Can_get_dlc()); i++)    CANMSG = Tx_Data[i];    // запись в CANMSG
    Can_clear_rtr();
    Can_clear_status_mob();                // Очищаем все флаги регистра состояния MOb
Can_config_tx();                    // Передача
}

Передача инициируется событием. Все проходит хорошо - отправляется и принимается вторым узлом.
Далее, я считал, что MOb на прием уже сконфигурирован и достаточно очистить CANSTMOB = 0x00; Прием у меня по прерыванию от RXOK. Но оно не возникает, пока не будет выполнено перед этим: Can_set_mob(MOB_rx); Это правильное поведение? А если я несколько MOb настрою на прием, то мне для каждого придется выполнить этот шаг? Или надо так понимать, что делая CANSTMOB = 0x00; я очищал страницу MOb на передачу? Совсем запутался...

Забегая вперед хочу спросить, как моделировать ошибки в CAN, чтобы можно было заняться отладкой при из возникновении? Может ссылки есть?

Сообщение отредактировал DVF - Sep 28 2009, 09:16
Go to the top of the page
 
+Quote Post

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

 


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


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