printfステートメントを至るところに入れて動きを追う。動き出すが、ボタンの長押しで、システムが立ち上がった直後、リセットがかかって前に戻ってしまう状況から抜け出せない。最初は、無印Mega328の割込みルーチンのエントリー先が違うのではとか、コンパイラーのライブラリが変わってしまった(AVRSPの再ビルドのときライブラリーチェーンが一時おかしくなった)ためではとか、ソフトを疑っていたが、原因はやはり、ハードだった。ソフトパワースイッチは一筋縄では行かない(10/3/2011)ペリフェラルの電源をFETで入れるとき、突入電流でVccがディップし、CPUがリセットしてしまうのが原因だった。始め、オシロで調べてもVccのディップは見つからなかったし、インダクターや大容量コンデンサーなどを入れても全く改善されなかったため、ハードではなくソフトだとばかり思いこんでいた。ソフトで考えられることを全てやっても解決しないので、もう一度ハードに戻り、電源そのものを独立させたら、すんなり動いた。これに気づくのに、丸々1日かかった。ブレッドーボードを使っているといっても、DC-DCコンバーターは既に基板にハンダ付けしてしまってある。ハードをいじるのは面倒なのでつい不精していた。ガイガーカウンター2号機のソフトパワースイッチは、ブレッドボード上でペリフェラル電源をCPUと別にしてはいるが、とりあえず動くようになった。スイッチの長押しで電源を入り切り出来、これを繰り返しても止まらない。いやあ、ソフトパワースイッチは予想通り面倒だ。電源の共有が解決されていない。最悪の時は、電池を2つ用意しなければならない。それに、GM管の表示が増えてくる件については未解決のままである。この問題は、外部クェンチ回路の雛形を入手したので、ソフトパワースイッチの完成後、テストしてみようと思う。連続パルスをある程度除去すれば使えそうな気もする。バグがとれていく過程が楽しい(10/4/2011)ソフトパワースイッチが動き始めたので、少しづつ先にステップを進める。最初の懸案は、パワーダウンモードが本当にそれにふさわしい消費電流になっているかの検証である。これをやっておかないと何のために苦労したのかわからなくなる。以前、Xbeeでも本当のパワーセーブに苦労した。あれえ、電源を切っても電流が1.3mAも流れている。少ないとはいえ常時この電流が流れていたら電池はあっというまになくなってしまう。パワーセーブどころではない。プルアップ抵抗からはピンがHighなら電流は流れないはずだが。おや、プログラムが動く一番最初は10μA以下だ。ところが一旦動かした後は、同じパワーダウンモードになっても、1.3mA以上になる。どこかのI/Oポートの設定で電流が流れてしまうようである。ここにばかり時間をとっておられないので、プログラム開始直後の初期化を、電源ONループの中に入れてもういちど初期化をすることにした。これでこの問題は解決した。副作用は、UARTが少しおかしくなるが大勢に影響はない。待機中の消費電流は9.7μAになった。WDT許可)に較べると、やや多いが、まあこんなものだろう。フューズビットで、WDT(ウォッチドッグタイマー)を禁止にすれば、もう一桁下がるはずである。次は、電源用のタクトスイッチのI/Oピンが、作動状態になると機能しなくなるバグである。同じことをやっているのにI/Oピンが立たない。これも面倒なので、対症療法だが、スイッチフラグの変数を増やして、I/Oピンを見ないですむようにする。これはのちほど、原因が判明した。プログラムは考えたようには動かない。書いたように動くという格言を地で良く失敗である。メインループの最後に、電源OFFのためのルーチンがあり、ここでしっかり、パワーダウンボタンの押下が終わるのを待っていた。作動中は必ず電源OFFのリクエストをチェックするために、ここを経由する。従って、このボタンをいくら押しても、実際のチェックでは、このボタンが離れてから到着する。考えてみたら当たり前のことだが、頭に血が昇っているときは、目の前のルーチンに気を取られて「おかしい、おかしい」ということになる。問題点が解決されていく。ささやかなトラブルだが、どんな小さな問題でも解決されていくというのは気分が良いものである。今までの暗い気持ちが晴れる。レギュレーターで解決したと思ったのも束の間(10/6/2011)バグがなくなったとはいえ、まだ電源は独立電源である。このままでは2つ電池が要ることになる。電源を共有するための方策をブレッドボード上で、あれこれ考える。インダクターと大容量コンデンサーの電源のデカップリングは前に試して効果がなかった。次は定電圧レギュレーターである。以前LPCMプレーヤーのときに大量に買い込んだロードロップのXC6202の出番である。CPUのVccは現在、生のリチウムバッテリーに直結してある。レギュレーターを通せばペリフェラル電源投入時のディップをなくすことが出来るだろう。うーむ、これでも駄目だ。するとリセットするのは別の原因なのか。ペリフェラル側にレギュレーターを入れるのはどうだろう。4Vのリチウム電圧を一旦3.3Vに落とし、それをDC-DCコンバーターの入力にするのは、とても無駄な気もするが、この際だめもとである。