otokuni_aoi
2024年4月12日 11時14分
Armadillo610上で、GPIO割り込みさせようとしていますが、
うまく動いておらず、ご教授いただけないでしょうか。
・CON20-40/CON4-17ピン
・CON20-13/CON4-18ピン
の2つのGPIO信号の立ち下がりエッジで、割込みさせたいと思っています。
フォーラムでの議論を参考にして、
Aramdillo400シリーズソフトウェアマニュアルv1.4.1の9.9節の
サンプルコードを参考にしようとしていますが、不明点がございます。
https://armadillo.atmark-techno.com/forum/armadillo/1441
①サンプルではArmadillo400の"CON9_1"ピンを対象にしていますが、
Aramdillo610の場合のピン指定は、例えば、
"/sys/class/gpio/CON4_17/"などと記載したらよいのでしょうか。
もしくは"/sys/class/gpio/CON20_40/"などと記載したらよいのでしょうか。
②gpioset/gpiogetコマンドで、CON20_40(GPIO1_IO01)の値を変更できることは確認しましたが、
CON20_13(GPIO3_IO05)はoutput設定になっているため、値が変更できません。
gpioinfoで確認すると、output設定になっており、これが原因かと思っています。
これをinput設定に変更するためには、サンプルコードの
Write(fd, "in", 2);
のところで、出力方向を変更できると思っているのですが、
デバイスツリーファイルの方でも、なにか設定が必要でしょうか。
なお、当該GPIOには、別機能は割り振っておりません。
③Armadillo610でのGPIO割り込みのサンプルコードがございましたら、
いただけないでしょうか。
以上、よろしくお願いいたします。
at_akihito.irie
2024年4月15日 10時56分
入江です。
> ①サンプルではArmadillo400の"CON9_1"ピンを対象にしていますが、
> Aramdillo610の場合のピン指定は、例えば、
> "/sys/class/gpio/CON4_17/"などと記載したらよいのでしょうか。
> もしくは"/sys/class/gpio/CON20_40/"などと記載したらよいのでしょうか。
sysfs経由でGPIOの設定を変更することは現在非推奨となっております。
Armadillo-400シリーズの時代の方法は参考にせずに、基本的にはlibgpiodをご使用ください。
> ②gpioset/gpiogetコマンドで、CON20_40(GPIO1_IO01)の値を変更できることは確認しましたが、
> CON20_13(GPIO3_IO05)はoutput設定になっているため、値が変更できません。
> gpioinfoで確認すると、output設定になっており、これが原因かと思っています。
> これをinput設定に変更するためには、サンプルコードの
> Write(fd, "in", 2);
> のところで、出力方向を変更できると思っているのですが、
> デバイスツリーファイルの方でも、なにか設定が必要でしょうか。
> なお、当該GPIOには、別機能は割り振っておりません。
Armadilloを再起動しても初めからoutputになっていますか?
また、device treeは何を使用されていますか?
> ③Armadillo610でのGPIO割り込みのサンプルコードがございましたら、
> いただけないでしょうか。
以下はlibgpiodを使用したシェルスクリプトの例です。
厳密にはポーリングで割り込みイベントを待っている点にご留意ください。
echo "OK"
としている箇所を書き換えることで、任意の処理を行えます。libgpiodはC言語やPythonなどでも使用可能ですので、場合によってはそれらの使用もご検討ください。