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

 
 
 
Reply to this topicStart new topic
> AT90CAN128, Вопрос по CAN интерфейсу
AlexPT
сообщение Jun 13 2007, 08:02
Сообщение #1


Участник
*

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



Здравствуйте!
Вопрос по фильтрации принимаемых сообщений. В даташите на микроконтроллер на стр. 243 описана работа фильтра. Если я правильно понимаю, если к примеру я запишу в регистр CANIDM первого канала маску 0x007, а регистр CANIDM второго канала маску 0x0FF, то при приеме сообщения с идентификатором 0x0FF оно может быть принято как фильтром первого так фильтром второго каналов. Если так, то получается, что все сообщения с идентификатором большим 0x007 будут приниматься первым каналом и он будет постоянно загружен. Тогда не понятно в чем смысл такой фильтрации. Нельзя ли так организовать фильтрацию, чтобы первым каналом принимались сообщения с идентификатором в диапазоне 0x007 ... 0x0FE, а вторым каналом сообщения с идентификатором 0x0FF и больше. Или я не верно разобрался с фильтрацией.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 13 2007, 08:26
Сообщение #2


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

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 13 2007, 11:27
Сообщение #3


Ambidexter
*****

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



Цитата(KRS @ Jun 13 2007, 07:26) *
У CAN128 фильтр основан на маске, а не на диапазоне. Можно настроить фильтр что бы в 1 mailbox принимались фреймы с id от 0 до 0xff, а во второй все остальные.
т.е в 1 mailbox поставить маску 0x7F0 tag 0x000
а в 2 mailbox маску 0 и любой tag

По-моему неверно, тогда в первом боксе вы примете только фреймы с ид от 0х000 до 0х00F, а во втором все фреймы.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 13 2007, 12:36
Сообщение #4


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

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



Цитата(=GM= @ Jun 13 2007, 15:27) *
По-моему неверно, тогда в первом боксе вы примете только фреймы с ид от 0х000 до 0х00F, а во втором все фреймы.

Да точно! Слишком много 1 поставил (привык к extended 29 bit id)
маска нужна 0x700
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 13 2007, 12:59
Сообщение #5


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, непонятно.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 13 2007, 14:17
Сообщение #6


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

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



Цитата(=GM= @ Jun 13 2007, 16:59) *
Ну, это ладно. Но автор темы мечтал принять 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, непонятно.

Так надо бокс 0 настроить только на прием 0xFF
Бокс 1 от 0 до 0xFF
Бокс 2 все остальное

Получится что пакет с 0xff будет попадать в 0 бокс, поеэтому в бокс1 будут попадать пакеты от 0 до 0xFE, а все остальные во 2ой
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 13 2007, 14:35
Сообщение #7


Ambidexter
*****

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



Цитата(KRS @ Jun 13 2007, 13:17) *
Так надо бокс 0 настроить только на прием 0xFF
Бокс 1 от 0 до 0xFF
Бокс 2 все остальное

Получится, что пакет с 0xff будет попадать в 0 бокс, поэтому в бокс1 будут попадать пакеты от 0 до 0xFE, а все остальные во 2ой

А что делать с пакетами 0х000-0х006? Их же не надо принимать.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 13 2007, 14:46
Сообщение #8


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

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



Цитата(=GM= @ Jun 13 2007, 18:35) *
А что делать с пакетами 0х000-0х006? Их же не надо принимать.

А тоже самое один майлбокс на прием только 7, другой от 0 до 7
в итоге получится
Код
Бокс Маска Tag
  0  0x7FF 0x007 только id = 7
  1  0x7F8 0x000 id от 0 до 7 ( но 7 идет в 0 бокс)
  2  0x7FF 0x0FF только id = 0xFF
  3  0x700 0x000 id от 0 до 0xff ( но от 0 до 7 и FF идут в другие боксы)
  4  0x000 0x000 все остальные
Go to the top of the page
 
+Quote Post
AlexPT
сообщение Jun 14 2007, 10:47
Сообщение #9


Участник
*

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



Большое всем спасибо за помощь. Буду думать дальше.
Go to the top of the page
 
+Quote Post

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

 


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


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