レジスターの設定
レジスターを使って、PIC16F1827をPICA Tower(ピカタワー)として動作させるための具体的な設定を行います。この記事では、オシレーター(発振回路)の周波数に関するレジスターを解説します。
4-12-1.レジスターとは
「4-11.コンフィギュレーションビットの設定」では、PICマイコン(PIC16F1827)の環境設定を行いました。次に、レジスターを使って、動作に必要となる具体的な設定を行います。
レジスターとは
レジスターとは、PICマイコンの機能や、その動作モードを詳しく設定する8ビット長の特別な変数で、あらかじめメモリー領域の決められた場所に割り当てられています。PIC16F1827のデーターシートでは、27ページから35ページまでの、9ページにわたって、レジスターのメモリー領域が掲載されています。以下は、その一部です。Name欄がレジスター名です。
CORE FUNCTION REGISTERS SUMMARY
SPECIAL FUNCTION REGISTERS SUMMARY
SPECIAL FUNCTION REGISTERS SUMMARY(続き)
PIC16(L)F1826/27 Data Sheet - DS41391D (Page.27-35)
とても多くのレジスターが定義されていることがわかります。これらのレジスターの中から必要なものを選択して、PICA Tower(ピカタワー)として動作させるための具体的な設定を行います。必要な設定は、次の二つです。
- オシレーター(発振回路)の周波数
- 端子への機能の割り当てと動作モード
4-12-2.オシレーター(発振回路)の周波数
「4-11.コンフィギュレーションビットの設定」で、オシレーターのモードを次のように設定しました。
#pragma config FOSC = INTOSC
これは、PICマイコンの動作には欠かせないオシレーターのモードを「内部オシレーター:CLKIN端子はI/Oとして機能する」に設定するものです。さらに、レジスターを使って、内部オシレーターの具体的な周波数などを設定します。オシレーターに関するレジスターは、データシートの65ページ~67ページに記載されています。
OSCCON: OSCILLATOR CONTROL REGISTER
OSCSTAT: OSCILLATOR STATUS REGISTER
OSCTUNE: OSCILLATOR TUNING REGISTER
PIC16(L)F1826/27 Data Sheet - DS41391D (Page.65-67)
オシレーターに関するレジスターは、次の三つです。
- OSCCON(Oscillator Control Register)
- OSCSTAT(Oscillator Status Register)
- OSCTUNE(Oscillator Tuning Register)
このうち、OSCSTAT(オシレーター状態レジスター)は、状態を確認するための読み出し専用のレジスターなので、ここでは対象外となります。残りのOSCCON(オシレーター制御レジスター)・OSCTUNE(オシレーター調整レジスター)を設定します。
OSCCONレジスターは、オシレーター制御レジスターと呼ばれ、オシレーターの周波数を設定します。では、OSCCONレジスターを詳しく見てみましょう。
OSCCON: OSCILLATOR CONTROL REGISTER
PIC16(L)F1826/27 Data Sheet - DS41391D (Page.65)
SCS(bit 0-1)/System Clock Select bits
SCSは、使用するオシレーターを選択するビット(System Clock Select bits)です。
- 1x:内部オシレーター
- 01:Timer1オシレーター
- 00:コンフィギュレーションビットFOSCによって指定したオシレーター
コンフィギュレーションビットFOSCによって指定した内部オシレーター(INTOSC)を使用するので「00」となります。
IRCF(bit 3-6)/Internal Oscillator Frequency Select bits
IRCFは、内部オシレーターを使用する場合の、周波数を選択するビット(Internal Oscillator Frequency Select bits)です。
- 000x:31 kHz LF
- 0010:31.25 kHz MF
- 0011:31.25 kHz HF
- 0100:62.5 kHz MF
- 0101:125 kHz MF
- 0110:250 kHz MF
- 0111:500 kHz MF(初期値)
- 1000:125 kHz HF
- 1001:250 kHz HF
- 1010:500 kHz HF
- 1011:1 MHz HF
- 1100:2 MHz HF
- 1101:4 MHz HF
- 1110:8 MHz または 32 MHz HF
- 1111:16 MHz HF
初期値の500 kHz MFを使用するので「0111」となります。周波数の後ろに付いているLF・MF・HFは、周波数の発生源となる内部オシレーターを表しています。
- LF:LFINTOSC(31kHz・低周波数内部オシレータ)
- MF:MFINTOSC(500kHz・中周波数内部オシレータ)
- HF:HFINTOSC(16MHz・高周波数内部オシレータ)
SPLLEN(bit 7)/Software PLL Enable bit
SPLLENは、クロックの周波数を4倍にする「4倍クロックモード」を使用するかどうかをプログラムによって設定するビット(Software PLL Enable bit)です。コンフィギュレーションビットPLLENによって有効(1)になっている場合は、以下の設定は無視されます。
- 1:4倍クロックモードを有効にする
- 0:4倍クロックモードを無効にする
「4倍クロックモード」は使用しないので「0」となります。
以上で、OSCCONレジスターの各ビットの値が決まりました。これらの値から、OSCCONレジスターの値は「00111000」となります。bit 2は、未使用のため「0」とします。
- SCS(bit 0-1)/System Clock Select bits:00
- IRCF(bit 3-6)/Internal Oscillator Frequency Select bits:0111
- SPLLEN(bit 7)/Software PLL Enable bit:0
プログラム中で、OSCCONレジスターに値をセットするには、先頭に2進数を表す「0b」を付加して「0b00111000」とします。また、先頭に「0x」を付加して、16進数で表すこともできます。10進数で書くこともできますが、後から設定値がわかりにくいため、おすすめしません。
OSCCON = 0b00111000
OSCCON = 0x38
次は、OSCTUNEレジスターです。OSCTUNEレジスターは、オシレーター調整レジスターと呼ばれ、オシレーターの周波数を微調整することができます。では、OSCTUNEレジスターを詳しく見てみましょう。
OSCTUNE: OSCILLATOR TUNING REGISTER
PIC16(L)F1826/27 Data Sheet - DS41391D (Page.67)
TUN(bit 0-5)/Frequency Tuning bits
TUNは、オシレーターの周波数を微調整するためのビット(Frequency Tuning bits)です。この設定は、HFINTOSC(HF)・MFINTOSC(MF)によって発生する周波数に影響します。LFINTOSC(LF)には影響を与えません。
- 011111:最大周波数
- 011110: :
- 000001: :
- 000000:工場で校正済みの周波数
- 111111: :
- 100001: :
- 100000:最小周波数
PICA Tower(ピカタワー)の回路には、周波数の微調整は必要ないので、工場で校正済みの周波数である「000000」とします。
上位2ビットは、未使用のため、OSCTUNEレジスターの値は「00000000」となります。2進数・16進数で表すと次のようになります。また、0の場合、10進数で書くとプログラムがすっきりします。0なので、後から設定値がわかりづらいと言うこともありませんね。
OSCTUNE = 0b00000000
OSCTUNE = 0x00
OSCTUNE = 0
以上が、オシレーター(発振回路)の周波数に関するレジスターの設定です。次回は、端子への機能の割り当てと動作モードに関するレジスターです。
PICマイコン関連のおすすめ品
PIC16F1827を使用した、赤・緑・青・黄のLED27個を円柱状に光らせる3Dイルミネーションキットです。PIC16F1827のプログラムは書き換えが可能で、C言語によるプログラミングが学習できます。詳しいマニュアルは株式会社イーケイジャパンよりダウンロードできます。
エレキット ピカ・タワー AW-864
エレキットのアートする電子工作シリーズ。 LED(発光ダイオード)を使用した3Dイルミネーションキットです。LEDは赤・緑・青・黄の4色、全部で27個使用して、円柱状に配置したLEDを光らせます。
PICマイコンのプログラミング(C言語)について、最新の開発環境を使って解説した役立つ一冊です。
PIC16F1ファミリのアーキテクチャ、新しい開発環境であるMPLAB IDE Xの使い方、C言語によるPICのファームウェア開発方法、内蔵モジュールの使い方と具体的な製作例などについて詳細に解説しています。