Darkside(https対応しました) |
2022年2月8日(火) 23:41
暴発の検証は、謎が謎を呼ぶ。
バグの可能性は低いがゼロではないプログラムコードを潰し、不確実性を下げて行く。だが、暴発は収まらない。
暴発したりしなかったりするのではなく、確実に暴発する。再現性バッチリにも関わらず、原因が分からない。受信側から犯人を追えば送信側が怪しいという結論になり、送信側から追い込めば受信側が怪しいという結論になる。
それでも追求を進め、少し追い込めた。
送信側で、トリガーを含んだ1バイトのキー入力データー(デジタル)がある。
bit0 TRL-U キーが押されたら1(俯仰を水平に戻す)
bit1 TRL-D キーが押されたら1(俯仰を水平に戻す)
bit2 TRL-L が押されたら1(レーザー切り替え)
bit3 TRL-R が押されたら1(レーザー切り替え)
bit4 カメラ切り替えスイッチが押されたら1
bit5 Rが押されたら1(セミオート射撃)
bit6 RLが押されたら1(フルオート射撃)
bit7 Lが押されたら1(3点バースト射撃)
これらが実際に仕様通りに取得できているのか、送信直後に値を表示させてみた。
すると、仕様通りに取得できていることが確認できた。そして、どのキーも押されていない(0)場合には、送信機の電源を入れても暴発しないことが分かった。
送信機の電源を入れても暴発しないその状態から、カメラ切り替えスイッチを入れると暴発した。
あれこれ操作して、受信機側が仕様通りにキーアサインしていない可能性が高まった。
照準用レーザーが点灯しないという問題が、ずっと発生していた。原因究明の優先度が低いので後回しにしていたが、bit1 でレーザーがONになったのだ。bit0 でレーザーをOFFにできる。つまり、2ビットずれている。
そして、カメラ切り替えスイッチがトリガー(バースト)として処理されている。こっちは、4ビットずれている。
カメラ切り替えスイッチの状態次第で、送信機の電源を入れたときに暴発するかどうかが決まっていた。カメラ切り替えスイッチはオルタネイトで、初期位置はONになっていた。だから、バースト暴発していた。
ようやく犯人を追い詰めた。
送信ロジックも受信ロジックも正しかったせいで、犯人が見つからなかった。真犯人は、受信したキーのアサインを間違っていたことだった。送信機を作り変えた際にキーアサインも修正が入ったのだが、受信側の修正をミスしていたのだ。
さっそく、受信側PICを修正する。まずは、射撃管制PICから。
ところが、プログラムを書き込むと今度は射撃できなくなった。暴発しなくなったが、正当に射撃もできない。そればかりか、いっさいのキーが効かない。レーザー照射の切り替えも無反応なら、基板上ボタンによる電動マガジンの駆動も効かない。
プログラムの書き込みは正常に完了するが、まるで何も書き込まれていないかのようだ。
確かに自分は凡ミスやりまくってるが、それとは別に本筋じゃない所のトラブルも多過ぎる。
射撃不能は射撃管制PICの問題だが、それと全く無関係なはずの走行用モーターまで動かなくなった。
まさかと思ってセンサーケーブルの接続部分をつまむと、モーターが動くようになった。新品センサーケーブルなのに!
暴発の衝撃で、接触不良が発生したのか?
更には射撃管制PICに関して、電源が来ていないことが判明。
当然ながら、プログラム書き換え前は動いていて電源は来ていた。どこで、壊れたんだ?
written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4