「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

PICマイコン Lab.

PICマイコンLab.では、PICマイコンに関する情報やPICマイコンを使った電子工作を紹介しています。

PICマイコンの機能や動作を詳しく設定する
4-12

レジスターの設定

2018-07-022018-07-02

レジスターを使って、PIC16F1827をPICA Tower(ピカタワー)として動作させるための具体的な設定を行います。この記事では、オシレーター(発振回路)の周波数に関するレジスターを解説します。

4-12-1.レジスターとは

「4-11.コンフィギュレーションビットの設定」では、PICマイコン(PIC16F1827)の環境設定を行いました。次に、レジスターを使って、動作に必要となる具体的な設定を行います。

レジスターとは

レジスターとは、PICマイコンの機能や、その動作モードを詳しく設定する8ビット長の特別な変数で、あらかじめメモリー領域の決められた場所に割り当てられています。PIC16F1827のデーターシートでは、27ページから35ページまでの、9ページにわたって、レジスターのメモリー領域が掲載されています。以下は、その一部です。Name欄がレジスター名です。

CORE FUNCTION REGISTERS SUMMARY

CORE FUNCTION REGISTERS SUMMARY

SPECIAL FUNCTION REGISTERS SUMMARY

SPECIAL 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

OSCCON: OSCILLATOR CONTROL REGISTER

OSCSTAT: OSCILLATOR STATUS REGISTER

OSCSTAT: OSCILLATOR STATUS REGISTER

OSCTUNE: OSCILLATOR TUNING 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

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

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言語)について、最新の開発環境を使って解説した役立つ一冊です。

C言語による PICプログラミング大全

著 者
後閑哲也
出版社
技術評論社
発売日
2018/04/14

PIC16F1ファミリのアーキテクチャ、新しい開発環境であるMPLAB IDE Xの使い方、C言語によるPICのファームウェア開発方法、内蔵モジュールの使い方と具体的な製作例などについて詳細に解説しています。

電子工作のための PIC16F1ファミリ活用ガイドブック

著 者
後閑哲也
出版社
技術評論社
発売日
2013/04/11
この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動