コンフィギュレーション


【コンフィギュレーションの概要】

コンフィギュレーションは、ハードウェアの動作モード設定ですが、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_1H
CONFIG2L 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: 1
WDTEN _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_5L
CONFIG5H 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_6L
CONFIG6H 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_7L
CONFIG7H 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'




   目次ページへ