2022年1月18日(火) 22:42
ソフトウェアI2CのHとLを規則的に変化させる試験用プログラムを作り、dsPIC に書き込む。やはり、デバイスIDがおかしいというエラーが出る。
取得される「異常な」デバイスIDの値自体は、同じものである。更に、書き込みとベリファイは正常終了している。
となると俄然、この謎のデバイスIDが気になる。

寄り道かもしれないが、デバイスIDの正体を探る。
マイクロチップの公式資料によれば、デバイスIDは Family Silicon Errata and Data Sheet Clarification なるものに記載されているらしい。ところが、マイクロチップのサイトでは、見つからない。公式サイトは、やたら不親切だ。
公式サイト以外であれこれ探すと、発見した。dsPIC33EV256GM102 のデバイスID は、5d39 である。間違ってないじゃないか!
・・・と思ったがMCC画面で視線を右に移動すると、ピンアサインがグラフィック表示されている。そして、dsPIC の中央には dsPIC33EV32GM102 の文字。しまった!
受信メイン dsPIC は 256 ではなく 32 を使っていたんだった!
大容量の 256 は、大容量が必要な送信機に導入したが、受信側は 32 のままだった。32
のつもりで 256 に書き込んだせいで、エラーが表示されていたのだ。デバイスID を調べたおかげで、気が付いた。
正しい dsPIC に差し替えて書き込むと、エラーは出ない。そして、問題なく送信機から操作できた。

ただし、操作はできるものの走行用モーターの動きがギクシャクする。SPI受信は、正常状態でも頻繁に途切れてしまうようだ。
ところが、0.5秒まで許容してもモーターがしばしば停止する。そこで、タイマーを外して監視自体を止める。それでも、ギクシャクする。
更には、プログラムを変更しておらず最初から監視など行っていない旋回用モーターまで、ギクシャクする。つまり、犯人は走行制御 dsPIC の方だ。
ついでに言えば送信機も振動機能を有効にしてみたのだが、右スティックを上下に動かしても振動しない。左右に動かすと、振動する。明らかに、プログラムミスだ。
どうやらハードウェアはマトモになったと思われるが、ソフトがあれこれおかしい。
written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4