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

 
 
> pin change interrupt как работает?
Kirill_Good
сообщение Jan 26 2013, 10:04
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528



Добрый день!

Есть проблема с ложным срабатыванием обработчика прерывания в системе. Девайс подключен ногой DATA_OUT к PIO ноге процессора. В драйвере ядра linux есть строчки gpio_to_irq(). Девайс не припаян к плате , а подключается через jack разъем. В процессе работы системы срабатывает в определенные моменты времени обработчик прерывания, хотя не девайс не был подключен. Схемотехника вроде правильная, вход процессора подтянут в питанию. Почему может возникнуть прерывание? PIO банк имеет восемь пинов. К банку подключен девайс и SPI флеш. После чтения литературы нашел понятие как pin change interrupt. Я правильно понимаю что, если irq привязвается к gpio, то прерывание привязвается не к конкретному пину, а ко всему банку и проверка какой пин сработал лежит на программисте? Если да, то не слишком ли высокий уровень абстакции у драйвера, чтобы проверять пины таким образом? Может ли это ложное срабатывание тянуться отсюда? Платформа не ARM , но подходы я думаю у всех похожи.

Не совсем понятно как вообще работает GPIO пин как внешнее прерывание. Это 8 разрядный регистр + логика на входе у банка и от него тянется одна линия ко внутреннему контроллеру прерывания SoC'a? И по изменению значений на нем генерируется прерывание?

Спасибо!

Сообщение отредактировал Kirill_Good - Jan 26 2013, 10:09
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jan 26 2013, 16:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



От философии зависит.

С одной стороны кто пин использует тот и смотрит, но с другой стороны представьте что у вас 2 драйвера на одном порту, и у них пины в одной группе. Один драйвер обработает прерывание, своего пина там не найдет и снимет флаг, и другой даже не узнает что что-то было.

Так что скорее всего должна быть какая то самая низкая функция которая разбирает перерывания и уже адресно дергает драйвер. Надо читать спецификацию к драйверу, как его использовать предполагали авторы. Может он вообще написан для систем с раздельными прерываниями, или использует глобальный драйвер порта ввода вывода решающий все проблемы...
Go to the top of the page
 
+Quote Post



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

 


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


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