レジスタ 14- 24: LEBDLYx: リーディング エッジ ブランキング遅延レジスタ
14.4 アーキテクチャの概要
14.6.3 冗長 PWM 出力モード
冗長
PWM
出力モードでは、高速PWM
モジュールの各PWM
ピンペア(PWMxH
とPWMxL)
で、同じシングルエンドの
PWM
信号を2
つ出力できます。このモードでは、PDCx
レジスタを使っ てデューティサイクルを指定します。この出力モードの場合、ユーザ アプリケーションでオー バーライド値を指定しない限り、2
本のPWM
出力ピンは同じPWM
信号を出力します。各冗長PWM
モードのPWM
出力と設定用サンプルコードを図14-23~図14-30および例14-14~例 14-29に示します。図
14-23:
冗長PWM
モード – 独立デューティサイクル/
独立位相、固定プライマリ周期、エッジアラインNote:
以降の各図とサンプルコードに記載されている機能とレジスタは、一部のデバイスでは利用できない場合があります。詳細は各デバイス データシート内の「高速
PWM」を参照してください。
PTPER
PHASE1 = 0 PHASE2 PHASE3
PDC1 PDC2
PDC3 PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
Start of PWM Cycle
PHASEx PWMxHとPWMxLの位相
PDCx PWMxHとPWMxLのデューティサイクル PTPER PWMxHとPWMxLの周期
高速 PWM 14
例
14-22:
冗長PWM
モード – 独立デューティサイクル/
独立位相、固定プライマリ周期、エッジアライン図
14-24:
冗長PWM
モード – 独立デューティサイクル/
独立位相、固定セカンダリ周期、エッジアライン/* Set PWM Period on Primary Time Base */
PTPER = 1000;
/* Set Phase Shift */
PHASE1 = 0;
PHASE2 = 100;
PHASE3 = 200;
/* Set Duty Cycles */
PDC1 = 150;
PDC2 = 200;
PDC3 = 400;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Redundant */
IOCON1 = IOCON2 = IOCON3 = 0xC400;
/* Set Primary Time Base, Edge-Aligned Mode and Independent Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0000;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
STPER
PHASE1 = 0 PHASE2 PHASE3
PDC1 PDC2
PDC3 PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
Start of PWM Cycle
PHASEx PWMxHとPWMxLの位相
PDCx PWMxHとPWMxLのデューティサイクル STPER PWMxHとPWMxLの周期
例
14-23:
冗長PWM
モード – 独立デューティサイクル/
独立位相、固定セカンダリ周期、エッジアライン図
14-25:
冗長PWM
モード – マスタ デューティサイクル/
可変位相、固定プライマリ周期、エッジアライン/* Set PWM Period on Secondary Time Base */
STPER = 1000;
/* Set Phase Shift */
PHASE1 = 0;
PHASE2 = 100;
PHASE3 = 200;
/* Set Duty Cycles */
PDC1 = 150;
PDC2 = 200;
PDC3 = 400;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Redundant */
IOCON1 = IOCON2 = IOCON3 = 0xC400;
/* Set Secondary Time Base, Edge-Aligned Mode and Independent Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0008;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
PTPER
PHASE1 = 0 PHASE2 PHASE3
MDC PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
MDC MDC Start of
PWM Cycle
PHASEx PWMxHとPWMxLの位相
MDC PWMxHとPWMxLのデューティサイクル PTPER PWMxHとPWMxLの周期
高速 PWM 14
例
14-24:
冗長PWM
モード – マスタ デューティサイクル/
可変位相、固定プライマリ周期、エッジアライン図
14-26:
冗長PWM
モード – マスタ デューティサイクル/
可変位相、固定セカンダリ周期、エッジアライン/* Set PWM Period on Primary Time Base */
PTPER = 1000;
/* Set Phase Shift */
PHASE1 = 0;
PHASE2 = 100;
PHASE3 = 200;
/* Set Duty Cycles */
MDC = 400;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Redundant */
IOCON1 = IOCON2 = IOCON3 = 0xC400;
/* Set Primary Time Base, Edge-Aligned Mode and Master Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0100;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
STPER
PHASE1 = 0 PHASE2 PHASE3
MDC PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
MDC MDC Start of
PWM Cycle
here:
PHASEx PWMxHとPWMxLの位相
MDC PWMxHとPWMxLのデューティサイクル STPER PWMxHとPWMxLの周期
例
14-25:
冗長PWM
モード – マスタ デューティサイクル/
可変位相、固定セカンダリ周期、エッジアライン図
14-27:
冗長PWM
モード – 独立デューティサイクル/
独立周期、位相シフトなし、エッジアライン/* Set PWM Period on Secondary Time Base */
STPER = 1000;
/* Set Phase Shift */
PHASE1 = 0;
PHASE2 = 100;
PHASE3 = 200;
/* Set Duty Cycles */
MDC = 400;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Redundant */
IOCON1 = IOCON2 = IOCON3 = 0xC400;
/* Set Secondary Time Base, Edge-Aligned Mode and Master Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0108;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
PWM1H PWM1L PWM2H PWM2L PWM3H PWM3L
PDC1 PDC2 PDC3 PHASE1 PHASE2 PHASE3
Start of PWM Cycle
PHASEx PWMxHとPWMxLの周期
PDCx PWMxHとPWMxLのデューティサイクル
高速 PWM 14
例
14-26:
冗長PWM
モード – 独立デューティサイクル/
独立周期、位相シフトなし、エッジアライン図
14-28:
冗長PWM
モード – マスタ デューティサイクル/
独立周期、位相シフトなし、エッジアライン /* Set PWM Periods on PHASEx Registers */PHASE1 = 800;
PHASE2 = 900;
PHASE3 = 1000;
/* Set Duty Cycles */
PDC1 = 200;
PDC2 = 300;
PDC3 = 400;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Redundant */
IOCON1 = IOCON2 = IOCON3 = 0xC400;
/* Set Independent Time Bases, Edge-Aligned Mode and Independent Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0200;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
PWM1H PWM1L PWM2H PWM2L PWM3H PWM3L
MDC PHASE1 PHASE2 PHASE3
Start of PWM Cycle
PHASEx PWMxHとPWMxLの周期
MDC PWMxHとPWMxLのデューティサイクル
例
14-27:
冗長PWM
モード – マスタ デューティサイクル/
独立周期、位相シフトなし、エッジアライン図
14-29:
冗長PWM
モード – 独立デューティサイクル/
独立周期、位相シフトなし、センターアライン/* Set PWM Periods on PHASEx Registers */
PHASE1 = 800;
PHASE2 = 900;
PHASE3 = 1000;
/* Set Duty Cycles */
MDC = 200;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Redundant */
IOCON1 = IOCON2 = IOCON3 = 0xC400;
/* Set Independent Time Bases, Edge-Aligned Mode and Master Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0300;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
PDC1
PDC2
PDC3
PHASE1 PHASE2 PHASE3 PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
Start of PWM Cycle
Complete PWM1H and PWM1L Cycle
here:
PHASEx PWMxHとPWMxLの周期
PDCx PWMxHとPWMxLのデューティサイクル
高速 PWM 14
例
14-28:
冗長PWM
モード – 独立デューティサイクル/
独立周期、位相シフトなし、センターアライン図
14-30:
冗長PWM
モード – マスタ デューティサイクル/
独立周期、位相シフトなし、センターアライン/* Set PWM Periods on PHASEx Registers */
PHASE1 = 1000;
PHASE2 = 900;
PHASE3 = 800;
/* Set Duty Cycles */
PDC1 = 400;
PDC2 = 300;
PDC3 = 200;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Redundant */
IOCON1 = IOCON2 = IOCON3 = 0xC400;
/* Set Independent Time Bases, Center-Aligned Mode and Independent Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0204;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
MDC
MDC
PHASE1 PHASE2 PHASE3 PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
MDC Start of
PWM1H Cycle
Complete PWM1H and PWM1L Cycle
PHASEx PWMxHとPWMxLの周期
MDC PWMxHとPWMxLのデューティサイクル
例
14-29:
冗長PWM
モード – マスタ デューティサイクル/
独立周期、位相シフトなし、セン ターアライン表14-2に、各種
PWM
モードにおけるPWM
レジスタの機能を示します。表
14-2:
相補、プッシュプル、冗長出力モードにおけるレジスタの機能機能
PWMCONx
の設定 ピンMDCS ITB MTBS PWMxH PWMxL
PWM
デューティ サイクル0 x x
PDCx PDCx
1 x x
MDC MDC
PWM
位相シフト x 0 xPHASEx PHASEx
PWM
周期 x x 0PTPER PTPER
x x 1
STPER STPER
x 1 x
PHASEx PHASEx
凡例
:
x = ドントケア/* Set PWM Periods on PHASEx Registers */
PHASE1 = 1000;
PHASE2 = 900;
PHASE3 = 800;
/* Set Duty Cycles */
MDC = 200;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Redundant */
IOCON1 = IOCON2 = IOCON3 = 0xC400;
/* Set Independent Time Bases, Center-Aligned Mode and Master Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0304;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
高速 PWM 14 14.6.4 完全独立 PWM 出力モード
完全独立
PWM
出力モード(PMOD = 11)
では、2つのPWM
出力(PWMxH
とPWMxL)
に異な るデューティサイクルを持たせる事ができます。PDCxレジスタがPWMxH
出力のデューティ サイクルを指定し、SDCxレジスタがPWMxL
出力のデューティサイクルを指定します。加え て、PWMxHおよびPWMxL
出力のそれぞれに異なる周期を持たせる事も、互いの位相関係を シフトする事もできます。• ITB =
1の時、PHASExレジスタはPWMxH
出力のPWM
周期を指定し、SPHASExレジスタは
PWMxL
出力のPWM
周期を指定します。• ITB =
0の時、PHASExレジスタはPWMxH
出力の位相シフトを指定し、SPHASExレジスタは
PWMxL
出力の位相シフトを指定します。図
14-31:
独立PWM
モード – 独立デューティサイクル/
独立位相、固定プライマリ周期、エッジアラインNote:
以下の各図とサンプルコードに記載されている機能とレジスタは、一部のデバイスでは利用できない場合があります。詳細は各デバイス データシート内の「高速
PWM」を参照してください。
Note:
独立タイムベースモード(ITB = 1)
では、PWMxH出力とPWMxL
出力の間の位相 関係は不定となります。PTPER
PHASE1 = 0 SPHASE1 PHASE2 SPHASE2
PHASE3 SPHASE3
PDC1 SDC1
PDC2
SDC2 PDC3
SDC3 PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
Start of PWM Cycle
PHASEx PWMxHの位相 SPHASEx PWMxLの位相
PDCx PWMxHのデューティサイクル
SDCx PWMxLのデューティサイクル
PTPER PWMxHとPWMxLの周期
例
14-30:
独立PWM
モード – 独立デューティサイクル/
独立位相、固定プライマリ周期、エッジアライン図
14-32:
独立PWM
モード – 独立デューティサイクル/
独立位相、固定セカンダリ周期、エッジアライン/* Set PWM Period on Primary Time Base */
PTPER = 1000;
/* Set Phase Shift */
PHASE1 = 0;
SPHASE1 = 100;
PHASE2 = 200;
SPHASE2 = 300;
PHASE3 = 400;
SPHASE3 = 500;
/* Set Duty Cycles */
PDC1 = 100;
SDC1 = 200;
PDC2 = 300;
SDC2 = 400;
PDC3 = 500;
SDC3 = 600;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Independent */
IOCON1 = IOCON2 = IOCON3 = 0xCC00;
/* Set Primary Time Base, Edge-Aligned Mode and Independent Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0000;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
STPER
PHASE1 = 0 SPHASE1 PHASE2 SPHASE2
PHASE3 SPHASE3
PDC1 SDC1
PDC2
SDC2 PDC3
SDC3 PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
Start of PWM Cycle
PHASEx PWMxHの位相 SPHASEx PWMxLの位相
PDCx PWMxHのデューティサイクル SDCx PWMxLのデューティサイクル STPER PWMxHとPWMxLの周期
高速 PWM 14
例
14-31:
独立PWM
モード – 独立デューティサイクル/
独立位相、固定セカンダリ周期、エッジアライン図
14-33:
独立PWM
モード – マスタ デューティサイクル/
可変位相、固定プリマリ周期、エッジアライン/* Set PWM Period on Secondary Time Base */
STPER = 1000;
/* Set Phase Shift */
PHASE1 = 0;
SPHASE1 = 100;
PHASE2 = 200;
SPHASE2 = 300;
PHASE3 = 400;
SPHASE3 = 500;
/* Set Duty Cycles */
PDC1 = 100;
SDC1 = 200;
PDC2 = 300;
SDC2 = 400;
PDC3 = 500;
SDC3 = 600;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Independent */
IOCON1 = IOCON2 = IOCON3 = 0xCC00;
/* Set Secondary Time Base, Edge-Aligned Mode and Independent Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0008;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
PTPER
PHASE1 = 0 SPHASE1 PHASE2 SPHASE2
PHASE3 SPHASE3
MDC PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
MDC MDC MDC MDC MDC Start of
PWM Cycle
PHASEx PWMxHの位相 SPHASEx PWMxLの位相
MDC PWMxHとPWMxLのデューティサイクル PTPER PWMxHとPWMxLの周期
例
14-32:
独立PWM
モード – マスタ デューティサイクル/
可変位相、固定プリマリ周期、エッジアライン図
14-34:
独立PWM
モード – マスタ デューティサイクル/
可変位相、固定セカンダリ周期、エッジアライン/* Set PWM Period on Primary Time Base */
PTPER = 1000;
/* Set Phase Shift */
PHASE1 = 0;
SPHASE1 = 100;
PHASE2 = 200;
SPHASE2 = 300;
PHASE3 = 400;
SPHASE3 = 500;
/* Set Duty Cycles */
MDC = 300;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Independent */
IOCON1 = IOCON2 = IOCON3 = 0xCC00;
/* Set Primary Time Base, Edge-Aligned Mode and Master Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0100;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
STPER
PHASE1 = 0 SPHASE1 PHASE2 SPHASE2
PHASE3 SPHASE3
MDC PWM1H
PWM1L PWM2H PWM2L PWM3H PWM3L
MDC MDC MDC MDC MDC Start of
PWM Cycle
PHASEx PWMxHの位相 SPHASEx PWMxLの位相
MDC PWMxHとPWMxLのデューティサイクル STPER PWMxHとPWMxLの周期
高速 PWM 14
例
14-33:
独立PWM
モード – マスタ デューティサイクル/
可変位相、固定セカンダリ周期、エッジアライン/* Set PWM Period on Secondary Time Base */
STPER = 1000;
/* Set Phase Shift */
PHASE1 = 0;
SPHASE1 = 100;
PHASE2 = 200;
SPHASE2 = 300;
PHASE3 = 400;
SPHASE3 = 500;
/* Set Duty Cycles */
MDC = 300;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Independent */
IOCON1 = IOCON2 = IOCON3 = 0xCC00;
/* Set Secondary Time Base, Edge-Aligned Mode and Master Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0108;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;
図
14-35:
独立PWM
モード – 独立デューティサイクル/
独立周期、位相シフトなし、エッジアライン例
14-34:
独立PWM
モード – 独立デューティサイクル/
独立周期、位相シフトなし、エッジアラインPWM1H PWM1L PWM2H PWM2L PWM3H PWM3L
PDC1 SDC1 PDC2 SDC2 PDC3 SDC3 PHASE1 SPHASE1 PHASE2 SPHASE2 PHASE3 SPHASE3
Start of PWM Cycle
PHASEx PWMxHの周期 SPHASEx PWMxLの周期
PDCx PWMxHのデューティサイクル SDCx PWMxLのデューティサイクル
/* Set PWM Periods on PHASEx Registers */
PHASE1 = 800;
SPHASE1 = 900;
PHASE2 = 1000;
SPHASE2 = 1100;
PHASE3 = 1200;
SPHASE3 = 1300;
/* Set Duty Cycles */
PDC1 = 200;
SDC1 = 300;
PDC2 = 400;
SDC2 = 500;
PDC3 = 600;
SDC3 = 700;
/* Set Dead Time Values */
DTR1 = DTR2 = DTR3 = 0;
ALTDTR1 = ALTDTR2 = ALTDTR3 = 0;
/* Set PWM Mode to Independent */
IOCON1 = IOCON2 = IOCON3 = 0xCC00;
/* Set Independent Time Bases, Edge-Aligned Mode and Independent Duty Cycles */
PWMCON1 = PWMCON2 = PWMCON3 = 0x0200;
/* Configure Faults */
FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
/* 1:1 Prescaler */
PTCON2 = 0x0000;
/* Enable PWM Module */
PTCON = 0x8000;