Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CAN на STM32F2xx. Где прерывание?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
pitt
Разбираюсь с CAN на STM32F2xx. Научился поылать фреймы. Т.е. с большой долей уверенности могу утверждать, что инициализация модуля работает. Теперь то же самое, но с прерываниями. Разрешаю прерывание TMEIE в CAN_IER. выполняю
NVIC_EnableIRQ (CAN1_TX_IRQn); Посылаю фрейм, жду прерывания, а его нет! Биты TXOK0 и RQCP0 в CAN_TSR взведены. Смотрю в NVIC - прерывание там enable и pending, а в обработчик не заходит. Что не так?
Спасибо.
demiurg_spb
Традиционные вопросы:
Глобально все прерывания разрешены?
Проект на С или С++?
pitt
Цитата(pitt @ Apr 2 2013, 22:04) *
Разбираюсь с CAN на STM32F2xx. Научился поылать фреймы. Т.е. с большой долей уверенности могу утверждать, что инициализация модуля работает. Теперь то же самое, но с прерываниями. Разрешаю прерывание TMEIE в CAN_IER. выполняю
NVIC_EnableIRQ (CAN1_TX_IRQn); Посылаю фрейм, жду прерывания, а его нет! Биты TXOK0 и RQCP0 в CAN_TSR взведены. Смотрю в NVIC - прерывание там enable и pending, а в обработчик не заходит. Что не так?
Спасибо.

Проблема была где-то в Keil IDE. Создал новый проект - все пошло.
Golikov A.
CAN1_TX_IRQn
это не единственное прерывание кана, это только от 1 буфера, есть еще и 0 (в проце 2 буфера). Надо обрабатывать оба прерывания!
Когда заполняется первый буфер данные приходят во второй. В какой они придут первыми хрен знает, недавно кто-то говорил что при дебуге у него данные сыпались в 1 буфер, а при работе в 0.

pitt
Цитата(Golikov A. @ Apr 5 2013, 11:21) *
CAN1_TX_IRQn
это не единственное прерывание кана, это только от 1 буфера, есть еще и 0 (в проце 2 буфера). Надо обрабатывать оба прерывания!
Когда заполняется первый буфер данные приходят во второй. В какой они придут первыми хрен знает, недавно кто-то говорил что при дебуге у него данные сыпались в 1 буфер, а при работе в 0.

прерывание по передаче единственное. По приему, действительно, пара и так на каждый из двух ВОЗМОЖНЫХ модулей. Возможных, не значит обязательно использовать оба.
При приеме, тоже все не так сложно: фрейм прошедший через фильтр попадает в буфер(FIFO), назначенное этому фильтру. Если фрейм может пройти через 2 фильтра, настроенные на разные буфера, то он будет проходить через фильтр с меньшим порядковым номером и, соответственно, в ему, фильтру, приписанный буфер.
Моя проблема, как я описал выше, была в настройках IDE Keil - и хрен с ней, пока разбираться не приспичило.
Golikov A.
ну да.. эт я лажанулся, точно ТХ а не РХ... сорки...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.