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

 
 
 
Reply to this topicStart new topic
> AT91SAM7X. Прерывания по фронту.
Aurochs
сообщение Mar 31 2009, 10:08
Сообщение #1


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Работал до этого только с прерываниями по уровню (от внутренней периферии). И, как говорится, горя не знал. Теперь вот обстоятельства вынуждают использовать прерывания по фронту (тоже от внутренней периферии). И обнаружил следующее - AIC почему-то не сбрасывает автоматически прерывания по фронту. Обработку произвожу в точном соответствии с даташитом. После выставления периферией AICу запроса на прерывание эти прерывания потом валят беспрерывно и все затыкается.
Спасает только одно - сбрасывние прерывания в ручном режиме прописыванием рег-ра AIC_ICCR. В этом случае нормальная работа восстанавливается. Уже не один раз проштудировал даташит (и errata в том числе: уже жизнью научен) - везде, где касаются этой темы прописано, что-то типа
Цитата
The AIC features an automatic clear of the current interrupt when the AIC_IVR (Interrupt Vector Register) is read.
И еще раз подчеркиваю: при работе с прерываниями по уровню подобных проблем вообще не возникало.
Поделитесь, пожалуйста опытом по данному вопросу, буду очень признателен.
А то теперь не дает покоя почти гамлетовский вопрос: кто же здесь дурак? smile.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 31 2009, 10:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Прерывания по фронту работают совершенно нормально, но их использование требует предельной внимательности со стороны программиста.
А что вынудило использовать их, тем более на внутренних источниках?
Go to the top of the page
 
+Quote Post
Aurochs
сообщение Mar 31 2009, 10:45
Сообщение #3


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Цитата(aaarrr @ Mar 31 2009, 13:15) *
Прерывания по фронту работают совершенно нормально

Т.е. Вы имеете ввиду, что сбрасываются они автоматически?
Цитата(aaarrr @ Mar 31 2009, 13:15) *
А что вынудило использовать их, тем более на внутренних источниках?

Имеется цель на базе FIQ-прерывания создать некое виртуальное устройство и нужно из FIQ-обработчика инициировать в AIC запрос на прерывание для обычного драйвера. А это можно сделать только для прерываний по фронту.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 31 2009, 12:07
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Aurochs @ Mar 31 2009, 14:45) *
Т.е. Вы имеете ввиду, что сбрасываются они автоматически?

Да, но есть подозрение...

Цитата(Aurochs @ Mar 31 2009, 14:45) *
Имеется цель на базе FIQ-прерывания создать некое виртуальное устройство и нужно из FIQ-обработчика инициировать в AIC запрос на прерывание для обычного драйвера. А это можно сделать только для прерываний по фронту.

...что в случае ручной установки его и сбрасывать нужно вручную.
Go to the top of the page
 
+Quote Post
Aurochs
сообщение Mar 31 2009, 13:40
Сообщение #5


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Цитата(aaarrr @ Mar 31 2009, 15:07) *
Да, но есть подозрение...
...что в случае ручной установки его и сбрасывать нужно вручную.

Но я даже не имел в виду этот случай. Речь идет о самом банальном случае, когда прерывание просто приходит от внутренней периферии, например контроллера USART.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 31 2009, 13:56
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Не берусь утверждать со стопроцентной уверенностью, т.к. прерывания по фронту от внутренних источников запускал только в порядке эксперимента, но сбросов через AIC_ICCR оно не требовало.
Go to the top of the page
 
+Quote Post
Aurochs
сообщение Apr 1 2009, 07:15
Сообщение #7


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Цитата(aaarrr @ Mar 31 2009, 16:56) *
Не берусь утверждать со стопроцентной уверенностью, т.к. прерывания по фронту от внутренних источников запускал только в порядке эксперимента, но сбросов через AIC_ICCR оно не требовало.

Спасибо за консультацию, aaarrr.
Но у меня без сброса никак не получается. К сожалению, нет времени проводить какие-то специальные исследования по этому поводу. Тем более, что с ручными сбросами все работает вроде как нормально.
В итоге вопрос остается открытым и если у кого-то еще будут соображения по этому поводу - буду очень рад.
Go to the top of the page
 
+Quote Post

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

 


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


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