21:07著しく不穏当PICが元あった位置の上空に、小基板を浮かせた状態で設置。パターン面の絶縁とか固定は、動作確認が済んだ後で行う。慌てて処理して、配線ミスが後から発覚すれば、目も当てられない。電源を入れると、何も起こらない。液晶画面に、何も表示されない。LCDは正常に表示できることが確認済みなので、PIC側の問題である。起動直後にブザーを鳴らすようなプログラムを書き込む。電源を入れると、ちゃんとブザーが鳴った。次に、LCD電源コネクターに5Vが来ているのを確認。なると、残るはPICのI2C配線2本だけだ。GPIOピンと、コネクターの導通は問題なし。あらゆる部分が問題無しだが、プルアップ抵抗で遂に異常発覚。配線2本のうち片側はVCCとの間に1.8KΩが計測されたが、もう1本はVCCと短絡している。結局、原因は使用した基板だった。これ間違えて、水平方向に穴同士が短絡しているIC実装向き基板なのだ。特殊パターン基板であり、汎用基板ではない。間違って購入し、扱いに苦慮している。今回はPIC単体実装に近いので、在庫処分のチャンス!と持ち出した。水平方向にパターン短絡していることを失念し、I2Cプルアップ抵抗を取り付けてしまった。実際は、パターンが短絡しているので1.8KΩが無意味。実装の物理的都合で、片側だけが罠にハマった。カッターナイフでパターンを切断したら、LCDが普通に表示されるようになった。幾つかバグを取り一見正常に動作するようになったので、改めて筐体を閉じてレーザー銃にセット。今回は、ちゃんと閉じることができた。本来より遥かに高い電圧で、ローバッテリーになるようにしてある。レーザーを発射し、ローバッテリー時の挙動を確認。警告状態には想定通りに入ったものの、そこから徐々に警告レベルが上がるのではなく突然レーザー停止になった。レーザーは停止するのに空冷ファンは停止せず、LCD表示もセル電圧表示のまま。ローバッテリーが警告ではなく停止レベルになると、LCD表示が変化するし空冷ファンだって停止する。バッテリーの消耗を抑えるため、当然だ。改修前と同様、ローバッテリーが早過ぎる。ローバッテリー時に行っているはずの処理と動作が異なる。なると、デバッグは極めて面倒臭い。プログラムを書き変えるたびに、レーザー銃から外してコントロールBOXを分解し、PICを取り出す。PICをセットしてコントロールBOXCを組み立て、レーザー銃にセットする。猛烈に、デバッグ効率が悪い。苦労してデバッグした結論が、極めて不穏当。これ、明らかに、XC8のバグにハマってる。8ビットマイコン用のCコンパイラーというシロモノは、どうも完成度が怪しい。具体的には、固定文字列が恐ろしく信用できない。メモリー節約でもしているせいなのか、固定文字列の実装が疑惑だらけなのだ。正常に固定文字列をメモリーに実装できていないと疑われる挙動だらけで、しばしばメモリーをブッ壊している疑惑がある。