Добрый день!
Есть проблема с ложным срабатыванием обработчика прерывания в системе. Девайс подключен ногой 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
|