Armadilloフォーラム

複数GPIOの割込み監視について

monet3938

2015年12月21日 16時44分

お世話になっております。
片山と申します。

現在Armadillo-840のCON7、CON8を使用して複数のGPIO割込み監視を実現しようと考えております。
(CON7、CON8は拡張基板を使用し、各ピンにA接点SW、B接点スイッチ等を取り付け用途考えております。)

そこで、お聞きしたいのですがArmadillo-800シリーズではWiringPiのようなGPIO用のライブラリ等が用意されていないのでしょうか?

本フォーラム(https://armadillo.atmark-techno.com/forum/armadillo/1441)のソースコードを参考に、
複数ピンに対応するようにゴリゴリとコードを記述する必要があるのでしょうか?

以上、初歩的な質問内容ですがよろしくお願い致します。

コメント

at_yashi

2016年1月12日 11時00分

> 本フォーラム(https://armadillo.atmark-techno.com/forum/armadillo/1441)のソースコードを参考に、
> 複数ピンに対応するようにゴリゴリとコードを記述する必要があるのでしょうか?

情報、ありがとうございます。
そうですね。現状では WiringPi のようなものがありません。
sysfs になって、スクリプトでも操作できるようになったので、
Armadillo-200/400 で採用していた gpioctrl も、やめてしまいました。
blog[1] では、「Armadillo-IoTでgpioctrlを使う」というのも公開しています。

せっかく良い情報をいただいたので、glibをつかって event loop [5]でイベントドリブンに
操作するものを作成してみました。gist[3] においておきます。

at_gpio_add(98,  AT_GPIO_EDGE_RISING,  on_print, "hoge");
at_gpio_add(99,  AT_GPIO_EDGE_FALLING,  on_print, "fuga");

上記のように記載すると gpio98 (a840 lcd の sw2) を押すと "hoge"と、gpio99 (sw3) を押すと
"fuga" と表示されるプログラムです。こんな感じのイメージであってますか?

debian を使うときのために、autotools対応した library も libatgpio [4]として github に
おいておくので、もしよければ使ってください。

足りない機能があれば教えてもらえると嬉しいです。すぐ気がつく問題としては、
a) 割り込み対応していない GPIO は監視できなかったり、b) チャタリングの設定を
しないと、バタバタ動くなどありますが...。

あと、a840 lcd の sw は、デフォルトで GPIO Keyに強制選択になっているので、
patch [6] をあてて外してください。

参考になれば、幸いです。

[1]: https://users.atmark-techno.com/blog
[2]: https://users.atmark-techno.com/blog/615/1379
[3]: https://gist.github.com/yashi/480924038abe312e3e7e
[4]: https://github.com/yashi/libatgpio
[5]: https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html
[6]: https://github.com/yashi/libatgpio/blob/master/patches/a840-disable-unc…