Приветствую.
Понадобилась возможность считать импульсы на IMX233 по спаду. По примеру http://www.starterkit.ru/html/index.php?name=forum&op=view&id=9406 написан драйвер.
В начале обработчика дергаю пин(изменяю состояние ножки), и обнаруживаю такую картину. При переключении сигнала на ножке в обработчик может зайти 2-а раза а может один раз(судя по пину, который переключается в обработчике). В итоге после подачи 1000 импульсов программа насчитывает от 1100 до 1600.
Кто-нибудь сталкивался с возникновением ложных срабатываний прерываний?
Как вы переключаете пин ? возможно это влияние "дребезга" котакта. Еще не совем понятно это - "судя по пину, который переключается в обработчике", зачем его там переключать ? покажите код лучше. Количество прерываний можно смотреть через
cat /proc/interrupts
Дребезг отсутствует т.к. подаю меандр 20Гц с генератора.
Переключаю совершенно дугой пин дабы подключится осцилографом и посмотреть заходит в обработчик или нет.
Надо проверять на плате - странный результат и с кодом вроде все в порядке, до платы доберусь не раньше выходных. Прерывания от GPIO используются в драйвере сети и в тачскрине - но там такое не обнаружить просто так.
Смотрел драйвер сети(ks8851), там прерывания не по перепаду а по уровню.
Проверил свой драйвер на работу прерываний по уровню. С уронем все четко, однако в этом режиме нельзя фиксировать количество перепадов, точнее можно, постоянно меняя уровень при котором срабатывает прерывание. Но это извращение.
Проверил у себя - нет никаких лишних срабатываний. Как тестил - замкнул перемычкой пины 35,37 (gpio 23 - пин который дрыгается в скрипте, gpio 91 - пин который генерирует прерывания), установил модуль, запустил скрипт