CCWO Embedded Space

CCWOの日々の開発を発信するブログ

Renesas RX631 PWM

モーター制御等さまざまな分野で必要不可欠なPWMを出力していきます。
PE2をMTIOC4Aに設定し、1kHzのPWMを出力していきます。
以下の手順で設定していきます。
1.消費電力低減機能の解除
2.ピンの設定
3.MTU2の設定
4.ユーザ関数の定義(今回、関数は定義しないので省略)

はじめに
1.消費電力低減機能の解除
2.ピンの設定
を一度にみていきましょう。
hardware_setup.cにて以下のMTU2_initialize関数を作成し、HardwareSetup関数で呼びましょう。

MTU2_initialize関数

void MTU2_initialize(void){
	// MTU4
	SYSTEM.PRCR.WORD = 0xA502;		// Release Protect
	MSTP(MTU4) = 0;					// Wake up MTU4
	SYSTEM.PRCR.WORD = 0xA500;		// Protect
	// Set MPC
	PORTE.PMR.BIT.B2 = 1;			// Set PE2: Peripheral
	MPC.PWPR.BIT.B0WI = 0;			// Release protect
	MPC.PWPR.BIT.PFSWE = 1;
	MPC.PE2PFS.BIT.PSEL = 1;		// Set PE2: MTIOC4A
	MPC.PWPR.BIT.PFSWE = 0;			// Protect
	MPC.PWPR.BIT.B0WI = 1;
	// PWM Settings
	MTU.TOER.BIT.OE4A = 1;			// Enable MTIOC4A Output
	MTU4.TCR.BIT.TPSC = 4;			// PCLK/256
	MTU4.TCR.BIT.CKEG = 0;			// Count rising edge
	MTU4.TCR.BIT.CCLR = 1;			// Clear TCNT count when compare match TGRA
	MTU4.TMDR.BIT.MD = 2;			// MTU4 PWMモード1
	MTU4.TMDR.BIT.BFA = 0;			// TGRA, TGRC normal mode
	MTU4.TMDR.BIT.BFB = 0;			// TGRB, TGRD normal mode
	MTU4.TIORH.BIT.IOA = 6;			// Compare Output High
	MTU4.TIORH.BIT.IOB = 7;			// Compare Output Low
	MTU4.TGRA = 29999;				// 1kHz
	MTU4.TGRB = 14999;				// Duty 50%
	MTU4.TCNT = 0;					// Clear MTU4 count
	MTU.TSTR.BIT.CST4 = 1;			// Start MTU4 count
}

まず、SCI、Timer割り込み同様に、消費電力低減機能のアクセスロックを解除し、消費電力低減機能を解除し、再度ロックします。
つぎに、SCI同様にMPCのアクセスロックを解除し、ピンに周辺機能を割り当て、再度ロックし、下準備を完了します。

3.MTU2の設定
f:id:CCWO:20160819232643p:plain
f:id:CCWO:20160819232915p:plain
データシートp.834の図23.25と図23.26を参考に設定します。
ここで、MTU2の中にはMTU0~6のユニットがあり、今回はMTU4をPWMモード1で使用します。
まず、PWMモードの設定手順例を参考に設定していきます。
・カウンタクロックの設定
→使用するクロックの分周比を設定します。
・カウンタクリアの要因の選択
→カウンタクロックがクリアされるソースを選択します。TGRAまたはTGRB。
・PWMモードの設定
→PWMモード1に設定します。
・波形出力レベルの選択
→どのように波形を出すか設定します。今回は初期HIGHに設定し、TGRBのコンペアマッチでLOW出力に、TGRAのコンペアマッチでHIGH出力。
・TGRの設定
→実際に値を設定し、PWM周波数とDuty比を設定します。今回はTGRB操作することでDuty比、TGRAを操作することでPWM周波数を設定します。ただし常にTGRA>TGRBを満たす。
・カウント動作開始
→実際にカウントスタートさせ動作を開始します。
(ただし、今回MTIOC4Aは初期状態では出力が禁止されているため、TOERレジスタのOE4Aビットを1にし、出力を許可しておきます。)

4.ユーザ関数の定義
今回は用意しないため省略します。

これでPWMの設定は完了しました。実際に書き込みオシロスコープ等でPE2の波形を観測し、PWMが出ていれば成功です!
PWM波形の一例を載せておきます。
f:id:CCWO:20160819234732j:plain

20160818の記事