レジスタ 14- 24: LEBDLYx: リーディング エッジ ブランキング遅延レジスタ
14.4 アーキテクチャの概要
14.7.1 PWM 周期
PWM
周期値は、PWMパルスのスイッチング周波数を定義します。PWM周期値は、プライマ リマスタ タイムベース周期レジスタ(PTPER)
を使って制御するか、あるいはプライマリおよ びセカンダリPWM
出力で別々のタイムベース周期レジスタ(PHASEx
とSPHASEx)
を使って 制御できます(
一部のデバイスのみ)。
高速
PWM
モジュールが独立タイムベース モードで動作する場合、PWM周期値は下記の2
つ の方法で制御できます。•
完全独立出力モード以外では、PHASExレジスタがPWM
出力信号(PWMxH
とPWMxL)
のPWM
周期を制御します。•
完全独立出力モードでは、PHASExレジスタがPWMxH
出力信号のPWM
周期値を制御し、SPHASEx
レジスタがPWMxL
出力信号のPWM
周期値を制御します。各種
PWM
モードとそれらの機能の詳細は、14.6「PWMの動作モード」を参照してください。高速
PWM
モジュールがマスタ タイムベース モードで動作する場合、PTPER レジスタは、PMTMR
タイマのカウント周期を指定する16
ビット値を保持します。高速PWM
モジュールが独立タイムベース モードで動作する場合、PHASEx および
SPHASEx
レジスタは、それぞれPTMRx
およびSTMRx
タイマのカウント周期を指定する16
ビット値を保持します。ユーザ アプリケーションは、タイマ周期をいつでも更新できます。エッジアライン
PWM
モード(CAM
ビット(PWMCONx<2>)
を「0」に設定)
におけるPWM
タイムベース周期(PTPER)
は式14-1 を使って計算できます。式
14-1:
エッジアライン モードでのPERIOD、PHASEx、SPHASEx
レジスタ値の計算式14-1に基づき、マスタ タイムベース (PTPERレジスタ
)
または独立タイムベース(PHASEx
および
SPHASEx
レジスタ)
で動作する時にレジスタに格納する値の計算例を例14-38に示します。
例
14-38:
エッジアライン モードでのPWM
タイムベース周期値の計算Note:
ここに記載したレジスタと機能は、一部のデバイスで利用できない場合があります。詳細は各デバイス データシート内の「高速
PWM」を参照してください。
PTPER, PHASEx, SPHASEx =
FPWM * PWM Input Clock Prescaler FOSC
FPWM = 目標
PWM
周波数FOSC = オシレータ出力
(60MIPS
において120 MHz)
PWM Input Clock Prescaler = PCLKDIV<2:0>ビット
(PTCON2<2:0>)
で定義した値PTPER 120MHz 20kHz×1 --- 6000
= =
PWM
入力クロック プリスケーラ = 1:1 システム オシレータ周波数(F
OSC) = 120 MHz
目標PWM
スイッチング周波数 = 20 kHzセンターアライン モード
(CAM = 1 かつ ITB = 1)
におけるPWM
タイムベース周期(PHASEx
または
SPHASEx)
は、式14-2を使って計算できます。センターアライン モードでは独立タイムベース
(ITB = 1)
が必要であるため、PTPERレジスタを周期として使いません。式
14-2:
センターアライン モードでのPHASEx/SPHASEx
レジスタ値の計算式14-2に基づき、独立タイムベースで動作する場合に
PHASEx/SPHASEx
レジスタに格納す る値を計算した例を例14-39に示します。例
14-39:
センターアライン モードでのPWM
タイムベース周期の計算例達成可能な
PWM
周期の最高分解能は、エッジアライン モードの場合T
OSC、センターアライ ン モードの場合TOSC* 2です。 PWMクロックのタイプはPCLKDIV<2:0>ビット(PTCON2<2:0>)
で指定します。タイマ/
カウンタの有効化/
無効化はPTEN
ビット(PTCON<15>)
のセット/
ク リアにより設定します。PTENビットを使ってPMTMR
タイマをクリアする事もできます。EIPU
ビット(PTCON<10>)
をセットした場合、アクティブなマスタ周期レジスタ(
内部のシャ ドーレジスタ)
はPWM
サイクルの終了を待たずに即時更新されます。EIPU
ビットはPMTMR
マスタ タイムベースに影響します。例
14-40:
クロック プリスケーラの選択例
14-41: PWM
タイムベース周期の選択例
14-42: PWM
タイムベース周期の初期化PHASEx, SPHASEx FOSC
FPWM⋅PWM Input Clock Prescaler⋅2
---=
PHASEx, SPHASEx 120 MHz 20 kHz⋅ ⋅1 2 --- = 3000
=
PWM
周波数(F
PWM) = 20 kHz
PWM
入力クロック プリスケーラ = 1:1 システム オシレータ周波数(F
OSC) = 120 MHz
/* Select PWM time base input clock prescaler */
/* Choose divide ratio of 1:2 */
PTCON2bits.PCLKDIV = 1;
/* Select Time Base Period Control */
/* Choose one of these options */
PWMCON1bits.ITB = 0;/* PTPER provides the PWM time period value */
PWMCON1bits.ITB = 1;/* PHASEx/SPHASEx provides the PWM time period value */
/* Choose PWM time period based on FRC input clock */
/* PWM frequency is 100 kHz */
/* Choose one of the following options */
PTPER = 4808;
PHASEx = 4808;
SPHASEx = 4808;
高速 PWM 14
14.7.2 PWM デューティサイクル制御
デューティサイクルによって、PWM 出力がアクティブ状態を維持する時間の長さが決まりま す。各デューティサイクル レジスタでは、16ビットのデューティサイクル値を定義できます。
IUE
ビットをセットした場合、デューティサイクル値はPWM
サイクルに同期せずに即時更新 されます。IUE
ビットを「0」にクリアした場合、アクティブなレジスタは次のPWM
サイクル の開始時に更新されます。マスタ デューティサイクル レジスタ
(MDC)
により、複数のPWM
ジェネレータが1
つのデュー ティサイクル レジスタを共有できるようになります。MDC レジスタはマスタ タイムベース モードで重要な役割を持ちます。また、各
PWM
ジェネレータはプライマリ デューティサイクル レジスタ(PDCx)
とセカンダリ デューティサイクル レジスタ(SDCx)
を備え、これらを使って各PWM
出力に別々のデューティ サイクルを設定できます(
注: 一部のデバイスは SDCx
レジスタを備えません)。
14.7.2.1
マスタ デューティサイクル(MDC)
マスタ タイムベース ジェネレータはマスタ デューティサイクルを制御します。MDCSビット
(PWMCONx<8>)
は、PWMxHおよびPWMxL
出力を、両方ともPWM
マスタ デューティサイ クル レジスタ(MDC)
で制御するのか、それともPWM
プライマリ デューティサイクル(PDCx)
レジスタとPWM
セカンダリ デューティサイクル(SDCx)
レジスタを使って別々に制御するの かを指定します。MDC
レジスタを使うと、複数のPWM
ジェネレータで1
つのデューティサイクル レジスタを 共有する事ができます。これにより、複数のデューティサイクル レジスタを更新する場合に比 べてCPU
のオーバーヘッドを軽減できます。14.7.2.2
プライマリ デューティサイクル(PDCx)
ITB
ビット(PWMCONx<9>)
を「1」にセットした場合、独立タイムベースはプライマリ デュー ティサイクルを制御します。PDCx
レジスタは、プライマリPWM
出力(PWMxH)
信号のデュー ティサイクル値を設定する入力レジスタです。図
14-39:
プライマリ デューティサイクルのコンペア動作PDCx Register PMTMR
Compare Logic PWMx Signal
0 15
15
MUX
MDC Register MDCS Select
0 1
CLK
15
0
0
<=
Note:独立出力モードの場合、PDCxはPWMxHのみに影響します。
14.7.2.3
セカンダリ デューティサイクル(SDCx)
ITB
ビットを「1」にセットした場合、PWMCONxレジスタ内の独立タイムベースがセカンダ リ デューティサイクル レジスタ( SDC x)
を制御します。SDCxレジスタは、セカンダリPWM
出力
(PWMxL)
信号のデューティサイクル値を設定する入力レジスタです。図
14-40:
セカンダリ デューティサイクルのコンペアデューティサイクルは式14-3を使って計算できます。
式
14-3: MDC、PDCx、SDCx
の計算MDC、 PDCx、 SDCx
レジスタに書き込むマスタ デューティサイクル、プライマリ デューティサイクル、セカンダリ デューティサイクルの値は、式14-3に基づいて計算します。
Note:
一部のデバイスはSDCx
レジスタを備えていません。詳細は各デバイス データシート内の「高速
PWM」を参照してください。
Note 1:
デューティサイクル値が周期値以上である場合、信号のデューティサイクルは100%です。
2:
デッドタイム補償を無効にしている場合、条件[PDCx > ((ALTDTRx/2) -1)]
を満た さないと、PWMxHはHIGH
を出力し続けます。3:
条件[PDCx > (ALTDTRx + DTRx - 1]
を満たさないと、下記のいずれかまたは両方 の結果が生じる可能性があります。a) デッドタイムが生じない b) PWMxH
はHIGH
を出力し続けるSDCx Register STMRx
Compare Logic PWMx Signal
15 0
15
MUX
MDC Register MDCS Select
0 1
Clk
15
0
0
<=
Note:独立出力モードの場合、SDCxはPWMxLのみに影響します。
MDC, PDCx, and SDCx FOSC
FPWM⋅PWM Input Clock Prescaler
---⋅Desired Duty Cycle
=
FPWM
= PWM
周波数FOSC
= システム オシレータ出力
PWM Input Clock Prescaler
= PCLKDIV<2:0>
ビット(PTCON<2:0>)
で定義した値 Desired Duty Cycle = 0~1
の値高速 PWM 14
14.7.2.4
デューティサイクル分解能PWM
デューティサイクルのビット分解能は、式14-4(エッジアライン モードの場合)
と式14-5( センターライン モードの場合 )
を使って計算できます。式
14-4:
エッジアライン モードのビット分解能の計算式
14-5:
センターアライン モードのビット分解能の計算例
14-43: PWM
デューティサイクルの選択例
14-44: PWM
デューティサイクルの初期化Bit Resolution 2 FOSC
FPWM⋅PWM Input Clock Prescaler
---= log
Bit Resolution 2 FOSC
FPWM⋅PWM Input Clock Prescaler⋅2
---= log
PWMCON1bits.MDCS = 0; /* PDCx/SDCx provides duty cycle value */
PWMCON1bits.MDCS = 1; /* MDC provides duty cycle value */
/* Initialize PWM Duty Cycle Value */
PDC1 = 2404;/* Independent Primary Duty Cycle is 50% of the period */
SDC1 = 2404;/* Independent Secondary Duty Cycle is 50% of the period */
MDC = 2404;/* Master Duty Cycle is 50% of the period */