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

冗長 PWM 出力モード

ドキュメント内 dsPIC33E FRM - Section #. Title (ページ 52-71)

レジスタ 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 PWMxHPWMxLの位相

PDCx PWMxHPWMxLのデューティサイクル PTPER PWMxHPWMxLの周期

高速 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 PWMxHPWMxLの位相

PDCx PWMxHPWMxLのデューティサイクル STPER PWMxHPWMxLの周期

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 PWMxHPWMxLの位相

MDC PWMxHPWMxLのデューティサイクル PTPER PWMxHPWMxLの周期

高速 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 PWMxHPWMxLの位相

MDC PWMxHPWMxLのデューティサイクル STPER PWMxHPWMxLの周期

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 PWMxHPWMxLの周期

PDCx PWMxHPWMxLのデューティサイクル

高速 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 PWMxHPWMxLの周期

MDC PWMxHPWMxLのデューティサイクル

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 PWMxHPWMxLの周期

PDCx PWMxHPWMxLのデューティサイクル

高速 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 PWMxHPWMxLの周期

MDC PWMxHPWMxLのデューティサイクル

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 x

PHASEx PHASEx

PWM

周期 x x 0

PTPER 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 PWMxHPWMxLの周期

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 PWMxHPWMxLの周期

高速 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 PWMxHPWMxLのデューティサイクル PTPER PWMxHPWMxLの周期

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 PWMxHPWMxLのデューティサイクル STPER PWMxHPWMxLの周期

高速 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;

ドキュメント内 dsPIC33E FRM - Section #. Title (ページ 52-71)

関連したドキュメント