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

 
 
> at90can128, Прерывания от MOB
SasaVitebsk
сообщение Dec 20 2007, 19:06
Сообщение #1


Гуру
******

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



Доброго времени суток.
Написал программу по работе с CAN. Задача довольно простая. Необходимо отлавливать сообщения поступающими по двум IDT. Для этого зарезервировал два MOB. Вроде инициализация правильная. Вроде всё настроил верно. Смотрю по JTAG и вроде всё нормально.

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

Настораживает то, что при разных запусках работа чуть чуть отличается вроде. Хотя, возможно это из-за того, что передающее устройство я притормозить немогу. Таким образом оно продолжает валить даже тогда, когда я остановил проц по JTAG.

Сам CAN узел сложноват, и не всё мне понятно. Например непонятно сбрасывается ли прерывание автоматом при входе в прерывание. Там ведь груповое прерывание. Может надо какие-то пляски ритуальные совершить?

Конечно, в оригинале было бы замечательно посмотреть инициализацию при аналогичной задаче. Или проверить мою. Я могу выложить.

ЗЫ: В библиотеке такого нет. Спецы - отзовитесь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=GM=
сообщение Dec 21 2007, 10:42
Сообщение #2


Ambidexter
*****

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



Цитата(SasaVitebsk @ Dec 20 2007, 19:06) *
Проблемы в том, что с передающего устройства всё валит непрерывно

Проблема только для просмотра линии осциллом, но не проблема для МК, поскольку кан-автомат выбирает сообщения, адресованные только ему.
Цитата(SasaVitebsk @ Dec 20 2007, 19:06) *
Сам CAN узел сложноват, и не всё мне понятно. Например непонятно сбрасывается ли прерывание автоматом при входе в прерывание. Там ведь груповое прерывание. Может надо какие-то пляски ритуальные совершить?

Не надо плясок, это лишнее. Бит CANIT в регистре CANGIT сбрасывается автоматически, но не на входе, а на выходе из прерывания - по команде RETI. Остальные CAN прерывания должны сбрасываться в программе записью 1 в соответствующий бит.

Давайте посмотрим ваш пример, что-нибудь и увидим(:-).


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post



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

 


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


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