[Armadillo:01639] Re: GPIOの割り込みについて

Shu Murayama email@hidden
2007年 6月 7日 (木) 17:48:57 JST


村山です。

お返事が送れて申し訳ございません。

先日、ドライバを入れ替えました。
ret = ioctl(fd, INTERRUPT_WAIT, &redbutton_wait);
などと記述すれば、waitがかかり、割り込み発生後、wakeupすることができました。
ご指導ありがとうございました。

それで、今回の割り込みを利用して、
以前に作ったナイトライダープログラムを編集いたしました。

現状は以下のとおりなっております。

・GPIOのA0~A3にプッシュボタンを接続している。
・B0~B3にLEDを接続している。
・LEDをナイトライダーのように点滅させる
・2つのボタンにより、点灯開始(ボタンA0)・停止(ボタンA1)

上記のことを実現するために、
親プロセスのプログラムで、まず、開始ボタン(A0)が押されるまでwaitし、
割り込みによりwaitが解除されたら、LEDを順次点灯し続ける子プロセスを起動しています。
その後、親プロセスは停止ボタン(A1)が押されるまでioctlでwaitしています。
割り込みによるwait解除後、子プロセスに対してシグナルを送信して、
子プロセスを停止してLEDの点滅をとめています。

一応、機能としては実現できたのですが、このようにプログラムを記述するのが一般的なのでしょうか?
複数のプロセスに分けてしまうと、同期等いろいろな面で苦労するの可能性があるかとおもいます。
ですので、可能であれば、「割り込みが発生したら指定した関数を実行する」などといったことは可能でしょうか?

村山 周



armadillo メーリングリストの案内