Darkside(https対応しました)

2022年02月08日の記事

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)]

この記事へのトラックバックPingURL
Darkside(https対応しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4