相変わらず、USBのデバイス認識はうまくいっていませんが、アドレス設定までは何とか出来ているようですが、コンフィグレーション設定でコケている様。なかなか、手ごわいのでで、低消費電力化と合わせて、全体のシステム動作の設計を進めます。
消費電流の低減をある程度想定したうえで、まず、全体の作動シーケンスを考えます。大きくは、システムモード(CPUの作動周波数)と、LCDバックライト輝度の制御になります。練習時を通常時として、バイオリンの音を検知しなくなったら、スタンバイモードにて消費電流を低減し、さらに、そこから時間がたったら極低消費電流のSLEEPモードに遷移するという考えです。これをまとめると次の様になります。 SLEEPモードからの復帰は、割り込みや、WDTをトリガとしますが、ここでは、WDTによる復帰を考え、2秒周期で、通常モードへの復帰を判断することにしました。間隔をあまり長くすると反応が遅くなるし、逆に、短くすると消費電流の低減効果が減ってしまうため、2秒にしています。 一方、LCDのバックライト制御は、システムモードと基本的には独立していて、必要最小限の点灯とするため、練習中でもLED消灯とできるように考えました。 プログラムを実装するにあたり、シーケンスを状態遷移図の形に書き表しました。システムモードは大きく分けて4つ(通常、スタンバイ、SLEEP、USB)ありますが、状態としては、更に2つ増やした6つの状態で実装することにしました。 バックライトの方も同じく状態遷移図に表すと、こうなります。 状態遷移図では、他の作動モード(時計とか)に遷移したときの条件も一部追加していますが、ここは、実装を行いながら少し手直しをしていこうと考えています。 肝心の消費電流低減ですが、方法としては、 ・電源電圧を下げる ・CPUクロックを下げる ・内臓モジュールを停止 ・DIOからの電流を下げる ・バックライトの電流を下げる と言った方法があります(詳しくは、こちら)。最初のものは電源3.3V作動で、これ以上は難しいので取れません。バックライトは既に実験済みなので、CPUクロックを下げる手法で確認をしていない、CPUクロック1MHz動作と停止(内臓モジュール停止、DIO電流低減)を確認してみました。 結果は次の様になり、1MHzで2.1mA、クロック停止(SLEEP)で、0.5mAとなりました。クロック停止で0.5mAとあるのは、主にオペアンプと時計ICの電流になります。 ちなみに、USB作動用に24MHzとすると、9.5mAにもなっていました。 システム作動シーケンスと実測消費電流が分かりましたので、稼働時間の予測をしてみます。一応、平日は1時間、土日は3時間の練習をするとした場合(年間573時間ですね。1万時間には17.5年も掛かってします)、 稼働時間は、32.5日と出ました。 消費電流低減の目途が立ちました(計算上は)。あとは、ソフトの実装と確認です。 Violin Timer機能本体の仕上げもまだなので、それと合わせて進めていきます。 まだ、完成までいろいろありますが、よろしかった、お付き合い願います。システム動作の設計
状態遷移図
消費電力測定
稼働時間予測
最初、電池だけで1ヵ月持たせたいと考えていましたが、計算上は、何とか持ちそうです。今後の計画