Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
прерывание на GPIO
ARMbeginner
Добавлено 30.05.2012 15:49 Редактировалось 30.05.2012 16:10
0
Сообщение: 1
ARMbeginner
5

Пункты: 311
Регистрация: 30.05.2012
Пытаюсь завести прерывание на 39 ногу внешнего разъёма платы SK-SAMXE512.
У меня всегда выходит ошибка:
setting trigger mode 4 for irq 54 failed (gpio_irq_type+0x0/0x2c)
незнаю в чём дело.
код функции, где происходит "затык":

...
//инициализация пина
at91_set_gpio_input(irq_pin, 1);
at91_set_deglitch(irq_pin, 1);
...
ret = request_irq(irq, gpio_interrupt, IRQF_TRIGGER_FALLING, "gpio_irq", driver);
...

На ту же ногу заводят прерывание в этой теме:
http://www.starterkit.ru/html/index.php?name=forum&op=view&id=9406
и там якобы нашли решение, но я так и не понял в чём принципиальная разница
Спуститься к концу Подняться к началу
Персональная информация
dx
Добавлено 30.05.2012 18:08 Сообщение: 2
dx
3.5

Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
когда это нога простой GPIO то там прерывание возможно только по IRQF_TRIGGER_RISING + IRQF_TRIGGER_FALLING одновременно. когда же эта нога в external irq то там вожможна установка как IRQF_TRIGGER_RISING так и IRQF_TRIGGER_FALLING отдельно


http://rico-studio.com/linux/at91-gpio-interrupt/
Спуститься к концу Подняться к началу
Персональная информация
Franky
Добавлено 30.05.2012 19:27 Редактировалось 30.05.2012 19:31 Сообщение: 3
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
А зачем вообще может быть нужно прерывание по обоим фронтам?
У меня похожая проблема!
А как задать источник прерывания, если у меня сигнла заведён на external irq 2.
что указать тут
...
.irq = ????
....
Спуститься к концу Подняться к началу
Персональная информация
dx
Добавлено 30.05.2012 19:35 Сообщение: 4
dx
3.5

Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
а что за камень?
Спуститься к концу Подняться к началу
Персональная информация
Franky
Добавлено 30.05.2012 19:51 Редактировалось 30.05.2012 19:51 Сообщение: 5
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
SAM9260, но похоже ответ нашёлся по вашей ссылке выше. СПАСИБО!
Спуститься к концу Подняться к началу
Персональная информация
ARMbeginner
Добавлено 31.05.2012 08:45 Сообщение: 6
ARMbeginner
5

Пункты: 311
Регистрация: 30.05.2012
Цитата
когда это нога простой GPIO то там прерывание возможно только по IRQF_TRIGGER_RISING + IRQF_TRIGGER_FALLING одновременно. когда же эта нога в external irq то там вожможна установка как IRQF_TRIGGER_RISING так и IRQF_TRIGGER_FALLING отдельно


http://rico-studio.com/linux/at91-gpio-interrupt/


Да, эту тонкость я не учёл. Но как понять работа по обеим фронтам? выходит что тогда на один импульс два прерывания?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 31.05.2012 09:08 Редактировалось 31.05.2012 09:10 Сообщение: 7
sasamy
4.70

Пункты: 77058
Регистрация: 14.08.2009
Цитата

Но как понять работа по обеим фронтам? выходит что тогда на один импульс два прерывания?


см. документацию на AT91SAM9260
28.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.
Figure 28-6. Input Change Interrupt Timings
Спуститься к концу Подняться к началу
Персональная информация
ARMbeginner
Добавлено 31.05.2012 12:36 Сообщение: 8
ARMbeginner
5

Пункты: 311
Регистрация: 30.05.2012
Ясно. Т.е. работать с прерываниями GPIO по одному фронту не получится.
Спуститься к концу Подняться к началу
Персональная информация
Lampus
Добавлено 31.05.2012 13:02 Сообщение: 9
Lampus
5

Пункты: 3552
Регистрация: 26.04.2011
После схватывания прерывания никто не запрещает посмотреть состояние соотв. входа, коли единица - значит передний фронт, нулик - задний.
Спуститься к концу Подняться к началу
Персональная информация
klon4uk
Добавлено 10.10.2012 15:04 Редактировалось 10.10.2012 15:43 Сообщение: 10
klon4uk
5

Пункты: 5960
Регистрация: 20.06.2012
заранее извиняюсь за глупые вопросы)
нужно поймать прерывание по ноге PA4
в идеале хотелось бы что если происходит прерывание, то происходит выполнение какой то функции
искал наткнулся на функцию poll
щас как я понимаю мне нужно написать драйвер схожий с http://www.starterkit.ru/html/index.php?name=forum&op=view&id=9406
без драйвера в export при обращении gpio не создаеться...
вопросы пока такие: все ли правильно я понял?
и куда и как надо в ядре подключать драйвер?в drivers/gpio ? а дальше где ?
ps: где бы примерчик какой... а то даже в той теме не совсем понял что менять...
есть какое нить руководство по написанию драйвера ? О,о
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux