• 検索結果がありません。

キャプチャ / コンペア /PWM モジュール

ドキュメント内 PIC16(L)F1703/7 Data Sheet (ページ 192-200)

PIC16(L)F1703/7

22.0 キャプチャ / コンペア /PWM

PIC16(L)F1703/7

22.1 キャプチャモード

このセクションで説明するキャプチャモード機能は、

全ての

CCP

モジュールで利用でき、その機能は同じ です。

キャプチャモードでは

16

ビットの

Timer1

リソースを 使 い ま す。CCPx ピ ン で イ ベ ン ト が 発 生 す る と、

TMR1H:TMR1L

レジスタペアの

16

ビット値がキャプ チャされ、

16

ビットの

CCPRxH:CCPRxL

レジスタペ アにそれぞれ格納されます。イベントの定義は以下の いずれかであり、

CCPxCON

レジスタの

CCPxM<3:0>

ビットで設定します。

全ての立ち下がりエッジ

全ての立ち上がりエッジ

立ち上がりエッジ

4

回ごと

立ち上がりエッジ

16

回ごと

キャプチャが実行されると、

PIRx

レジスタの割り込み 要求フラグビット

CCPxIF

がセットされます。この割 り込みフラグはソフトウェアでクリアする必要があり ます。

CCPRxH:CCPRxL

レジスタペアの値を読み出す 前に再度キャプチャが実行されると、以前にキャプ チャした値が新しいキャプチャ値で上書きされます。

図 22-1 に、キャプチャ動作の概略ブロック図を示し ます。

22.1.1 CCP

ピンの設定

キャプチャモードでは、対応するTRIS制御ビットをセッ トして

CCPx

ピンを入力に設定する必要があります。

22-1:

キャプチャモード動作のブロック図

22.1.2 Timer1

モードのリソース

CCP

モジュールのキャプチャ機能を使うには、

Timer1

の動作をタイマモードまたは同期カウンタモードに設 定する必要があります。非同期カウンタモードの場合、

キャプチャ機能は使えません。

Timer1

の設定の詳細は、セクション20.0Timer1モ ジュール (ゲート制御対応)」を参照してください。

22.1.3

ソフトウェア割り込みモード

キャプチャモードを別のモードに変更した場合、不正 なキャプチャ割り込みが生成される事があります。こ のような割り込みを防ぐため、ユーザは

PIEx

レジス

タの

CCPxIE

割り込みイネーブルビットをクリアして

おく必要があります。また、動作モード変更後には

PIRx

レジスタのCCPxIF割り込みフラグビットをクリ アしてください。

22.1.4 CCP

プリスケーラ

プリスケーラの設定は

4

種類あり、

CCPxCON

レジス タの

CCPxM<3:0>

ビットで設定します。

CCP

モジュー ルが

OFF

の場合、またはキャプチャモード以外の場 合、プリスケーラカウンタはクリアされます。何らか のリセットが発生するとプリスケーラ カウンタはク リアされます。

キャプチャ プリスケーラを切り換えてもプリスケーラ はクリアされないため、不正な割り込みが生成される 事があります。このような予期しない割り込みを防ぐ ため、プリスケーラを変更する前に

CCPxCON

レジス タをクリアしてモジュールを

OFF

にします。例22-1 に、この処理を実行するサンプルコードを示します。

例 22-1: キャプチャ プリスケーラの切り換え

Note: CCPxピンを出力に設定した場合、

そのポー

トへの書き込み動作を実行するとキャプ チャが発生します。

CCPRxH CCPRxL

TMR1H TMR1L

Set Flag bit CCPxIF (PIRx register)

Capture Enable

CCPxM<3:0>

Prescaler

1, 4, 16

and Edge Detect pinCCPx

System Clock (FOSC)

Note:

キャプチャモードでは、Timer1のクロッ

ク源をシステムクロック

(F

OSC

)

としない でください。キャプチャモードで

CCPx

ピンのトリガイベントを認識するには、

Timer1のクロック源を命令クロック(F

OSC

/4)

または外部クロック源とする必要があり ます。

BANKSEL CCPxCON ;Set Bank bits to point

;to CCPxCON

CLRF CCPxCON ;Turn CCP module off MOVLW NEW_CAPT_PS ;Load the W reg with

;the new prescaler

;move value and CCP ON MOVWF CCPxCON ;Load CCPxCON with this

;value

PIC16(L)F1703/7

22.1.5

スリープ中のキャプチャ

キャプチャモードの動作は、

Timer1

モジュールにより 決まります。キャプチャモードでは、Timer1 モジュー ルの駆動方法として

2

通りの設定が可能です。命令ク ロック

(F

OSC

/4)

または外部クロック源を使って駆動で きます。

F

OSC

/4

をクロック源に使うと、Timer1 はスリープ中 にインクリメントしません。デバイスがスリープから 復帰すると、

Timer1

はスリープ直前の状態から動作を 再開します。

外部クロック源で

Timer1

が動作している場合、スリー プ中もキャプチャモードは動作を継続します。

PIC16(L)F1703/7

22.2 コンペアモード

このセクションで説明するコンペアモード機能は、全 ての

CCP

モジュールで利用でき、その機能は同じです。

コンペアモードでは

16

ビットの

Timer1

リソースを使 います。

CCPRxH:CCPRxL

レジスタペアの

16

ビット 値と

TMR1H:TMR1L

レジスタペアの

16

ビット値を常 に比較します。両方の値が一致した時、以下のイベン トのどれかを発生できます。

• CCPx

出力をトグルする

• CCPx

出力を設定する

• CCPx

出力をクリアする

自動変換トリガを生成する

ソフトウェア割り込みを生成する

ピンの動作は

CCPxCON

レジスタの

CCPxM<3:0>

制 御ビットの値で決まります。同時に、割り込みフラグ

CCPxIF

ビットがセットされます。

全てのコンペアモードで割り込みを生成できます。

図22-2に、コンペア動作の概略ブロック図を示します。

図 22-2: コンペアモード動作のブロック図

22.2.1 CCPx

ピンの設定

コンペアモードでは、対応する

TRIS

ビットをクリア して

CCPx

ピンを出力に設定する必要があります。

22.2.2 Timer1

モードのリソース

コンペアモードでは、

Timer1

がタイマモードまたは同 期カウンタモードのどちらかで動作している必要があ ります。非同期カウンタモードの場合、コンペア機能 は使えません。

Timer1

の設定の詳細は、セクション20.0Timer1モ ジュール (ゲート制御対応)」を参照してください。

22.2.3

ソフトウェア割り込みモード

ソフトウェア割り込み生成モード(CCPxM<3:0> =

1010)

を選択した場合、CCPxモジュールは

CCPx

ピンの出 力を制御しません

(CCPxCON

レジスタ参照

)。

22.2.4

自動変換トリガ

自動変換トリガモード(CCPxM<3:0> =

1011)を選択し

た場合、

CCPx

モジュールは以下のように動作します。

• Timer1

をリセットする

• ADC

が有効な場合、

A/D

変換を開始する

このモードの

CCPx

モジュールは

CCPx

ピンの出力を 制御しません。

CCP

の自動変換トリガは、TMR1H:TMR1L レジスタ ペアと

CCPRxH:CCPRxL

レジスタペアが一致すると すぐに出力されます。

TMR1H:TMR1Lレジスタペアは、

Timer1

クロックの次の立ち上がりエッジまでリセッ

トされません。

ADC

モジュールが有効な場合、自動変 換トリガ出力によって

A/D

変換が開始します。これに より、

CCPRxH:CCPRxL

レジスタペアを

Timer1

16

ビットプログラマブル周期レジスタとして使います。

詳細は、セクション16.2.5「自動変換トリガ」を参照 してください。

Note: CCPxCONレジスタをクリアすると、 CCPx

コンペア出力ラッチは既定値のLowレベル に変更されます。これは

PORT I/O

データ ラッチではありません。

CCPRxH CCPRxL

TMR1H TMR1L Comparator

Q S

R Output

Logic

Auto-conversion Trigger

Set CCPxIF Interrupt Flag (PIRx)

Match

TRIS

CCPxM<3:0>

Mode Select

Output Enable Pin

CCPx 4

Note:

コンペアモードでは、

Timer1

のクロック

源としてシステムクロック

(F

OSC

)

を使わ ないでください。コンペアモードで

CCPx

ピンのトリガイベントを認識するには、

Timer1

のクロック源を命令クロック

(F

OSC

/4)

または外部クロック源とする必要があり ます。

Note 1: CCP

モジュールからの自動変換トリガ

は、

PIR1

レジスタの割り込みフラグビッ ト

TMR1IF

をセットしません。

2:

自動変換トリガが発生したクロックエッ ジの後、

Timer1

がリセットされるクロッ クエッジまでの間に

CCPRxH:CCPRxL

レジスタペアの内容を変更して一致状態 を解消すると、リセットは発生しません。

PIC16(L)F1703/7

22.2.5

スリープ中のコンペア

コンペアモードの動作は、システムクロック

(F

OSC

)

で 決まります。FOSC はスリープ中停止するため、コン ペアモードはスリープ中には機能しません。

PIC16(L)F1703/7

22.3 PWM の概要

PWM (

パルス幅変調

)

は完全

ON

と完全

OFF

の状態 を切り換えながら負荷に電力を供給する仕組みです。

PWM

信号は矩形波に似ており、信号の

High

の部分が

ON

Low

の部分が

OFF

です。

High

の部分はパルス幅 とも呼ばれ、その時間の長さをステップ単位で変化さ せる事ができます。ステップ数を多くするとパルス幅 が広くなり、負荷に供給される電力が増加します。ス テップ数を少なくするとパルス幅が狭くなり、負荷に 供給される電力が減少します。1サイクル全体

(

すな わち

ON

時間と

OFF

時間の合計

)

PWM

周期といい ます。

1

回の

PWM

周期に設定できる最大ステップ数を

PWM

分解能といいます。PWM 分解能が高いほどパルス幅 の時間、すなわち負荷に供給される電力を細かく制御 できます。

PWM

周期全体に対する

ON

時間の割合を

%

で表した ものをデューティ サイクルと呼び、

0%

なら完全

OFF、

100%

なら完全

ON

を表します。デューティ サイクル の値が小さいほど負荷に供給される電力が少なく、値 が大きいほど多くなります。

図22-3に、

PWM

信号の代表的な波形を示します。

22.3.1

標準型

PWM

の動作

このセクションで説明する標準型

PWM

機能は、全て の

CCP

モジュールで利用でき、その機能は同じです。

標準型PWMモードでは、最高分解能

10ビットの PWM

信号を

CCPx

ピンに生成します。周期、デューティ サ イクル、分解能は以下のレジスタで設定します。

• PR2

レジスタ

• T2CON

レジスタ

• CCPRxL

レジスタ

• CCPxCON

レジスタ

図22-4に、PWM動作の概略ブロック図を示します。

図 22-3:

CCP PWM

出力信号

図 22-4:

PWM

動作の概略ブロック図

Note: CCPxピンへの PWM出力を有効にするに

は、対応する

TRIS

ビットをクリアする必 要があります。

Period Pulse Width

TMR2 = 0

TMR2 = CCPRxH:CCPxCON<5:4>

TMR2 = PR2

CCPR1L

CCPR1H(2) (Slave)

Comparator

TMR2

PR2

(1)

R Q

S Duty Cycle Registers CCP1CON<5:4>

Clear Timer, toggle CCP1 pin and latch duty cycle

Note 1: 8ビットのタイマTMR2レジスタに2ビットの

内部システムクロック(FOSC)または2ビットの プリスケーラを連結して、10 ビットのタイム ベースを生成します。

2: PWMモードでは、CCPR1Hは読み出し専用レ ジスタです。

TRIS CCP1

Comparator

ドキュメント内 PIC16(L)F1703/7 Data Sheet (ページ 192-200)