Armadilloフォーラム

GPIOによる割り込み

a-mizutani

2015年6月4日 11時08分

Armadillo-840のCON8のGPIOで割り込みを使用する事は可能ですか?

コメント

at_takashi.sasayama

2015年6月4日 13時32分

笹山です。

> Armadillo-840のCON8のGPIOで割り込みを使用する事は可能ですか?

可能です。

下記は Armadillo-400シリーズ向けのドキュメントですが、Armadillo-840 でも同様の手順で使用できます。

第9章 Linux カーネルデバイスドライバー仕様 9.9. GPIO
http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_soft…

下記表の PORTxx と /sys/class/gpioxx が対応しています。

表18.12 CON8 信号配列
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

■参考情報

Armadillo-800シリーズ 60ピン/100ピンコネクタ ピッチ変換基板
http://armadillo.atmark-techno.com/option-products/SA-A800-B2BEXT-00

a-mizutani

2015年6月5日 9時21分

なるほど
どうもありがとうございます

> 笹山です。
>
> > Armadillo-840のCON8のGPIOで割り込みを使用する事は可能ですか?
>
> 可能です。
>
> 下記は Armadillo-400シリーズ向けのドキュメントですが、Armadillo-840 でも同様の手順で使用できます。
>
> 第9章 Linux カーネルデバイスドライバー仕様 9.9. GPIO
> http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_soft…
>
>
> 下記表の PORTxx と /sys/class/gpioxx が対応しています。
>
> 表18.12 CON8 信号配列
> http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…
>
>
> ■参考情報
>
> Armadillo-800シリーズ 60ピン/100ピンコネクタ ピッチ変換基板
> http://armadillo.atmark-techno.com/option-products/SA-A800-B2BEXT-00

at_takashi.sasayama

2015年6月5日 20時59分

笹山です。

申し訳ございません。
先に記載しました Armadillo-400 シリーズの GPIO sysfs 割り込みサンプルプログラムは、
Armadillo-800 シリーズでは正常に動作しないことがわかりました。

Armadillo-800シリーズでは、以下の POLLIN に設定している個所を、
POLLPRI もしくは POLLERR に変更すると正常に動作します。

 24                 pfd.fd = fd;
 25                 pfd.events = POLLPRI; /* POLLIN から POLLPRI に変更 */
 26                 pfd.revents = 0;

また、割り込みを検出できるピンは IRQ が割り当てられているピンに限られます。
Armadillo-840 CON8 ですと、以下のピンが該当します。

ピン番号   GPIO
15         PORT38(IRQ25)
52         PORT180(IRQ24)

■参考情報

linux-3.4-at/Documentation/gpio.txt

ファイル ファイルの説明
gpio_sysfs_a840.c Armadillo-840 GPIO sysfs 割り込みサンプルプログラム

at_takashi.sasayama

2015年6月5日 21時37分

笹山です。

度々、申し訳ございません。
linux-3.4-at/Documentation/gpio.txt によりますと、
POLLPRI と同時に POLLERR も設定する必要がありました。

その為、以下の様に修正するのが正しいです。

24                 pfd.fd = fd;
25                 pfd.events = POLLPRI | POLLERR; /* POLLIN から POLLPRI | POLLERR に変更 */
26                 pfd.revents = 0;
ファイル ファイルの説明
gpio_sysfs_a840_rev2.c Armadillo-840 GPIO sysfs 割り込みサンプルプログラム 修正版