« デザート イチゴ、静岡産紅ほっぺ | トップページ | 身ぐるみ剥がそう東京電力/東電が報酬・給与減額に動いた〜努力を評価したい »

2011年4月25日 (月)

PIC16F886 Hi-Tech C Pro PICC Ver9.80, MPLAB Ver8.63でのコンフィギュレーション設定(CONFIG1、CONFIG2双方)

 秋月電子の赤外線学習リモコンをベースにPICでC言語の学習をしている。
 この基板のPICは、PIC16F886である。
 
 環境は、MPLAB Ver8.63、Hi-Tech C Pro PICC Ver9.80を使っている。

 3月ころからこの秋月リモコンで学習を進めているが、当初、コンフィギュレーション設定がうまく出来なかった。秋月リモコンで開示されているソースリストのコンフィギュレーション設定をコピペしてもビルドエラーになってしまっていたのである。。
 そこで、MPLAB上のConfigureからコンフィグレーションビットを設定して動作させていた。
 当然ながら、設定忘れなどがあり問題も多い。
 そこで、改めてソース上でのコンフィグレーションの設定を行ったところ、すんなりビルド出来た。何故(?_?)。理由は、当時、誤記があったのか?、それともインストール上の問題かも知れない。先日、このブログに記した通り、シーゲートHDDのファーム問題で(このブログへのリンク)、OSからアプリまで全部再インストールしている。

 さて、現在では、問題なく動作するようになったので、コンフィグレーションビットをまとめて見た。
 PIC16F886はCONFIG1とCONFIG2がある。
 1行の__CONFIG(何とか)に、CONFIG1とCONFIG2の内容が併記してもビルドエラーにはならないが、CONFIG1とCONFIG2を2行に分けないとCONFIG2の設定は有効にならなかった。
 また、__CONFIG1、__CONFIG2と書きたくなるが、そう書くとエラーになった。故に__CONFIGを2行使っている。

 通常、コンフィグレーション設定は、main.cなどへ書くことが多いようだが、config.hへ記すようにした(ネット上で推奨している人もいる)。その方がソースがスッキリすると思う。流用も楽だ。
 
 下にconfig.hとした場合のソースを記す。PIC16F886全ても網羅している。

この下から、
// PIC16F886 Hi-Tech C Pro PICC Ver9.80, MPLAB Ver8.63
//CONFIG1とCOCNFIG2を行を分ける。

__CONFIG(INTIO & WDTDIS & PWRTDIS & MCLRDIS & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS & DEBUGDIS );
__CONFIG(BORV40);

/*
----------CONFIG1----------
;bit0-2=クロック制御 FOSC<2:0>
; EXTCLK=RC , 111 , RA6:クロック出力、RA7:RC 発振入力
; EXTIO=RCIO , 110 , RA6:I/O ピン、RA7:RC 発振入力
; INTCLK=INTOSC , 101 , RA6:クロック出力、RA7:I/O ピン
; INTIO=INTOSCIO , 100 , RA6:I/O ピン、RA7:I/O ピン、内部クロック
; EC , 011 , RA6:I/O ピン、RA7:クロック入力
; HS , 010 , 高周波数水晶/セラミック振動子
; XT , 001 , 水晶/セラミック振動子
; LP , 000 , 低周波数水晶振動子
;
;bit3=ウォッチドッグタイマーイネーブル
; WDTE
; WDTEN, 1 , ウォッチドッグタイマー有効
; WDTDIS, 0 , ウォッチドッグタイマー無効
;
;bit4=パワーアップタイマーイネーブル
; PWRTE
; PWRTDIS , 1 , パワーアップタイマー無効
; PWRTEN , 0 , パワーアップタイマー有効
;
;bit5=RE3/MCLR ピン機能選択
; MCLRE
; MCLREN , 1 , MCLR 機能有効
; MCLRDIS , 0 , MCLR 機能無効、入力ピンとして動作
;
;bit6=コードプロテクション
; CP
; UNPROTECT , 1 , プログラムメモリー保護無効
; PROTECT , 0 , プログラムメモリー保護有効、CPとしてもよし
;
;bit7=データコードプロテクション
; CPD
; DUNPROTECT 1 データメモリー保護無効
; CPD , 0 , データメモリー保護有効
;
;bit8-9=ブラウンアウトリセット選択
; BORDIS , 00 , ブラウンアウト無効
; SWBOREN , 01 , ソフトウェア制御による
; BORXSLP , 10 , 動作中はブラウンアウト有効、スリープ中は無効
; BOREN , 11, ブラウンアウト有効
;
;bit10=内部・外部クロック切替イネーブル
; IESOEN ,1 , 内部・外部クロック切替有効
; IESODIS ,0 , 内部・外部クロック切替無効
;
;bit11=フェイルセーフクロックモニターイネーブル
; FCMEN
; FCMEN , 1 , フェイルセーフクロックモニター有効
; FCMDIS , 0 , フェイルセーフクロックモニター無効
;
;bit12=低電圧プログラミングイネーブル
; LVP
; LVPDIS , 0 , 低電圧プログラミング無効、RB3はデジタルI/O
; LVPEN , 1 , 低電圧プログラミング有効、
;
;bit13=インサーキットデバッガーモード
;DEBUG
;DEBUGEN , 0 , インサーキットデバッグ有効
;DEBUGDIS , 1 , インサーキットデバッグ無効
;
;----------CONFIG2----------
;bit8=ブラウンアウトリセット選択
;BOR4V
;BORV21 , 0 , ブラウンアウトリセットを2.1V に設定
;BORV40 , 1, ブラウンアウトリセットを4.0V に設定
;
;bit9-10=フラッシュメモリーセルフライトイネーブル
;WRT<1:0>
;WP0 , 00 , 0000h ~ 00FFh を保護、それ以外は書き換え可能
;WP1 , 01 , 0000h ~ 07FFh を保護、それ以外は書き換え可能
;WP2 , 10 , 0000h ~ 0FFFh を保護、それ以外は書き換え可能
;記載なしがOFF、WP3(11)はエラーとなる。
*/
この上まで。

 ところで、CONFIG2のbit9-10=フラッシュメモリーセルフライトイネーブルであるが、データシート上では、00、01、10、11の4通りの設定が存在する。しかし、WP0,1,2までは動作するが、WP3(11)はプロテクトなし=保護なし設定出来ない。何も書かないWP3が有効になる。
  
 以上は、私の環境で1つ1つ入力して動作確認している。確認とは、MPLAB上のConfigureからコンフィグレーションビットを見ての確認である。PIC上での実際の動作ではない。
 

|

« デザート イチゴ、静岡産紅ほっぺ | トップページ | 身ぐるみ剥がそう東京電力/東電が報酬・給与減額に動いた〜努力を評価したい »

デジモノ」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: PIC16F886 Hi-Tech C Pro PICC Ver9.80, MPLAB Ver8.63でのコンフィギュレーション設定(CONFIG1、CONFIG2双方):

« デザート イチゴ、静岡産紅ほっぺ | トップページ | 身ぐるみ剥がそう東京電力/東電が報酬・給与減額に動いた〜努力を評価したい »