|
AT90CAN128, Вопрос по CAN интерфейсу |
|
|
|
Jun 13 2007, 08:02
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 22-12-06
Пользователь №: 23 780

|
Здравствуйте! Вопрос по фильтрации принимаемых сообщений. В даташите на микроконтроллер на стр. 243 описана работа фильтра. Если я правильно понимаю, если к примеру я запишу в регистр CANIDM первого канала маску 0x007, а регистр CANIDM второго канала маску 0x0FF, то при приеме сообщения с идентификатором 0x0FF оно может быть принято как фильтром первого так фильтром второго каналов. Если так, то получается, что все сообщения с идентификатором большим 0x007 будут приниматься первым каналом и он будет постоянно загружен. Тогда не понятно в чем смысл такой фильтрации. Нельзя ли так организовать фильтрацию, чтобы первым каналом принимались сообщения с идентификатором в диапазоне 0x007 ... 0x0FE, а вторым каналом сообщения с идентификатором 0x0FF и больше. Или я не верно разобрался с фильтрацией.
|
|
|
|
|
 |
Ответов
|
Jun 13 2007, 08:26
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(AlexPT @ Jun 13 2007, 12:02)  Здравствуйте! Вопрос по фильтрации принимаемых сообщений. В даташите на микроконтроллер на стр. 243 описана работа фильтра. Если я правильно понимаю, если к примеру я запишу в регистр CANIDM первого канала маску 0x007, а регистр CANIDM второго канала маску 0x0FF, то при приеме сообщения с идентификатором 0x0FF оно может быть принято как фильтром первого так фильтром второго каналов. Если так, то получается, что все сообщения с идентификатором большим 0x007 будут приниматься первым каналом и он будет постоянно загружен. Тогда не понятно в чем смысл такой фильтрации. Нельзя ли так организовать фильтрацию, чтобы первым каналом принимались сообщения с идентификатором в диапазоне 0x007 ... 0x0FE, а вторым каналом сообщения с идентификатором 0x0FF и больше. Или я не верно разобрался с фильтрацией. У CAN128 фильтр основан на маске, а не на диапазоне. Можно настротить фильтр что бы в 1 mailbox принимались фреймы с id от 0 до 0xff, а во второй все остальные. т.е в 1 mailbox поставить маску 0x7F0 tag 0x000 а в 2 mailbox маску 0 и любой tag Как вариант можно добавить еще один mailbox, который принимает только 0xff, тогда получится 1 mailbox принимает 0xff второй от 0 до 0xfe третий все остальное
Сообщение отредактировал KRS - Jun 13 2007, 09:03
|
|
|
|
|
Jun 13 2007, 12:59
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(KRS @ Jun 13 2007, 11:36)  Да точно! Слишком много 1 поставил (привык к extended 29 bit id) маска нужна 0x700 Ну, это ладно. Но автор темы мечтал принять 0х007-0х0FE в один бокс, я никак не пойму, как сделать? Ну, например, ставим сначала бокс0 на прием 0х000-0х004, бокс 2 на 0х005, бокс 3 на 0х006 и бокс 4 на 0х007, и наконец бокс 5 на 0х008-0хFF. По-другому не придумывается... и как обойти адрес 0хFF, непонятно.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|