「コンフィギレーション」の設定及び書き込みについて
PIC の場合「コンフィギレーション」を使用目的に合わせ、正しく設定
しませんと、動作をしてくれなかったり(オッシレータの設定で顕著です)
予想外の動作をする事があります
未設定のディフォルトのままで無く、きちんとした設定をするにはどうし
たら良いのかを、幾つか考えてみました
1.正規版のライターの場合
デバイスの選択及びプログラムのインポートをします
CONFIG の窓を出します
項目が表示されますので設定(変更)をして書き込みます
一部のライターにはその設定を強制的に保存させられる機種もあります
2.PIC Kit2(3) 等を使用する場合
MPLAB IDE の画面から Configration Bit の窓を出します
Configration Bits set in code のクリックを外します、警告に OK します
項目が表示されますので設定(変更)をします
全部の項目が表示されないデバイスもあります
Configration Bits set in code にクリックを入れます
以後の詳細は下記「・・相互関係」を参照してください
3.プログラムの中に CONFIG の項目を記入する方法
自動的に書き込んでくれるライターと非対応のライターがある様です
CONFIG の指定の前に INCLUDE でデバイスを事前に指定しておく
必要があります
(A).インクリュードファイルから項目を選んで設定する方法
・・\MPLAB8.1\MPASM Suite\P16F887.INC
PIC 16F887 の使用一例
#INCLUDE 'P16F887.INC'
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF &
・・・
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
必要項目を「 & 」で接いで記入して行きます
一つの CONFIG に対しましては一行で全ての設定を記入しませんと
エラーが発生します
凄く長い行になってしまいます
(B).デバイスのデータ資料から CONFIG の項目を調べ設定する方法
PIC 16F882/883/884/886/887 Data Sheet.pdf
記入の方法は上記と同じですが、どうせなら16進コードを作って
しまい、下記の方が簡単に済みます
(C).予め上記の方法で調べておいた16進(HEX)コードで設定する方法
PIC 16F887 の使用一例
#INCLUDE 'P16F887.INC'
__CONFIG _CONFIG1,H'20E4' 最初のアンダーバーは
__CONFIG _CONFIG2,H'0600' 2個連続です
私的にはこの方法が一番適していると思います、それは
そのデバイスの全ての CONFIG に付いて勉強出来る(必要がある)
記入ミスを起こし難い
行幅が短くて済む
後述の「***.HEX」ファイルを読んだり、変更したり、追加する場合は
必須要件なのですから
4.「***.HEX」ファイルの中に CONFIG の項目を強引に
記入する方法
考えましたのが後になりましたので、最後の方に記述してあります
補足
デバッグを行う場合も CONFIG の設定が必要の様ですが、使用する
機種に寄りまして必要項目が異なる様です
又問題としまして実装品としての書き込みと、デバッグの時では
CONFIG の設定が異なる場合もあります
16進(HEX)コードのプログラムのみを表示又は配布されました場合
正規版のライターが有れば自分で CONFIG の設定をして書き込み
出来ますが PIC Kit2 や自作のライター等の場合は対応が必要です
MPLAB IDE の画面から Configration Bit の窓を出して設定する
方法も有りますが・・・
「PIC Kit2」と「Configration」の相互関係
1.ソースプログラムに CONFIG の設定が無い場合
又は Inport した Hex File に CONFIG の設定がされていない場合
IDE 及び PIC Kit2 をデバッグ状態にします
IDE の Config Bit はディフォルトである値が設定されています
使用目的に合わせ必要があれば変更します
デバッグの時には IDE の Config Bit の値が使用されます
そのままプロジェクトを保存しますと(TEST1) CONFIG の値はプロジェクト
にのみ保存となりますが16進(HEX)FILE には反映されません
別の名前(TEST3)でCONFIG を含めた EXPORT を行ってみます
PIC Kit2 のプログラム画面を起動します
TEST1 を Inport した状態です CONFIG は設定されていません
TEST3 を Inport した状態です CONFIG の値が入っています
Program を行いますと正常に書き込みが出来ました
2.ソースプログラムと IDE の設定値が異なる場合
Buid を行いますと IDE の設定がデバッグに関係無い範囲で
プログラムの設定に強制的に書き換えられてしまいます
デバッグは IDE の値を基に行われ
書き込み時にはプログラムの値が使用されます
PIC をリードした時にプログラムで設定した CONFIG の値が
読み出せました
3. IDE の Config Bit の項目について
デバッグに関連する様な DEBUG と MCLRE の項目は窓に表示されず
設定する事が出来ません。又プログラム上で非対応の設定を行い
ましてもデバッグは可能でした
この辺りデバッグ優先になっている ? のかも知れません
Export したファイルには デバッグ非対応の値か入っていました
タイトな CONFIG を書き込みたい場合は、プログラムで設定するか
ライターで設定した方が無難な様に思います
実験用 デバイス別「コンフィギレーション」設定例
発振機能 HS 水晶等の発振素子外付け
ウオッチドッグタイマー OFF 未使用
コードプロテクト OFF 未使用
リセット機能 一部ON パワーアップのみ使用
クロック切り替え OFF 未使用
デバッグ機能 OFF 未使用、上記を参照して下さい
16F84 __CONFIG H'0012' ;最初のアンダーバーは
16F873/4/6/7 __CONFIG H'3932' ;2個連続です
16F882/3/4/6/7 __CONFIG _CONFIG1,H'20E2'
__CONFIG _CONFIG2.H'0600'
16F882/3/4/6/7 __CONFIG _CONFIG1,H'20E4' ; 内臓発振機能使用時
__CONFIG _CONFIG2.H'0600'
コンフィギレーションコードの確認、変更、追加方法
目的のプログラムをアセンブルします
生成された「***.HEX」ファイルを、強引に「ノートパット等」で開きます
下から二行目位に ;02400E00323945 等のデータが有ります
3932 がCONFIG の値(H’3932’)です
デバイスに寄りましてはこの行が複数行になります
この行が全く無い場合は未設定です
H’3FFF’ の時 そこの CONFIG は未設定、又はその値の設定となります
変更する場合は最後の2文字(サムチェック)を含めて変更します
追加する場合は一行を丸々挿入します
フアイルの「上書き保存」を行い定着します
サムチェック(コンフィギコード)の作り方
適当な最も短いダーミーのプログラムを作ります
設定デバイスの指定は実際に使用する物にします
設定したい「コンフィギコード」を記入します
アセンブリして「***.HEX」ファイルから読み出し、コピーします
私の反省も含めた皆様方への提案
「ソースファイル」に「コンフィギコード」を必ず記入する様にしましょう
くどい位のコメントも付けましょう
「***.HEX」ファイルだけを公開又は渡す場合は、コンフィギに対する
コメントも付けましょう
「***.HEX」ファイルを受け取った時は「コンフィギコード」を必ず確認しましょう
自分の使用するデバイスの「コンフィギコード」を熟知して、使いこなせる様にしましょう
[メニューページに戻ります]