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

Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]"

Copied!
77
0
0

読み込み中.... (全文を見る)

全文

(1)

Rev. 0.00

ルネサス エレクトロニクス株式会社

ルネサス半導体トレーニングセンター

2013/08/02

(2)

コンテンツ

タイマRDの概要

PWM機能のプログラム・サンプル紹介

(3)
(4)

タイマRDの機能、モード

使用チャネル

動作モード

チャネル0, チャネル1

独立で使用

タイマモード インプットキャプチャ機能

タイマモード アウトプットコンペア機能

タイマモード PWM機能

チャネル0、チャネル1

組み合わせて使用

リセット同期PWMモード

相補PWMモード

PWM3モード

(5)

同期動作

設定

クロック

設定

チャネル0

チャネル1

TRDGRA1

TRDGRB1

f

HOCO

TRDCLK

f

CLK

/X

クロック

設定

f

HOCO

TRDCLK

f

CLK

/X

TDR1

TRDIOB1

TRDIOC1

TRDIOD1

TRDIOA1

TRDGRC1

TRDGRD1

TRDGRA0

TRDGRB0

TDR0

TRDIOB0

TRDIOC0

TRDIOD0

TRDIOA0

TRDGRC0

TRDGRD0

○チャネルを組み合わせて使用 – リセット同期PWM、相補同期PWM、PWM3

PWM機能の動作概要

○チャネル毎に使用 – PWM機能

3本

3本

3相

計6本(正相、逆相)

PWM出力

カウンタ

出力変化点

バッファ

周期

カウンタ

出力変化点

バッファ

周期

2本

(6)
(7)

PWMとは

 PWM(Pulse Width Modulation:パルス幅変調)はパルス波のデューティ比を変化さ

せて変調する変調方法

 デューティ比を変化させることで、電圧や電流を制御できる

デューティ

波形例

平均電流

キャリア周期

アクティブ期間

小さい

大きい

非アクティブ期間

(8)

仕様

タイマRD0のPWM機能を使用し、周期100μsのPWM波形を3本出力します。

出力する信号は以下のとおりです。

・TRDIOB0端子出力:Lレベル出力期間(25μs) → Hレベル出力期間(75μs)

・TRDIOC0端子出力:Lレベル出力期間(50μs) → Hレベル出力期間(50μs)

・TRDIOD0端子出力:Lレベル出力期間(75μs) → Hレベル出力期間(25μs)

パルス出力強制遮断入力機能は禁止し、1周期経過ごとに割り込みを発生させます。

また、PWM波形を連続出力します。

<設定条件>

・カウントソースにfCLK(16MHz)を

使用します。

PWM周期:100μs

周期設定値

出力変化点設定値3

出力変化点設定値2

出力変化点設定値1

TRDIOB0端子出力

TRDIOC0端子出力

25μs

75μs

50μs

(9)

R_Systeminit

CPU初期設定

R_CGC_Create()

return

周辺I/Oリダイレクション

機能禁止

タイマRD初期設定

R_TMR_RD0_Create()

hdwinit

周辺機能初期設定

R_Systeminit()

return

マスカブル割り込み許可

マスカブル割り込み禁止

_@cstart

初期設定関数

hdwinit()

main()

_@cend

初期設定のフロー

(10)

R_TMR_RD0_Create

タイマRDへのクロック供給許可

タイマRD0のカウント設定

タイマRD0割り込み禁止

タイマRD割り込み優先レベル設定

タイマRDモードレジスタ設定

タイマRD PWM機能選択

・TRDGRD0レジスタ機能 : ジェネラルレジスタ

・TRDGRC0レジスタ機能 : ジェネラルレジスタ

・TRDIOD0端子 : PWM機能

・TRDIOC0端子 : PWM機能

・TRDIOB0端子 : PWM機能

タイマRDの設定フロー(1/3)

(11)

タイマRDへのクロック供給許可

 周辺イネーブル・レジスタ1(PER1)

(12)

タイマRD0のカウント設定

 タイマRDスタートレジスタ(TRDSTR)

(13)

タイマRD0割り込み処理禁止

 割り込みマスク・フラグ・レジスタ(MK2H)

(14)

タイマRD0割り込み要求フラグクリア

 割り込み要求フラグ・レジスタ(IF2H)

 対応する割り込み要求の発生または命令の実行によりセット

 リセット信号発生時または命令の実行によりクリア

(15)

割り込み優先レベルの設定

 優先順位指定フラグ・レジスタ(PR02H, PR12H)

 PR0xyレジスタとPR1xyレジスタを組み合わせて,対応するマスカブル割り込み

の優先順位レベルを設定

(16)

タイマRDモードレジスタ設定

 タイマRDモードレジスタ(TRDMR)

 ジェネラルレジスタの機能選択や同期の許可/禁止を設定

(17)

タイマRD PWM機能選択

 タイマRD PWM機能選択レジスタ(TRDPMR)

 タイマRDの端子をPWMとして使用するか、それ以外の機能として使用するかを

設定する

(18)

void R_TMR_RD0_Create(void)

{

TRD0EN = 1;

TRDSTR &= 0xfe;

TRDMK0 = 1;

TRDIF0 = 0;

TRDPR10 = 1;

TRDPR00 = 1;

TRDMR |= 0x00;

TRDPMR |= 0x07;

TRDDF0 = 0x00;

TRDOER1 &= 0xf0;

TRDOER1 |= 0x01;

TRDOCR |= 0x00;

TRDCR0 |= 0x20;

TRDIER0 = 0x01;

TRDPOCR0 = 0x07;

TRDGRA0 = 1599;

TRDGRB0 = 399;

TRDGRC0 = 799;

TRDGRD0 = 1199;

P1 &= 0x1f;

タイマRDの設定関数(1/3)

(19)

パルス強制遮断禁止

タイマRD出力設定

初期出力レベル設定

・全端子パルス強制遮断禁止

・PWM出力端子は出力許可

・それ以外の端子は出力禁止

タイマRDの設定フロー(1/3)

タイマRDの設定フロー(3/3)

・出力端子は全て非アクティブレベル

タイマRD制御レジスタ設定

コンペア一致割り込み設定

・TRDGRA0レジスタとのコンペア一致でTRD0レジスタクリア

・1周期経過時に割り込み発生

タイマRDの設定フロー(2/3)

(20)

パルス強制遮断禁止

 タイマRDデジタルフィルタ機能選択レジスタ(TRDDF0)

 PWM機能では、端子出力の強制遮断の許可/禁止、強制遮断時の出力レ

ベルを設定

DFB

DFD

PENB1

DFA

DFC

PENB0

TRDIOD

端子パルス強制遮断制御

TRDIOC 端子パルス強制遮断制御

TRDIOB

端子パルス強制遮断制御

R/W

0

0

強制遮断禁止

R/W

0

1

ハイインピーダンス出力

1

0

L出力

1

1

H出力

これらのモードで対応する端子をタイマRDの出力ポートとして使用しない場合、強制遮断禁止の

00Bに設定してください。また、カウント停止中に設定してください。

INTP

ELC

によって強制遮断

→ 出力を変更

(21)

タイマRD出力設定

 タイマRD出力マスタ許可レジスタ1(TRDOER1)

(22)

初期出力レベル設定

 タイマRD出力制御レジスタ(TRDOCR)

(23)

タイマRD制御レジスタ設定

-カウンタクリア選択- タイマRD制御レジスタ(TRDCR0)

 カウンタクリア、クロックエッジ、カウントソースを設定

TRD0 カウンタ

(24)

タイマRD制御レジスタ設定

-カウントソース選択- タイマRD制御レジスタ(TRDCR0)

(25)

コンペア一致割り込み設定

 タイマRD割り込み許可レジスタ(TRDIER0)

(26)

void R_TMR_RD0_Create(void)

{

TRD0EN = 1;

TRDSTR &= 0xfe;

TRDMK0 = 1;

TRDIF0 = 0;

TRDPR10 = 1;

TRDPR00 = 1;

TRDMR |= 0x00;

TRDPMR |= 0x07;

TRDDF0 = 0x00;

TRDOER1 &= 0xf0;

TRDOER1 |= 0x01;

TRDOCR |= 0x00;

TRDCR0 |= 0x20;

TRDIER0 = 0x01;

TRDPOCR0 = 0x07;

TRDGRA0 = 1599;

TRDGRB0 = 399;

TRDGRC0 = 799;

TRDGRD0 = 1199;

P1 &= 0x1f;

タイマRDの設定関数(2/3)

(27)

出力レベル選択

PWM周期設定

PWM出力変化点設定

・全ての出力はアクティブレベルH

・PWM周期 : 100μs

タイマRDの設定フロー(2/3)

・TRDGRB0出力変化点 : 25μs

・TRDGRC0出力変化点 : 50μs

・TRDGRD0出力変化点 : 75μs

ポートレジスタ設定

・"0"を出力

・出力モード

return

タイマRDの設定フロー(3/3)

(28)

出力レベル選択

 タイマRD PWM機能出力レベル制御レジスタ(TRDPOCR0)

 PWMを出力する場合のアクティブレベルを設定

(29)

PWM周期のカウント設定

m

m+1カウント

周期100μs

)

1

(

1

m

fk

PWM周期

(

1

)

]

[

16

1

]

[

100

m

MHz

s

μ

m

1599

m=1599

 タイマRDジェネラルレジスタA0(TRDGRA0)

 TRDGRA0にPWMの周期を設定

(30)

PWM出力変化点のカウント設定

Lレベル期間50μs

Lレベル期間75μs

 タイマRDジェネラルレジスタB0、C0、D0(TRDGRB0、TRDGRC0、TRDGRD0)

 PWM機能では、出力変化点を設定

399

1

25

16

[MHz]

[

s]

n

799

1

50

16

[MHz]

[

s]

o

99

1

1

1

75

16

[MHz]

[

s]

p

(31)

ポートレジスタ設定

 ポート・レジスタ(Pxx)

 ポートの出力ラッチの値を設定

 ポート・モード・レジスタ(PMxx)

(32)

void R_TMR_RD0_Create(void)

{

TRD0EN = 1;

TRDSTR &= 0xfe;

TRDMK0 = 1;

TRDIF0 = 0;

TRDPR10 = 1;

TRDPR00 = 1;

TRDMR |= 0x00;

TRDPMR |= 0x07;

TRDDF0 = 0x00;

TRDOER1 &= 0xf0;

TRDOER1 |= 0x01;

TRDOCR |= 0x00;

TRDCR0 |= 0x20;

TRDIER0 = 0x01;

TRDPOCR0 = 0x07;

TRDGRA0 = 1599;

TRDGRB0 = 399;

TRDGRC0 = 799;

TRDGRD0 = 1199;

P1 &= 0x1f;

タイマRDの設定関数(3/3)

(33)
(34)
(35)
(36)

timer_rd0_start

タイマRD0割り込み許可

コンペア一致フラグAクリア

main

タイマRDカウント開始設定

timer_rd0_start()

タイマRD0割り込み要求フラグ

クリア

タイマRD0カウント開始

mainのフロー

(37)

timer_rd0_start

return

タイマRD0割り込み許可

コンペア一致フラグAクリア

タイマRD0割り込み要求フラグ

クリア

タイマRD0カウント開始

タイマRDのカウント開始関数

void timer_rd0_start(void)

{

unsigned char work = 0;

work = TRDSR0;

TRDSR0 = work & 0x1E;

TRDIF0 = 0;

TRDMK0 = 0;

TRDSTR |= 0x01;

}

(38)

タイマRD割り込み関数

__interrupt static void r_tmr_rd0_interrupt(void)

{

unsigned char work = 0;

work = TRDSR0;

TRDSR0 = work & 0x1E;

}

(39)
(40)

相補PWMとは

正相のPWM出力信号と逆相のPWM出力信号の組合せ

短絡防止時間をもつ

正相

(41)

仕様

相補PWM モードを使用し、350μs周期のPWM波形の正相を3本、逆相を3本の計6

本、PWMの1/2周期ごとの反転出力を1本出力します。出力するPWM波形は4種類で

す。10パルス出力したタイミングで波形を切り替えます。PWM波形は、波形1→波形

2→波形3→波形2→波形4→波形1の順に繰り返し出力します。

パルス出力強制遮断入力機能は禁止し、1周期経過ごとに割り込みを発生させます。

また、PWM波形を連続出力し、出力レベルのアクティブはL、初期出力レベルはHとし

ます。

<設定条件>

• カウントソースはfCLK(16MHz)

を使用します。

(42)

PWM波形1の仕様

正相出力:非アクティブレベルH期間(50μs)→アクティブレベルL期間(250μs)→

非アクティブレベルH期間(50μs)

逆相出力:アクティブレベルL期間(25μs)→短絡防止時間(25μs)→

非アクティブレベルH期間(250μs)→短絡防止時間(25μs)→

アクティブレベルL期間(25μs)

(43)

初期設定のフロー

R_Systeminit

CPU初期設定

R_CGC_Create()

return

周辺I/Oリダイレクション

機能禁止

タイマRD初期設定

R_TMR_RD0_Create()

hdwinit

周辺機能初期設定

R_Systeminit()

return

マスカブル割り込み許可

マスカブル割り込み禁止

_@cstart

初期設定関数

hdwinit()

main()

_@cend

(44)
(45)

タイマRD1のカウント設定

 タイマRDスタートレジスタ(TRDSTR)

(46)

タイマRD1割り込み処理禁止

 割り込みマスク・フラグ・レジスタ(MK2H)

(47)

タイマRD0割り込み要求フラグクリア

 割り込み要求フラグ・レジスタ(IF2H)

 対応する割り込み要求の発生または命令の実行によりセット

 リセット信号発生時または命令の実行によりクリア

(48)

void R_TMR_RD0_Create(void)

{

TRD0EN = 1;

TRDSTR &= (uint8_t)~0x03;

TRDMK0 = 1;

TRDIF0 = 0;

TRDMK1 = 1;

TRDIF1 = 0;

TRDPR10 = 1;

TRDPR00 = 1;

TRDMR = 0xE0;

TRDFCR |= 0x02;

TRDDF0 = 0x00;

TRDDF1 = 0x00;

TRDOER1 = 0x01;

TRDCR0 = 0x00;

TRDCR1 = 0x00;

TRDIER0 = 0x01;

TRDIER1 = 0x00;

TRDOCR = 0x00;

TRD0 = 400;

TRDGRA0 = 3198;

TRDGRB0 = 799;

TRDGRA1 = 799;

TRDGRB1 = 799;

TRDGRD0 = 799;

TRDGRC1 = 799;

TRDGRD1 = 799;

タイマRDの設定関数(1/4)

(49)

タイマRDモードレジスタ設定

タイマRD機能制御レジスタ設定

パルス強制遮断禁止

・バッファレジスタの設定

・出力レベル:初期出力"H"、アクティブレベル"L"

(正相、逆相ともに)

タイマRDの設定フロー(1/4)

タイマRDの設定フロー(3/4)

・全端子のパルス強制遮断禁止

タイマRD出力設定

・TRDIOA0端子のみ出力禁止

タイマRDの設定フロー(2/4)

(50)

タイマRDモードレジスタ設定

-ジェネラルレジスタの機能選択- タイマRDモードレジスタ(TRDMR)

 ジェネラルレジスタの機能選択や同期の許可/禁止を設定

出力変化点を変更するためには、これらに対応する

バッファレジスタを使う必要がある。

(51)

タイマRDモードレジスタ設定

-タイマの同期動作設定- タイマRDモードレジスタ(TRDMR)

(52)

タイマ

RD機能制御

-出力レベル選択- タイマRD機能制御レジスタ(TRDFCR)

(53)

タイマ

RD機能制御

-コンビネーションモード選択- タイマRD機能制御レジスタ(TRDFCR)

 出力レベルの選択、PWM機能を使用したモードの選択

(54)

パルス強制遮断禁止

 タイマRDデジタルフィルタ機能選択レジスタ(TRDDF0、TRDDF1)

 PWM機能では、端子出力の強制遮断の許可/禁止、強制遮断時の出力レ

ベルを設定

DFB

DFD

PENB1

DFCK1

DFA

DFC

PENB0

DFCK0

TRDIOD端子

TRDIOC端子

TRDIOB端子

TRDIOA端子

パルス強制遮断制御

R/W

0

0

強制遮断禁止

R/W

0

1

ハイインピーダンス出力

1

0

L出力

1

1

H出力

これらのモードで対応する端子をタイマRDの出力ポートとして使用しない場合、強制遮断禁止の

(55)

タイマRD出力設定

 タイマRD出力マスタ許可レジスタ1(TRDOER1)

(56)

void R_TMR_RD0_Create(void)

{

TRD0EN = 1;

TRDSTR &= (uint8_t)~0x03;

TRDMK0 = 1;

TRDIF0 = 0;

TRDMK1 = 1;

TRDIF1 = 0;

TRDPR10 = 1;

TRDPR00 = 1;

TRDMR = 0xE0;

TRDFCR |= 0x02;

TRDDF0 = 0x00;

TRDDF1 = 0x00;

TRDOER1 = 0x01;

TRDCR0 = 0x00;

TRDCR1 = 0x00;

TRDIER0 = 0x01;

TRDIER1 = 0x00;

TRDOCR = 0x00;

TRD0 = 400;

TRDGRA0 = 3198;

TRDGRB0 = 799;

TRDGRA1 = 799;

TRDGRB1 = 799;

TRDGRD0 = 799;

TRDGRC1 = 799;

TRDGRD1 = 799;

タイマRDの設定関数(2/4)

(57)
(58)

タイマRD制御レジスタ設定

 タイマRD制御レジスタ(TRDCR0、TRDCR1)

(59)

コンペア一致割り込み設定

 タイマRD割り込み許可レジスタ(TRDIER0、TRDIER1)

 インプットキャプチャ/コンペア一致割り込みの許可/禁止を設定

チャネル0

チャネル1

(60)

TRDIOC0端子出力レベル設定

 タイマRD出力制御レジスタ(TRDOCR)

 パルスの初期出力レベルを設定

(61)

タイマRDカウントソース設定

コンペア一致割り込み設定

タイマRDの設定フロー(2/4)

TRDIOC0端子出力レベル設定

タイマRDの設定フロー(4/4)

void R_TMR_RD0_Create(void)

{

TRD0EN = 1;

TRDSTR &= (uint8_t)~0x03;

TRDMK0 = 1;

TRDIF0 = 0;

TRDMK1 = 1;

TRDIF1 = 0;

TRDPR10 = 1;

TRDPR00 = 1;

TRDMR = 0xE0;

TRDFCR |= 0x02;

TRDDF0 = 0x00;

TRDDF1 = 0x00;

TRDOER1 = 0x01;

TRDCR0 = 0x00;

TRDCR1 = 0x00;

TRDIER0 = 0x01;

TRDIER1 = 0x00;

TRDOCR = 0x00;

TRD0 = 400;

TRDGRA0 = 3198;

TRDGRB0 = 799;

TRDGRA1 = 799;

TRDGRB1 = 799;

TRDGRD0 = 799;

TRDGRC1 = 799;

TRDGRD1 = 799;

P1 &= 0x80;

PM1 &= 0x80;

タイマRDの設定関数(3/4)

(62)
(63)

相補PWMのカウント設定値の考え方

1/2周期

(64)

短絡防止時間の設定

 タイマRDカウンタ0(TRD0)

 相補PWMモードでは短絡防止時間を設定

p

fk

1

短絡防止時間

p

MHz

16

1

s

25μ

p

400

p:短絡防止時間

400

25μs

(65)

PWM周期設定

3198

2

)

2

(

1

m

p

fk

PWM周期

(

2

400

)

2

16

1

350

m

MHz

s

m

3198

 タイマRDジェネラルレジスタA0(TRDGRA0)

 相補PWMモードではPWM周期を設定

1/2周期

(66)

PWM出力変化点計算方法

799

799

799

 タイマRDジェネラルレジスタB0、A1、B1(TRDGRB0、TRDGRA1、TRDGRB1)

 相補PWMモードではPWM出力変化点を設定

n:出力変化点

)

1

(

1

n

fk

PWM出力変化点

(

1

)

16

1

0

5

n

MHz

s

n

799

50μs

(67)

バッファレジスタ設定

 タイマRDジェネラルレジスタD0、C1、D1(TRDGRD0、TRDGRC1、TRDGRD1 )

 バッファレジスタとして使用するため、TRDGRB0、TRDGRA1、TRDGRB1と

同じ値を設定

(68)

ポートレジスタ設定

 ポート・レジスタ(Pxx)

 ポートの出力ラッチの値を設定

 ポート・モード・レジスタ(PMxx)

(69)

void R_TMR_RD0_Create(void)

{

TRD0EN = 1;

TRDSTR &= (uint8_t)~0x03;

TRDMK0 = 1;

TRDIF0 = 0;

TRDMK1 = 1;

TRDIF1 = 0;

TRDPR10 = 1;

TRDPR00 = 1;

TRDMR = 0xE0;

TRDFCR |= 0x02;

TRDDF0 = 0x00;

TRDDF1 = 0x00;

TRDOER1 = 0x01;

TRDCR0 = 0x00;

TRDCR1 = 0x00;

TRDIER0 = 0x01;

TRDIER1 = 0x00;

TRDOCR = 0x00;

TRD0 = 400;

TRDGRA0 = 3198;

TRDGRB0 = 799;

TRDGRA1 = 799;

TRDGRB1 = 799;

TRDGRD0 = 799;

TRDGRC1 = 799;

TRDGRD1 = 799;

P1 &= 0x80;

PM1 &= 0x80;

タイマRDの設定関数(4/4)

(70)
(71)
(72)
(73)
(74)

timer_rd0_start

タイマRD0割り込み許可

コンペア一致フラグAクリア

タイマRD0割り込み要求フラグ

クリア

タイマRD0カウント開始

タイマRDのカウント開始関数

void timer_rd0_start(void)

{

unsigned char work = 0;

work = TRDSR0;

TRDSR0 = work & 0x1E;

TRDIF0 = 0;

TRDMK0 = 0;

TRDSTR |= 0x03;

}

(75)

タイマRD0割り込みのフロー

A

B

(76)

タイマRD0割り込み

関数

__interrupt static void r_tmr_rd0_interrupt(void)

{

unsigned char work = 0;

work = TRDSR0;

TRDSR0 = work & 0x1E;

int_cnt++;

if (int_cnt >= 10) {

int_cnt = 0x00;

output_chg_mode++;

if(output_chg_mode >= 5) {

output_chg_mode = 0;

}

switch (output_chg_mode) {

case 0:

TRDGRD0 = 1999;

TRDGRC1 = 1999;

TRDGRD1 = 1999;

break;

case 1:

TRDGRD0 = 0;

TRDGRC1 = 0;

TRDGRD1 = 0;

break;

__interrupt static void r_tmr_rd0_interrupt(void)

{

case 2:

TRDGRD0 = 1999;

TRDGRC1 = 1999;

TRDGRD1 = 1999;

break;

case 3:

TRDGRD0 = 3600;

TRDGRC1 = 3600;

TRDGRD1 = 3600;

break;

case 4:

TRDGRD0 = 799;

TRDGRC1 = 799;

TRDGRD1 = 799;

break;

default:

output_chg_mode = 4;

TRDGRD0 = 799;

TRDGRC1 = 799;

TRDGRD1 = 799;

break;

A

A

(77)

参照

関連したドキュメント

機能(目的) 設定方法 画面で見るマニュアル 参照先.. 便利な使い方.

県との地域間の複数大学交流に向けて準備を進めて いる中国紅蘇省人民対外友好協会訪問団 (団長・沈 チン 才 サイ 元 ゲン

(*) OPJTAG 自動設定機能:デバイスのデバッグ時の接続インタフェース種別は、オプションバイトレジスタの

機能名 機能 表示 設定値. トランスポーズ

①アプリをアンインストール スタート > 設定 > アプリ > アプリと機能 > Docan Browser5. ②関連ファイル削除(1)

・大都市に近接する立地特性から、高い県外就業者の割合。(県内2 県内2 県内2/ 県内2 / / /3、県外 3、県外 3、県外 3、県外1/3 1/3

[r]

① Google Chromeを開き,画面右上の「Google Chromeの設定」ボタンから,「その他のツール」→ 「閲覧履歴を消去」の順に選択してください。.