前回、Flashの中の「コードとは別な空間」にあるDevice IDは読めたけれども、CONFIGURATIONビットが読めないと混乱しました。しかし、よくよく調べてみたら実は読めていたことが判明。MCCの提示した値が読めるものと思っていたところ、実機では異なる値が読めることが判明。ようやく腑に落ちました。
※『PIC三昧』PIC関係の記事総目次はこちら
※作業はMicroChip社の統合開発環境 MPLAB X IDEと、その上で走るコンフィギュレーションツールMCC Classic を使用して行っています。ターゲット・マイコンはPIC16F18855です。
結論から言えば
MCCクラシックのConfigurationビットの設定画面で提示されている値は未実装ビットUを0として読んだときの値です。一方実機では、未実装ビットUは1として読めます。よって例えばMCCクラシックの画面上でCONFIG1が
0x2964
と表示されていた場合、CONFIG1のUbitは1だとして上記にORすると
0x3FEC
が実際に実機上で読み取れる値です。
MCCクラシック上で読める値
前回期待していたのは、以下のMCCクラシックの設定画面に見える黄色のマーカ部分の値でした。
しかし、CONFIG1の未実装ビットを1として補うと 0x2964ではなく0x3FECです。また、CONFIG2の場合は、0x3EE3にあらずして0x3FFFです。
実機上の値
前回のテストプログラムで読めた値が以下です。CONFIG1、CONFIG2のところにバッテンしてしまいましたが、上記の解釈すると「正しい」です。
末尾のCONFIG5についても0x3FFFでOKっす。MCCだと0x3ですが。
MCCクラシックのUビットの解釈に騙されたっ。ま、分かって良かったケド。