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

 
 
 
Reply to this topicStart new topic
> AT91SAM7S и внешние прерывания по фронту, как настроить для разных входов разные режимы?
kumle
сообщение Jan 15 2011, 12:54
Сообщение #1


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

Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280



Столкнулся с задачей когда одним входом нужно регистрировать начало импульса (полож. фронт) а другим входом конец импульса (отриц фронт).
Решил делать через внешние прерывания.
Знаю что режим такого прерывания задается в регистре AIC_SMR[source] : биты [2:0] задают приоритет прерывания, а биты [6:5] задают режим, например если [6:5]=11 то по положительному перепаду, а если 01 то по отрицательному перепаду. Но мне то нужно одновременно и то и другое, а source (источник) прерывания всего один это AT91C_ID_PIOA то бишь какой бы я вывод не подключил к этому прерыванию, получается для них для всех будет одинаковая настройка режима прерывания (либо только по положительному либо только по отрицательному)?
Может я чего то упустил в изучении? Или многого хочу?
Go to the top of the page
 
+Quote Post
codier
сообщение Jan 16 2011, 09:15
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 21-01-05
Пользователь №: 2 113



Фронт в AIC это несколько не то.. Вам нужно настраивать PIO контроллер, чтобы ловил прерывания по конкретным ножкам (PIO_PER, PIO_ODR, PIO_IER) , но, к сожалению, PIO в SAM7 ловит оба фронта и настроить иначе вроде как нельзя.

Цитата
27.4.10 Input Change Interrupt
The PIO Controller can be programmed to generate an interrupt when it detects an input change
on an I/O line.


Сообщение отредактировал codier - Jan 16 2011, 09:16
Go to the top of the page
 
+Quote Post
Aurochs
сообщение Jan 16 2011, 17:34
Сообщение #3


Ортодокс
***

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



Вход, на котором нужно фиксировать положительный фронт, можно подключить на IRQ0, а вход, на котором нужно фиксировать отрицательный фронт - на IRQ1. Ну, и соответствующим образом программируем контроллер прерываний...
Go to the top of the page
 
+Quote Post
kumle
сообщение Jan 17 2011, 08:02
Сообщение #4


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

Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280



Цитата(Aurochs @ Jan 16 2011, 20:34) *
Вход, на котором нужно фиксировать положительный фронт, можно подключить на IRQ0, а вход, на котором нужно фиксировать отрицательный фронт - на IRQ1. Ну, и соответствующим образом программируем контроллер прерываний...

Понятно, жаль что на моей отладочной плате на IRQ0 навесили кнопку !

А я правильно понимаю, что к другим (не к IRQ0/IRQ1) входам PIO тоже можно прикрутить прерывание, но источник прерывания будет один и соответственно приоритет и другие настройки (срабатывание по переднему/по заднему фронту) тоже одни и те же для всех входов подключенных к прерыванию ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 17 2011, 08:51
Сообщение #5


Гуру
******

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



Источник будет один от всего блока PIO, и этот источник будет внутренним, настроить его можно только на срабатывание по высокому уровню или положительному фронту.
Эта настройка никоим образом не относится к самим сигналам PIO, прерывание всегда генерируется по любому фронту.
Go to the top of the page
 
+Quote Post
Aurochs
сообщение Jan 17 2011, 09:04
Сообщение #6


Ортодокс
***

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



Цитата(kumle @ Jan 17 2011, 10:02) *
Понятно, жаль что на моей отладочной плате на IRQ0 навесили кнопку !

Если не нужно "просыпаться" по нажатию кнопки, то ее как раз и можно просто повесить на GPIO.
В противном случае можно, например, задействовать еще и FIQ.

Цитата(kumle @ Jan 17 2011, 10:02) *
А я правильно понимаю, что к другим (не к IRQ0/IRQ1) входам PIO тоже можно прикрутить прерывание, но источник прерывания будет один и соответственно приоритет и другие настройки (срабатывание по переднему/по заднему фронту) тоже одни и те же для всех входов подключенных к прерыванию ?

Да. Для контроллера прерываний контроллер PIO является одним из множества источников прерываний.
Go to the top of the page
 
+Quote Post
kumle
сообщение Jan 17 2011, 09:39
Сообщение #7


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

Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280



Цитата(aaarrr @ Jan 17 2011, 11:51) *
Источник будет один от всего блока PIO, и этот источник будет внутренним, настроить его можно только на срабатывание по высокому уровню или положительному фронту.
Эта настройка никоим образом не относится к самим сигналам PIO, прерывание всегда генерируется по любому фронту.


То есть если я правильно понял, то тут некая двойственность при настройке прерываний от входов PIO?
И еще немного непонятно что такое срабатывание по высокому уровню (с фронтами понятно.)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 17 2011, 10:51
Сообщение #8


Гуру
******

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



Попробую пояснить. Есть модуль PIO со своим выходом прерывания. Этот выход переходит в активное состояние по любому фронту на разрешенной в качестве источника прерывания ноги PIO. Со стороны AIC модуль PIO ничем не отличается от любого другого подобного (скажем, USART, SPI и т.п.), для него это просто внутренний источник прерывания, который может быть настроен на срабатывание только по высокому уровню или положительному фронту.
Выводы IRQx могут быть подключены непосредственно к AIC, и настроены на вызов прерывания по любому фронту и уровню.
Go to the top of the page
 
+Quote Post
kumle
сообщение Jan 17 2011, 12:31
Сообщение #9


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

Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280



Ааа, так имеется ввиду фронт выхода прерывания модуля PIO (некий внутренний сигнал от модуля PIO к AIC), а не фронт на выводе PIO.
Теперь прояснилось. Спасибо !!!

Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 17 2011, 12:42
Сообщение #10


Гуру
******

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



Цитата(kumle @ Jan 17 2011, 15:31) *
Ааа, так имеется ввиду фронт выхода прерывания модуля PIO (некий внутренний сигнал от модуля PIO к AIC), а не фронт на выводе PIO.

Совершенно верно. Многие почему-то упускают из вида, что это две большие разницы.
Go to the top of the page
 
+Quote Post

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

 


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


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