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

 
 
> Прерывания в Microblaze
mikki
сообщение May 8 2007, 08:39
Сообщение #1


Участник
*

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



Всем привет.
Пытался завести прерывания по таймеру в собранной системе на Microblaze.
Для чего использую opb_taimer и opb_intc.
После некоторой заморочки с определением таймера и контроллера прерываний прерывания стали срабатывать.

Проблема в том что после того как одно прерывание сработало остальные запускаются самостоятельно.
И вот тут , что не делал ничего не помогает, просветите в какую сторону копать.
Может что в обработчик прерывания вставить, типа программный сброс какого битика.
help.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mikki
сообщение May 9 2007, 12:59
Сообщение #2


Участник
*

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



Да, всегда нашим пацанам нехватает чуть чуть времени...
Вобщем я разобрался сам.
Задал в гугле запрос handler(void *baseaddr_p ) и получил много ссылок на примеры обработки прерываний..


Оказалось, что надо опросить флаг срабатываниЯ прерывания в регистре, например, для таймера CSR, о том что случилось прерывание и потом его же записать в тот же регистр CSR.
Типа сгенерить acknowledge соответствующего прерывания.

В этом случае запрос на прерывание сбрасывается и прерывание не автозапускается.


Я попробывал это в случае использования ядра opb_intc. Как это будет в случае прямой генерации прерывания не пробовал, но думаю также.

Спасибо отозвавшимся, надеюсть что мой опыт пригодится начинающим, типра меня.
Go to the top of the page
 
+Quote Post



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

 


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


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