- コンフィグレーションとは環境設定という意味です。
- PIC の動作を決定する設定です。
- この設定を忘れると、たとえプログラムを正しく記述していても PIC は期待通りに動作しません。
- なお、コンフィグレーション・ワードのことをフューズ(Fuse)と言うこともあります。
- コンフィグレーションは自動車で言えばギアの設定に相当。エンジンを始動してもギアを正しく設定しなければ車は動かない。
- ラジオに例えるなら、AM/FMのバンド設定に相当。ラジオの電源を入れても正しくバンド設定しなければ目的の放送局を受信できない。
- 同じようにPICはプログラムを正しく書き込んでもコンフィグレーションを正しく設定しなければ動作しない。
- コンフィグレーション・ワードで設定する PIC の動作とは主に次の内容です。
- PIC の種類に応じて多少異なりますので、データシートを確認してください。
- ここでは一般的なフラッシュタイプのPICを前提にします。
コードプロテクトを有効にする。 書き込んだプログラムを盗み見られないようにします。PIC のプログラムを消去しない限り解除されません。
見られたくないときにはプロテクトを有効にします。低電圧書き込みを有効にする。 通常書き込み電圧 Vpp = 12.5V を必要としない書き込み方法です。この方式では電源電圧 Vdd = 5V のみで書き込みできます。
デメリットとしては RB4 を PGM として使用するため、プログラムから RB4 を使用できません。ピン数の少ないパッケージでは不利になります。
なお、低電圧書き込み方式に対応した PIC ライタが必要です。メリット、デメリットを比較して選択します。ブラウンアウト・リセットを有効にする。 ブラウンアウトとは、電池駆動などで、電源電圧がある程度まで下がったときにリセットする機能です。
電圧が下がることで正しく動作しなくなる前に、知らせる目的(警告)で利用します。
正しく動作しなくなる前とはいえ、リセットがかかるので、プログラムは一時的に中断します。
ブランウンアウト・リセットがかかったことを把握して対処するようにプログラムを記述する必要があります。パワーアップ・タイマーを有効にする。 パワーアップ・タイマーとは電源を入れたときに一定時間(72ms)待ってから、プログラムを実行する機能です。
周辺回路が安定してからプログラムを実行させたいときに利用します。ウォッチドッグ・タイマーを有効にする。 ウォッチドッグ・タイマーとはプログラムが暴走していないかを定期的に自己検査する機能です。
これを有効にした場合、プログラムで一定周期以内(標準17ms)に CLRWDT 命令を実行しないとプログラムが暴走したと判断してリセットがかかります。
通常は利用しませんので、無効にします。動作クロックを選択する。 PICのクロックは大きく外部クロックと内部クロックの2つに分けられます。
さらに外部クロックも水晶発振、セラロックのほか、別の発振回路に分けられます。
内部クロックも RC 発振のほか、内部発振に分けられます。
動作速度に応じても分類されていますので、正しい設定を行います。
例、
- コンフィグレーション・ワードは通常14ビットで構成され、で構成され、アドレス 2007h に配置されています。
- なお、18シリーズではコンフィグレーション・ワードが8つもあり複雑です。
ビットに正負論理があるので注意
ビット 13 12 11 10 9 8 7 6 5 4 3 2 1 0 12F629 BG1 BG0 0 0 0 CPD CPBOREN MCLRE PWRTEWDTE FOSC2 FOSC1 FOSC0 ビット 13 12 11 10 9 8 7 6 5 4 3 2 1 0 16F628A CP1 1 1 1 CPDLVP BOREN MCLRE FOSC2 PWRTEWDTE FOSC1 FOSC0
- 正論理の場合、1 で有効、0 で無効。
- 負論理の場合、0 で有効、1 で無効。
©2003-2015 All rights reserved by Einstein.例、
- 初期のPICでは、コンフィグレーション・ワードは書き込みをする際に、設定することになっていました。
- しかし、あまりにも忘れることが多いため、プログラム時に指定し、HEX ファイル内に保存することが推奨となりました。
- 記述方法は __CONFIG ディレクティブで指定するだけです。
- 必要な設定をアンド(&)で並べるだけです。
- 設定できる内容はインクルードファイル内に記述されています。
- この記述がないと、HEX ファイル内にコンフィグレーション・ワードが埋め込まれないため、PIC ライタは設定を書き込みません。
- その結果正しく動作しません。
list p=12F629 #include <p12F629.inc> __CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
- MPLAB XC8/XC16での設定方法です。
- 現在は#pragma configで指定します。