PICマイコン

小さくて安いPICマイコンを使ってみる【コンフィグレーションの設定方法】

  • コンフィグレーションの設定方法について
  • コンフィグレーションの項目ごとの意味

PICマイコンを使う上で、まず最初に行わなければならないコンフィグレーション(Configuration)の設定方法についてまとめました。

目次
  • コンフィグレーションとは
  • コンフィグレーションの設定方法
  • 項目ごとの意味

コンフィグレーションとは

PICマイコンでは、オシレーター(発振回路)のモードやメモリの保護など、機器自体(ハード)としての設定を最初に行う必要があります。この設定をコンフィギュレーションというレジスタ(データを格納しておく入れ物)に入れます。

要するに、コンフィグレーションを設定することで、PICマイコンの基本的なハードとしての動作を決定しますから、この設定を行わないとPICマイコンは動きません。

コンフィグレーションの設定方法

コンフィグレーションの設定は、PICマイコンのプログラムを書き込む際に一緒に行います。プログラム自体はMPLAB X IDEで自動生成することができます。生成方法について案内します。

項目ごとの意味

コンフィグレーションの項目はPICによって微妙に異なりますが、今回は「PIC12F1822」にある項目について案内いたします。日本語のデータシートも公開されているので一番最初に使うPICには良いと思います。
(私が使うときの設定を赤字にしています。)

・FOSC (発振回路選択)
ECH 外部クロック、高消費電力モード (4 ~ 32 MHz): CLKIN ピンにデバイスクロックを供給する
ECM 外部クロック、中消費電力モード (0.5 ~ 4 MHz): CLKIN ピンにデバイスクロックを供給する
ECL 外部クロック、低消費電力モード (0 ~ 0.5 MHz): CLKIN ピンにデバイスクロックを供給する
INTOSC CLKIN ピンは I/O として機能する
EXTRC CLKIN ピンに外部 RC 回路を接続する
HS OSC1 と OSC2 ピン間に高速水晶 / セラミック振動子を接続する
XT OSC1 と OSC2 ピン間に水晶 / セラミック振動子を接続する
LP OSC1 と OSC2 ピン間に低消費電力水晶振動子を接続する

・WDTE (ウォッチドッグタイマーの設定)
定期的に発動することで、システムが機能し続けていることを確認させるためのタイマ(ウォッチドックタイマ)の設定
ON WDT を有効にする
NSLEEP WDT を動作時に有効、スリープ時に無効にする
SWDTEN  WDT を WDTCON レジスタの SWDTEN ビットで制御する
OFF  WDT を無効にする

・PWRTE (パワーアップタイマー設定)
電源や周辺回路が安定するまでの一定時間、動作を停止するパワーアップタイマのモードを設定
OFF PWRT を無効にする
ON PWRT を有効にする

・MCLRE (MCLR端子の設定)
MCLR端子を、リセット信号の入力用として機能させるかどうかを設定
ON MCLR/VPP ピンは MCLR として機能する。弱プルアップを有効にする
OFF MCLR/VPP ピンはデジタル入力として機能する。MCLR を内部で無効にし、弱プルアップは WPUA レジスタで制御する

・CP (コード保護の設定)
OFF プログラムメモリのコード保護を無効にする
ON プログラムメモリのコード保護を有効にする

・CPD (データコード保護の設定)
OFF データメモリのコード保護を無効にする
ON データメモリのコード保護を有効にする

・BOREN (ブラウンアウトリセットの設定)
電源電圧が一定電圧より下がるとリセットするブラウンアウトリセットの設定
ON BORENを有効にする
NSLEEP BOREN を動作時に有効、スリープ時に無効にする
SBODEN BOREN を BORCON レジスタの SBOREN ビットで制御する
OFF BOREN を無効にする

・CLKOUTEN (CLKOUT端子の動作モードの設定)
OFF CLKOUT 機能を無効にする。CLKOUT ピンは I/O として機能する
ON CLKOUT ピンの CLKOUT 機能を有効にする

・IESO (電源投入直後のクロック設定)
電源投入直後、外部クロックが安定するまでの時間、内部クロックを使う機能の設定
ON 内部 / 外部切り換えモードを有効にする
OFF 内部 / 外部切り換えモードを無効にする

・FCMEN (外部クロックが停止時、内部クロックで動作させる)
外部クロック監視機能「フェールセーフクロックモニター」を使い、外部クロックが停止しても、内部クロックで動作させるかのを設定
ON フェイルセーフ クロックモニタを有効にする
OFF フェイルセーフ クロックモニタを無効にする

・WRT (プログラムの書き換え保護の設定)
PICはプログラム自身がメモリー領域への書き込みを行うことで、プログラムの書き換えが行えます。この書き込みを許可するかの設定
OFF 書込み保護を行わない
BOOT 000h~1FFhまでを保護、200h~FFFhを書き込み可にする
HALF 000h~7FFhまでを保護、800h~FFFhを書き込み可にする
ALL 000h~FFFhまでのすべてを保護する

・PLLEN (クロック周波数を4倍にする設定)
PLL(Phase Locked Loop)回路によって、クロックの周波数を4倍にする「4倍クロックモード」を使用するかの設定
ON 4倍クロックモードを有効にする
OFF 4倍クロックモードを無効にする

・STVREN (保存したデータ量によるリセットの設定)
関数の引数や戻りアドレスを一時的に保存するスタック領域が、オーバーフローやアンダーフローしたときにリセットする機能を使用するかの設定
ON スタックのオーバーフローまたはアンダーフローによってリセットを発生させる
OFF スタックのオーバーフローまたはアンダーフローによってリセットを発生させない

・BORV (ブラウンアウトリセット動作する電圧を設定)
BORENで設定するブラウンアウトリセットが、動作する電源電圧を設定
LO ブラウンアウト リセット電圧 (Vbor) のトリップポイントを低に設定する
HI ブラウンアウト リセット電圧 (Vbor) のトリップポイントを高に設定する

・LVP (書き込み電圧を設定)
プログラムの書き込み時に、低い電圧で書き込むかどうかを設定
ON 低電圧書き込みを有効にする
OFF 低電圧書き込みを無効にする