以前作成したPIC-CDCのプログラムを修正するたびにUSBの認識が正常に行われたり異常になったりと不安定な要素を持っていたのだけれどもこれの原因がようやく判明。おそらくこれで解決したはずだ。
はじめは変数の保存されるアドレスが原因で、バンク切り換えの問題なのかと思っていたがどうやら違うらしく、不安定ながらリセット押しながらUSBつなげて認識させるとかムリムリ動作させていた。
で、秋月電子通商さんとこのライタープログラムを見ていたら、拡張命令が有効になっていることに気がついた。
確かオフにしてたはずなんだがなと思いつつコンフィグレーションビットの行を見ると
#pragma DATA _CONFIG4L, _DEBUG_OFF_4L & _XINST_ON_4L & _LVP_OFF_4L & _STVREN_ON_4L
となっていた。オンになってるじゃないですか。というわけで
#pragma DATA _CONFIG4L, _DEBUG_OFF_4L & _XINST_OFF_4L & _LVP_OFF_4L & _STVREN_ON_4L
としてオフにして従来モードへ。
再度ビルドを行い書き込んだところこれまでの不安定が嘘のように収まった。
今のところ再現しなくなったので拡張命令とインデックスアドレスの機能が悪さしていたのだろうと思われます。
こういうこともあるのね。