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

 
 
> ARM7 от Atmel. Запрет прерываний., почему он заходит в Spurious Interrupt
Shein
сообщение Jun 8 2012, 14:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-07
Пользователь №: 25 855



Доброго всем времени суток.
Столкнулся с таким явлением как вызов обработчика Spurious Interrupt.
Суть вопроса:
Работа с UART через контроллер PDC. Обрабатываются прерывания END_RX и END_TX. Используются два кольцевых буфера, т.е. прием или передача по PDC идет непрерывно. Фактически работа с индексами этих буферов идет и из прерываний, и из основной программы.
Логично, что когда я, например, читаю из приемного буфера, то при обращении к индексам, запрещаю прерывания по приему END_RX. Аналогично, при записи в передающий буфер, при обращении к индексам, запрещаются прерывания передатчика END_TX.
Столкнулся с тем, что при интенсивном обмене данными, программа иногда залетает в Spurious Interrupt. Согласно даташиту, это происходит, если контроллер AIC выдал запрос на прерывание ядру, но на момент чтения вектора обработчика, запрос на прерывание уже был снят.
В процессе отладки программы эта версия абсолютно подтвердилась. Вход в Spurious Interrupt происходит если запрос на прерывание контроллеру AIC пришел в момент обработки инструкции запрета прерывания от приемника или передатчика. Соответственно запрет отрабатывается, бит interrupt pending снимается, и когда ядро читает вектор обработчика из AIC, получается что прерывания-то уже нет.

Собственно вопрос: это нормальная ситуация? Раньше у меня стояла заглушка (бесконечный цикл) на Spurious Interrupt и на всех неиспользуемых векторах в AIC. Когда на Spurious Interrupt поставил обработчик в котором просто формируется подтверждение (запись в AIC_EOICR) программа, в общем стала нормально работать. Но вызовы Spurious таки иногда наблюдаются. Вот я и думаю, оставить как есть, еле же есть некий корректный механизм, как запрещать прерывание без возникновения данного эффекта?
P.S. В догонку: наблюдал это явление на двух процессорах AT91RM3400 и AT91SAM7X256. Картина абсолютно идентичная.

Сообщение отредактировал Shein - Jun 8 2012, 14:21
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Shein   ARM7 от Atmel. Запрет прерываний.   Jun 8 2012, 14:17
- - aaarrr   Цитата(Shein @ Jun 8 2012, 18:17) Собстве...   Jun 8 2012, 14:50
- - Lotor   Эти прерывания типичны не только для атмелов, мне ...   Jun 9 2012, 06:55
- - jcxz   Цитата(Shein @ Jun 8 2012, 20:17) Вот я и...   Jun 9 2012, 06:56
|- - Shein   Народ, спасибо всем большое! Вы развеяли мои ...   Jun 10 2012, 13:46
- - Aaron   Если я не ошибаюсь, там же можно два буфера для пе...   Jun 9 2012, 09:29
- - prottoss   А если вот такая ситуация к примеру: 1. Фоновый пр...   Jun 10 2012, 14:15
|- - jcxz   Цитата(prottoss @ Jun 10 2012, 20:15) А е...   Jun 10 2012, 15:53
||- - prottoss   Цитата(jcxz @ Jun 10 2012, 21:53) Каждый ...   Jun 10 2012, 15:56
||- - jcxz   Читайте внимательнее: Цитата(jcxz @ Jun 10 20...   Jun 10 2012, 16:02
|||- - prottoss   Цитата(jcxz @ Jun 10 2012, 22:02) Читайте...   Jun 10 2012, 16:05
||- - jcxz   Цитата(jcxz @ Jun 10 2012, 21:53) Каждый...   Jun 10 2012, 16:07
||- - prottoss   Цитата(jcxz @ Jun 10 2012, 22:07) Ваши кр...   Jun 10 2012, 16:16
||- - jcxz   Цитата(prottoss @ Jun 10 2012, 22:16) Еще...   Jun 10 2012, 16:22
|- - MaslovVG   Цитата(prottoss @ Jun 10 2012, 18:15) А е...   Jun 10 2012, 16:17
|- - prottoss   Цитата(MaslovVG @ Jun 10 2012, 22:17) Зде...   Jun 10 2012, 16:24
|- - jcxz   Разруливается это двумя индексами - у каждого проц...   Jun 10 2012, 16:32
- - aaarrr   Жарко у вас тут Действительно, запрещать прерыва...   Jun 10 2012, 16:53
- - jcxz   Только когда пишет один процессор, а читает - друг...   Jun 10 2012, 17:11
|- - aaarrr   Цитата(jcxz @ Jun 10 2012, 21:11) Только ...   Jun 10 2012, 17:17
- - Genadi Zawidowski   Цитата(aaarrr @ Jun 10 2012, 20:53) Дейст...   Jun 10 2012, 18:04
- - jcxz   Смотрим на название форума В ARM все 8-/16-/32-ра...   Jun 10 2012, 18:17
|- - Shein   Цитата(jcxz @ Jun 10 2012, 21:17) Смотрим...   Jun 11 2012, 22:31
- - aaarrr   Цитата(Genadi Zawidowski @ Jun 10 2012, 22...   Jun 10 2012, 18:20


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

 


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


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