
外部から低消費電力状態を解除したい!
sleep関数は時間が来ると低消費電力状態から解除されますが、それ以外に外部からこの低消費電力状態を解除したい時も多いかと思います。
この様な場合、wait_event関数を使う様です。
以下にサンプルを上げておきます。
Arduino同様外部割り込み端子として2番と3番が使用できますが、今回は2番に押しボタンスイッチを接続しています。
#define BLUE_LED 26 #define RED_LED 20 #define YELLO_LED 25 bool eventFlag = false; void pin2Int( void ) { eventFlag = true; } void setup(void) { pinMode( BLUE_LED, OUTPUT ); pinMode( 2, INPUT_PULLUP ); attachInterrupt( 0, pin2Int, FALLING ); } void loop(void) { digitalWrite(BLUE_LED, LOW); delay( 500 ); digitalWrite(BLUE_LED, HIGH); eventFlag = false; wait_event( &eventFlag ); }
端子割り込みの中でbool型のフラグをtrueにしているだけの簡単なプログラムですね。
※低消費電力状態に入るとPower LEDは消灯されるが、青LEDは直前の端子の状態を維持している模様。
※では時間と外部割り込みの併用はできるのか?
先ほどのコードの wait_event( &eventFlag ); を sleep( 10 * 1000UL ); に変更してみましたが、外部割り込みでは起きない様です。うーん、、、一応sleepのマニュアルでは外部割り込みは有効と書いてあるので、低消費電力状態の解除方法が提供されていれば良いのですけれどね。