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

 
 
> Множественные прерывания в TimerB, Выполняется только наиболее приоритетное, остальных будто нет
korobov_michael
сообщение Aug 20 2007, 20:06
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059



День добрый.
Работаю с F148, хочу использовать два прерывания по захвату (CCR0 и CCR1), а также прерывание по переполнению. Все от TimerВ. Работаю в IAR.
Проблема в том, что если я разрешаю все три типа прерываний, то в обработчике, обрабатывающем прерывание CCR1 (TBIV == 0x02) и переполнения (TBIV == 0x0E) обрабатывается только наиболее приоритетное прерывание (CCR1). Второго контроллер будто не видит. Если отключить обработку CCR1, то переполнение обрабатывается нормально.
Может быть, мало курил документацию... но никто ли не сталкивался с подобным? Что можно сделать?
Огромное спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Aug 20 2007, 21:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(korobov_michael)
если разрешены все прерывания, то обрабатывается только наиболее приоритетное. Как только оно запрещается - обрабатывается следующее по приоритету - в моем случае обработчик переполнения

Не вижу здесь чего-либо неординарного. Так и должны работать прерывания с разными приоритетами. Возможно вас вводит в недоумение использование breakpoint. При установке breakpoint на метке case 2: следующий вызов опять попадет на этот же вектор, т.к. несмотря на "останов по бряку" таймер в железе продолжает "щелкать", а прерывания формироваться. Вы лучше счетчики вместо "ногодрыгалки" сделайте или "дрыгайте" разными пинами в разных прерываниях, а не одним и тем же. Тогда вы сможете увидеть (например, осциллографом) работают ли все обработчики прерываний или только одно с самым высоким приоритетом.
P.S. IAR вроде корректно реализует switch(TBIV) с созданием копии этого регистра в РОНе, но на всякий случай посмотрите асм-овый исходник в этой части. Вдруг IAR лажается и TBIV дважды считывается в одном прерывании?
Go to the top of the page
 
+Quote Post
korobov_michael
сообщение Aug 21 2007, 04:25
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059



Цитата(rezident @ Aug 21 2007, 00:19) *
несмотря на "останов по бряку" таймер в железе продолжает "щелкать", а прерывания формироваться.


Я перехожу на MSP с AVR. В АВР в настройках IAR была возможность на время программного останова останавливать таймера. в ИАРе для MSP я такой возможности не нашел. Ее не существует или я плохо искал?
Но что касается счетчиков вместо ногодрыгалки - обязательно посмотрю. Спасибо большое

P.S. Смущает, правда, тот момент, что если я ставлю breakpoint только в ветви с менее приоритетным прерыванием, то (при разрешенном более приоритетном) контроллер в эту ветвь не заходит. Будем искать

Сообщение отредактировал korobov_michael - Aug 21 2007, 05:04
Go to the top of the page
 
+Quote Post
shasik
сообщение Aug 21 2007, 05:35
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188



Цитата(korobov_michael @ Aug 21 2007, 07:25) *
В АВР в настройках IAR была возможность на время программного останова останавливать таймера. в ИАРе для MSP я такой возможности не нашел. Ее не существует или я плохо искал?


Плохо Искали. Есть.
Go to the top of the page
 
+Quote Post
korobov_michael
сообщение Aug 21 2007, 08:51
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059



Цитата(shasik @ Aug 21 2007, 08:35) *
Плохо Искали. Есть.

Если можно, укажите, пожалуйста, где его искать. Лично я не нашел.
Поскольку у меня все еще имеются сомнения насчет возможности останова таймеров при программном стопе, скажите, пожалуйста, может быть, имеются какие-то специфические приемы при отладке?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- korobov_michael   Множественные прерывания в TimerB   Aug 20 2007, 20:06
- - rezident   Приведите фрагмент кода обработчика прерывания. Ду...   Aug 20 2007, 20:38
|- - korobov_michael   Код// Timer_B7 Interrupt Vector (TBIV) han...   Aug 20 2007, 20:52
|- - korobov_michael   Вопрос в догонку. Я хочу запитать ACLK от 4МГц. Од...   Aug 21 2007, 10:01
||- - jorikdima   Цитата(korobov_michael @ Aug 21 2007, 14...   Aug 21 2007, 11:46
||- - rezident   Цитата(korobov_michael @ Aug 21 2007, 16...   Aug 21 2007, 13:48
|- - shasik   Цитата(korobov_michael @ Aug 21 2007, 11...   Aug 21 2007, 10:20
||- - korobov_michael   Цитата(shasik @ Aug 21 2007, 13:20) Когда...   Aug 21 2007, 12:53
||- - shasik   Цитата(korobov_michael @ Aug 21 2007, 15...   Aug 21 2007, 13:41
|- - exSSerge   Цитата(korobov_michael @ Aug 21 2007, 15...   Aug 21 2007, 15:22
|- - korobov_michael   Большое спасибо всем принявшим участие в обсуждени...   Aug 24 2007, 20:35
- - Dog Pawlowa   Цитата(korobov_michael @ Aug 21 2007, 07...   Aug 21 2007, 06:19


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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 09:09
Рейтинг@Mail.ru


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