2C通信で複数のスレーブとなるPICマイコンを制御しようとしている。PICマイコンの処理が追いつかなければ、マスター側からの電文送信を抑止しなければならない。が、たかがNゲージレイアウトの制御。ソフトウェアばかりに手間暇かけていろんな機能を盛り込んでもきりがない。処理が追っつかなきゃPICマイコンはリセットじゃ~~
MPLAB X IDEで、はまる・・(3)
MPLAB 8からMPLAB X IDEに移行し、ついでに今後はC言語じゃ~ということで・・ドツボにはまっている状態。
今回は、いよいよ解決編。
最終的にわかってきたのは、「c言語でビルドした.hexファイルをPICKit3で書き込んだ際、ベリファイで失敗する」ということ。
PICKit3が言うには、命令アドレスには5番地に飛ぶ命令が欲しいらしい。
ならば、リンカのオプションを調べてメインルーチンを5番地に配置すればいいのか?
などと、考え始めていたが、ふと思った。
ベリファイで失敗するなら、ベリファイしなけりゃいいじゃん
PICKit3 Programmerでベリファイのオプションを外して書き込んだら、書き込みは正常に終わった。
その後、PICから読みだして1画面に表示された部分を、.hexを読み込んだ時点のハードコピーと見比べたら「だいたい同じような感じ」。ということで目視によるベリファイはOK!?
まだ動作は確認していないけど、これでMPLAB X IDEとc言語に移行してもいいのかな。
大量に同じPICを作るんじゃなく、1~2個作ってその動作をみて、100%動作をチェックするんだから、ベリファイしなくても失敗してりゃ動かないのですぐわかるだろう。
MPLAB X IDEのProject Propertiesの画面で、PICKit3の設定に関する項目を見てベリファイの設定がどうなるのかみてみた。
ベリファイの省略の設定はできないみたい。
PICKit3はベリファイに失敗したら、何かほかのものを書き込んでるみたいだから、やはりベリファイは省略して正常終了させる必要がある。
(イレースしたあとに確認しても何か入っている。なに書いてんだろう。)
やはり、今後も書き込みはPICKit3 ProgrammerやIPEのお世話になる必要があるみたい。
さて、
書き込んだものはちゃんと動くんでしょうか。
・・おそらく、最終的にはMPLAB X IDEがバージョンアップすることで解決できる・・ハズ。
つまり、ドツボの原因は・・MPLAB X IDEのベリファイのバグじゃねぇのかい!?