BBSで
config表記についてご質問を頂いた時に、configワードが2つあるPICマイコンは2回に分けて__configを定義する事で設定ができると伝えた。
XC8のマニュアルにもそのことが書いてあるのだが、色々調べると#pragmaによって設定出来るようだ。Hitech PICCの時代は、
C:\Program Files\HI-TECH Software\PICC\9.83\include
から該当のチップのヘッダーファイルをテキストエディタで開いて、configのシンボルやレジスターのシンボルを調べたのだが、Microchip XC8になると、
C:\Program Files\Microchip\xc8\v1.12\include
にヘッダーファイルが存在するが、その中身にconfigで設定するシンボルが記載されていない。
暫くは、昔のHitech PICCのヘッダを参照しては__configで書いていたのだが、
なんと、C:\Program Files\Microchip\xc8\v1.12\docs\chips の部分にデバイス別のhtmlファイルが存在している事をtwitterで知った。
というわけで、早速書きなおしてみる。バックスラッシュ(\ ¥)は次の行を繋ぐためのものある。
一行でまとめられるのは便利である。それでは早速ビルド。
あれ?8000000=INTOSCは定義なしとエラーがでる。何故だ?
FOSC=INTOSCの部分を削除してビルド。今度は成功。色々やっていく内に、この8000000というのはdelayマクロで使われる、_XTAL_FREQの8メガ設定じゃないのか?試しに4000000とかにしてみると、エラーが4000000=INTOSCに変わった。あ、もしかして#pragmaの位置が悪いのか!
ということで、#pragmaの位置を色々includeする手前の先頭になるようにmain.hの最初に記述。
そしてビルドしたら問題なくビルドが完了した。config設定内容を確認したり、パラメータを変えて確認もしてみたりして問題が無いことを確認。
従来の位置のconfig部分に#pragma configを書くと、うまく動かない事があるということが分かった。MPLABXでもこの書き方になっているので今後は#pragma configを使うようにしてみる。
MPLABX使わないのか? と言われそうだが (´・ω・`) まだ MPLAB IDE使いやすいんだよねw
追記:
[Configuration bits] ウィンドウ内で右クリックし、「Generate Source Code to
Output」を選択する事により、このウィンドウ内の設定を [Output] ウィンドウにエクスポートする事もできます。[Output]
ウィンドウにエクスポートしたコードは、アプリケーション コードにコピーできます。
MPLABXでは、この様に操作すると簡単にConfiguration bitsを得ることが出来るようだ。
追記
MPLABXで開発すると、色々強力な機能が使える。まずは動画をご覧あれ!
MPLABXならconfigが自動生成できる
DS52027A_JPの84ページに有ります。