【コンフィギュレーションの概要】
コンフィギュレーションは、ハードウェアの動作モード設定ですが、PIC18シリーズの
コンフィギュレーションも、従来のミッドレンジのPICに比べ設定内容が増えています。
コンフィギュレーションで設定する項目は下記のようなものです。
(1) クロック発振モード指定
(2) リセット時動作指定
・パワーオンリセット(POR)
・パワーアップタイマ(PWRT)
・クロックスタートアップタイマ(OST)
・ブラウンアウトリセット(BOR)
(3) 割込み
(4) ウォッチドッグタイマ
(5) フェールセーフクロック監視
(6) 2速度起動(Two-speed Start-up)
(7) コードプロテクト
(8) ID
(9) ICSP
【コンフィギュレーションレジスタ】
コンフィギュレーションを設定するためのレジスタは、通常のメモリとは全くかけ
離れたアドレス空間に用意されています。PIC18シリーズではテーブル処理命令
をつかうことで、この空間にもアクセスできるようになりました。
レジスタ種類とアドレスは下図のようになっています。
【アセンブラでの記述方法】
コンフィギュレーションデータをプログラマで書き込む時に手動で設定するのではなく、
あらかじめアセンブラのソースファイルに指定しておくことができます。
これには下記のように記述します。
アセンブラの擬似命令「__CONFIG]命令を使い、下記のように表現します。
《コンフィギュレーション記述例》
この記述用にMPASMで用意されているコンフィギュレーション用のキーワードは
下表のようになっています。これらは、各PICデバイスのインクルードファイルを
みると判ります。下表の赤字がリセット直後のデフォルト値です。
レジスタ名 項目 キーワード種別 CONFIG1H IESO _IESO_ON_1H、 _IESO_OFF_1H FCMEN _FSCMEN_ON_1H、 _FSCMEN_OFF_1H FOSC3:0 _RC_OSC_1H、 _RCIO_OSC_1H、 _LP_OSC_1H、 _XT_OSC_1H、
_HS_OSC_1H、 _HSPLL_OSC_1H、_EC_OSC_1H、 _ECIO_OSC_1H
_INTIO1_OSC_1H、 _INTIO2_OSC_1H、 _RCIO6_OSC_1H
_ECIO6_OSC_1H、 _INTIO7_OSC_1H、 _INTIO67_OSC_1HCONFIG2L BORV1:0 _BORV_20_2L、 _BORV_27_2L、 _BORV_42_2L、 _BORV_45_2L BOREN _BOR_ON_2L、 _BOR_OFF_2L PWRTEN _PWRT_OFF_2L、 _PWRT_ON_2L CONFIG2H WDTPS3:0 _WDTPS_32K_2H ; 1:32,768 _WDTPS_16K_2H ; 1:16,384
_WDTPS_8K_2H ; 1: 8,192 _WDTPS_4K_2H ; 1: 4,096
_WDTPS_2K_2H ; 1: 2,048 _WDTPS_1K_2H ; 1: 1,024
_WDTPS_512_2H ; 1: 512 _WDTPS_256_2H ; 1: 256
_WDTPS_128_2H ; 1: 128 _WDTPS_64_2H ; 1: 64
_WDTPS_32_2H ; 1: 32 _WDTPS_16_2H ; 1: 16
_WDTPS_8_2H ; 1: 8 _WDTPS_4_2H ; 1: 4
_WDTPS_2_2H ; 1: 2 _WDTPS_1_2H ; 1: 1WDTEN _WDT_ON_2H、 _WDT_OFF_2H CONFIG3H MCRLE _MCLRE_ON_3H、 _MCLRE_OFF_3H PBADEN _PBAD_ANA_3H、 _PBAD_DIG_3H CCP2MX _CCP2MX_ON_3H、 _CCP2MX_OFF_3H
_CCP2MX_C1_3H、 _CCP2MX_B3_3H (別記法)CONFIG4L DEBUG _DEBUG_ON_4L、 _DEBUG_OFF_4L
_BKBUG_ON_4L、 _BKBUG_OFF_4L (別記法)LVP _LVP_ON_4L、 _LVP_OFF_4L STVREN _STVR_ON_4L、 _STVR_OFF_4L CONFIG5L CP3:0 _CP0_ON_5L、 _CP0_OFF_5L (4項目のORとすること)
_CP1_ON_5L、 _CP1_OFF_5L
_CP2_ON_5L、 _CP2_OFF_5L
_CP3_ON_5L、 _CP3_OFF_5LCONFIG5H CPD _CPD_ON_5H、 _CPD_OFF_5H CPB _CPB_ON_5H、 _CPB_OFF_5H CONFIG6L WRT3:0 _WRT0_ON_6L、 _WRT0_OFF_6L (4項目のORとすること)
_WRT1_ON_6L、 _WRT1_OFF_6L
_WRT2_ON_6L、 _WRT2_OFF_6L
_WRT3_ON_6L、 _WRT3_OFF_6LCONFIG6H WRTD _WRTD_ON_6H、 _WRTD_OFF_6H WRTB _WRTB_ON_6H、 _WRTB_OFF_6H WRTC _WRTC_ON_6H、 _WRTC_OFF_6H CONFIG7L EBTR3:0 _EBTR0_ON_7L、 _EBTR0_OFF_7L
_EBTR1_ON_7L、 _EBTR1_OFF_7L
_EBTR2_ON_7L、 _EBTR2_OFF_7L
_EBTR3_ON_7L、 _EBTR3_OFF_7LCONFIG7H EBTRB _EBTRB_ON_7H、 _EBTRB_OFF_7H
【コンフィギュレーションレジスタ詳細】
上記のようにたくさんのコンフィギュレーションレジスタがありますが、個々に
どんな内容なのかを説明していきます。
これらコンフィギュレーションビットは、すべてリセット後のデフォルト値は「1」に
なっています。
(CONFIG1L なし 300000H)
(CONFIG3L なし 300004H)
(CONFIG4H なし 300007H)
【デバイスID用レジスタの使い方】
デバイスID用レジスタには、デバイス種別コードやバージョン番号を
書き込みます。
内容は下図のようになっています。
【IDコードレジスタへの書込み】
IDレジスタのエリアの使い方は、基本的には自由です。通常ここには、
書き込まれているプログラムのチェックサムコードや、プログラムの名称など
を書き込みます。
その書込みには、通常はプログラマを使って手作業で書き込みますが、
それ以外にテーブルアクセスの方法を使ってプログラムでもリード・ライトが
可能です。この場合には、インクルードファイルで下記のラベルが定義されて
いますので、それを利用します。
_DEVID1 EQU H'3FFFFE'
_DEVID2 EQU H'3FFFFF'