nobchaの電子回路日記ブログ                          2010.8.16 2010.12.31改

 

  PIC16F88のコンフィギュレーション解説  @2010

 

 はじめに 
 新しい環境で新しいPICシリーズを手がけるとまずはコンフィギュレーションワードの設定で苦労します。特にMPLABでHITEC Cコンパイラというワタシの愛用する環境は外様であるため余計に注意必要なように思います。 

 コンパイラは何を根拠に判断しているかというとincludeするhファイルのようです。従って次のところにある、hファイルの後ろの方にdefineされているコードを整理するのが肝心と気が付きました。
   C:\Program Files\HI-TECH Software\PICC\9.71a\include\pic12f675.h
 必要な機能のマスクワードを&すればヘキサデシマル表記での設定も出来上がるんですね。

 
 pic16f88.hファイルの中から 
// Configuration Mask Definitions   これはコンフィギュレーションの第一ワード
#define CONFIG_ADDR 0x2007


// Protection of program code   まずはプログラムのコードのプロテクト。趣味実験ですのでUNPROTECTかな
#define PROTECT 0x1FFF
#define UNPROTECT 0x3FFF
// CCP1 Pin selection       CCP1はまだ使っていないので、デフォールト
#define CCPRB0 0x3FFF
#define CCPRB3 0x2FFF
// In-Circuit Debugger Mode   これはDEBUGEN
#define DEBUGEN 0x37FF
#define DEBUGDIS 0x3FFF
// Flash Program Memory Write Enable    これもUNPROTECT
#define UNPROTECT 0x3FFF
#define WP0 0x3DFF
#define WP1 0x3BFF
#define WPA 0x39FF
// Data EE Memory Code Protection       これもUNPROTECT
#define UNPROTECT 0x3FFF
#define CPD 0x3EFF
// Low Voltage Programming Enable   LVPDISです
#define LVPEN 0x3FFF
#define LVPDIS 0x3F7F
// Brown out detection enable      2.1Vでリセットかけるというのは使わず。 BORDIS
#define BOREN 0x3FFF
#define BORDIS 0x3FBF
// Master clear reset pin function   PICKIT2デバッグではMCLRENが必須
#define MCLREN 0x3FFF
#define MCLRDIS 0x3FDF
// Power up timer enable         これはPWRTEN
#define PWRTDIS 0x3FFF
#define PWRTEN 0x3FF7
// Watchdog timer enable        ウォッチドッグは当座使わず、WDTDIS
#define WDTEN 0x3FFF
#define WDTDIS 0x3FFB
// Oscillator configurations     クロックの関係はたくさんの選択あり。注意。INTIOを使います。
#define RCCLK 0x3FFF
#define RCIO 0x3FFE
#define INTCLK 0x3FFD
#define INTIO 0x3FFC
#define EC 0x3FEF
#define HS 0x3FEE
#define XT 0x3FED
#define LP 0x3FEC

#define CONFIG_ADDR2 0x2008  これはコンフィギュレーションの第二ワード

// Fail Clock Monitor Enable    内部クロックだけなのでFCMDIS
#define FCMEN 0x3FFF
#define FCMDIS 0x3FFE
// Internal External Switch Over 
#define IESOEN 0x3FFF       内部クロックだけなのでIESODIS
#define IESODIS 0x3FFD

ということでPIC16F88のnobcha試作時のテンプレートは次にします。
 __config1 ( _INTIO & _WDTDIS & _PWRTEN & _UNPROTECT & _MCLREN  & _BORDIS & _LVPDIS &  _DEBUGEN & _IESODIS & _FCMDIS) ;

上記define文はHiTECH社のCコンパイラ配布ファイルの中のpic16f88.hから一部を抜き出したものです。

 
 コンフィギュレーションビットの説明 
  ではここで各コンフィギュレーションビットの解説をします。PIC16f87・88データシート(DS30487C)を参考にしました。P129 15.0 CPUの特別な仕様などに詳しく書かれています。機能はここの説明を参照しますが、指定ワード値は上記したhファイルで定義された文字列でなければなりません。(クロック指定のワードに注意)
機能 設定値 説明 nobchaの使う値
クロック LP,XT,HS,EC,RCCLK,RCIO,INTCLK,INTIO    説明書P35参照。外付けの水晶やRCだけでなく、内部発振回路も使える。内部発振はINTCLKである。INTCLK選ぶとOSCCONで周波数決める。INTIOではIOピンとして使える。 INTIO 
ウォッチドッグタイマ WDTEN/WDTDIS ウオッチドッグタイマを使うか WDTDIS
パワーアップタイマ PWRTDIS/PWRTEN パワーオン時にタイマー待ちスタートするか PWRTEN
データメモリー UNPROTECT/CPD データEEメモリーを外部から見えなくする UNPROTECT
プログラムコード UNPROTECT/UNPROTECT プログラムにプロテクションをかける UNPROTECT
フラッシュプログラムメモリ UNPROTECT/WP0/WP1/WP2 フラッシュプログラムメモリーを外部に見せなくするか UNPROTECT
マスタークリア MCLREN/DIS MCLR端子を使うかIOのRA5で使うか MCLREN
ブラウンアウトリセット BORDEN/BORDIS 電源電圧がBVDD 2V〜2.17Vより下がるとリセット掛ける BORDIS
低電圧書き込み LVPEN/LVPDIS 普通の書き込み電圧は12Vだが低い電圧で書き込めるらしい LVPDIS
デバッグ DEBUGEN/DEBUGDIS PICKITでデバッギングするときは設定 DEBUGEN
CCP1選択 CCPRB0/CCPRB3 CCP1の入力をRB0から取るかRB3から取るかの選択 デフォールト
内部外部クロック切り替え IESOEN/IESODIS クロックを外部と内部で切り替えるか IESODIS
外部クロック切り替え FCMEN/FCMDIS 外部クロックがなくなったら自動で内部に切り替えするか FCMDIS

 

「ご注意」 このWEBに掲載された内容(文面・回路・写真・プログラムなど)には著作権が存在します。無断転載・コピーなどで法律に抵触する場合があります。本WEBに掲載された実験や試作はnobcha個人の趣味で行っております。ここに示す結果の再現性や正確性は保証するものではありません。あくまでも個人の趣味の範囲で参考にしてください。

 

PIC16FのTOPへ戻る       WEBの目次へ 戻る        

アイコンは「牛飼いとアイコンの部屋」から

 

 

 

inserted by FC2 system