[mbedbot] BLEのwaitForEventとPwmOut

February 25, 2017

mbedbotをデバッグしていて気づいたのですが、main関数内のイベントループ内のwaitForEvent(BLE_APIのAPI)がなぜか頻繁に呼ばれていました。何らかの割り込みがない限り、スリープすると思っていたので原因が何か気になり調べてみたところ、PwmOutが悪さをしていたみたいです。。

PwmOutのインスタンスはグローバル変数に代入しているので、未使用(デバイスがアイドル時)はperiod(周期)を0にしていたのですが、これがいけなかったようです。何となく0にすればPWMが止まるかな?と勝手に想像していたのですが、よく考えると周波数的には無限大ですので逆に最大の周波数で動いていた(割り込みがかかっていた)のかもしれません。

ヘッダを見てみてもPwmOutを止めるようなAPIはなさそうだったので、periodを大きめの値(4s)にし、パルス幅は0固定として、頻繁に割り込みが起こらないように修正しました。これでかなり消費電力が減るかも。