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

 
 
> Несколько прерываний от одного компонента
spectr
сообщение May 12 2011, 08:09
Сообщение #1


Местный
***

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



Коллеги, а подскажите, как сделать так, чтобы компонент формировал не одно, а несколько прерываний (avs_interrupt)?
На данный момент компонент является ММ-слейвом с одним avs_interrupt, но возникла острая потребность в еще одном прерывании.
Пока что как вариант - делать у компонента еще один ММ-слейв-интерфейс.
Не очень понимаю как можно выйти из этой ситуации.

Сообщение отредактировал spectr - May 12 2011, 08:09
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
vadimuzzz
сообщение May 12 2011, 08:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



а чем не устраивает обычная схема, когда компонент генерирует прерывание по наступлении нескольких событий (ограничивается регистром типа interrupt_mask) и взводит соотв. флаг в статусном регистре, чтобы обработчик прерывания мог определить, какое событие вызвало прерывание?
Go to the top of the page
 
+Quote Post
spectr
сообщение May 12 2011, 08:35
Сообщение #3


Местный
***

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



Да, это простое и удобное решение, но:
Дело в том, что на этом прерывании сидит rtos-задача, которая читает из фифо данные. Данные должны быть вычитаны максимально быстро (то есть, в прерывании ничего больше быть не должно - любая проверка масок и прочие чтения регистров приведут к задержке, хоть и небольшой, но в моем случае это критично).

Поэтому и возникла мысль применить еще одно прерывание для остальных вещей.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение May 12 2011, 09:58
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(spectr @ May 12 2011, 15:35) *
Да, это простое и удобное решение, но:
Дело в том, что на этом прерывании сидит rtos-задача, которая читает из фифо данные. Данные должны быть вычитаны максимально быстро (то есть, в прерывании ничего больше быть не должно - любая проверка масок и прочие чтения регистров приведут к задержке, хоть и небольшой, но в моем случае это критично).

Поэтому и возникла мысль применить еще одно прерывание для остальных вещей.

а вы какой контроллер прерываний используете?
Go to the top of the page
 
+Quote Post
spectr
сообщение May 12 2011, 10:20
Сообщение #5


Местный
***

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



VIC не использую, значит обычный. Первой мыслью было применить VIC, но насколько я понял из описания, к VIC можно подключать только прерывания с авалоновских интерфейсов...
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение May 12 2011, 11:12
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(spectr @ May 12 2011, 17:20) *
VIC не использую, значит обычный. Первой мыслью было применить VIC, но насколько я понял из описания, к VIC можно подключать только прерывания с авалоновских интерфейсов...

так а у вас в первом сообщении и есть авалоновский интерфейс
Go to the top of the page
 
+Quote Post
spectr
сообщение May 12 2011, 11:20
Сообщение #7


Местный
***

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



Да, но мне нужно получить несколько прерываний с _одного_ интерфейса, а на VIC, насколько я понял, можно подключать N прерываний с N авалонов (по одному с каждого).
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение May 12 2011, 11:26
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



а кто мешает компоненту иметь несколько интерфейсов? хотя я бы сначала попробовал VIC с одним прерыванием и чтением контекстного регистра. больше того, я бы не стал доверять чтение из FIFO программе, коль скоро стоит задача вычитать максимально быстро. гораздо кошернее использовать для этого DMA с соотв. прерыванием
Go to the top of the page
 
+Quote Post
alexPec
сообщение May 12 2011, 11:43
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(spectr @ May 12 2011, 12:35) *
Да, это простое и удобное решение, но:
Дело в том, что на этом прерывании сидит rtos-задача, которая читает из фифо данные. Данные должны быть вычитаны максимально быстро (то есть, в прерывании ничего больше быть не должно - любая проверка масок и прочие чтения регистров приведут к задержке, хоть и небольшой, но в моем случае это критично).


Так у Вас ведь время реакции на прерывание много больше времени проверки бита в регистре. Бит-то проверить - 1 команда прочитать регистр, 1 команда лог. AND, 1 команда - условный переход. Если ниос и проц не самый простой - вроде как 3 такта займет (или около того) проверка бита. Это всяко десятки-сотни наносекунд, а реакция на прерывание если мне память не изменяет микросекунды. Стоит ли из-за наносекунд огород городить?
Go to the top of the page
 
+Quote Post

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

 


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


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