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

 
 
> CAN-передача данных по прерываниям
alogvinov
сообщение Jan 15 2007, 10:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 17-01-05
Пользователь №: 1 995



Имеется плата с LPC2294. Передача данных без использования работает.
Написал обработчик, который должен обрабатывать как приём, так и передачу.
Приём обрабатывается как положено. А вот прерываний по передаче не происходит.

Пытаюсь вызвать прерывания следующим образом:
1. записываю данные в очередь
2. жду, пока обнулится бит TBS1 в регистре CANSR
3. разрешаю прерывания ( устанавливаю бит TIE1 в регистре CANIER ).

Подскажите, что я делаю не так? Я уже устал бороться с этим уё#$%@м.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex03
сообщение Jan 15 2007, 13:20
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(alogvinov @ Jan 15 2007, 12:43) *
Написал обработчик, который должен обрабатывать как приём, так и передачу.

Может стоит разнести для начала. (а то и навсегда)
Цитата
Приём обрабатывается как положено. А вот прерываний по передаче не происходит.

Пытаюсь вызвать прерывания следующим образом:
1. записываю данные в очередь
2. жду, пока обнулится бит TBS1 в регистре CANSR
3. разрешаю прерывания ( устанавливаю бит TIE1 в регистре CANIER ).

Какая то странная последовательность.
Что есть "записываю данные в очередь" и "жду, пока обнулится бит TBS1 в регистре CANSR"

Обычно сначала прерывания разрешают.
Потом в случае единичного TBSx в регистре CANSR начинаете отправлять пакет.
Как у вас посылается я не знаю, но не забудьте помимо записи CANTFI, CANTID, CANTDA и CANTDB ещё и инициировать отсылку пакета
Код
/* ERRATA CAN.7
        pCR->CMR = CANCMR_TR | CANCMR_STB1;
*/
        pCR->CMR = CANCMR_SRR | CANCMR_STB1;

А уж потом ждите прерывания, точнее лучше их ждать всегда.


Цитата
Что есть "жду, пока обнулится бит TBS1 в регистре CANSR" -

Если это пустой цикл, без прочей работы проги, то можете не дождаться. (Если пакет ушел, или принялся к передаче)
ИМХО надо не проверять флаг занятости передатчика после отправки пакета, а проверять флаг возможности отправки (проверять на 1) перед отправкой.

Ну и еррату почитайте, там много про КАН понаписано! sad.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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