ルネサスエレクトロニクス社のマイコンRX210を使用してPWM波形を出力するサンプルです。MTU3を使用してMTIOC3AとMTIOC3Cから信号を出力します。HighになるタイミングとLowになるタイミングをMTIOC3AではTGRA,TGRBで決め、MTIOC3CはTGRC,TGRDで決めます。このサンプルでは、カウンタのクリアはTGRBで行っています。
- #include "iodefine.h"
- #include <machine.h>
- #define PCLK 125 // 周辺機器のクロック設定 125kHz
- /*
- タイマの設定 MTU3
- */
- void initMTU3pwm(void)
- {
- SYSTEM.PRCR.WORD = 0x0A502;
- MSTP(MTU3) = 0; //MTU3 モジュールスタンバイ解除
- SYSTEM.PRCR.WORD = 0x0A500;
- /* 端子の設定 */
- PORTC.PODR.BIT.B7 = 0; // PC7 MTIOC3A 出力初期値
- PORTC.PDR.BIT.B7 = 1; // PC7 出力設定
- PORTC.PMR.BIT.B7 = 0; // PC7ポートとして使用
- PORTC.PODR.BIT.B6 = 0; // PC6 MTIOC3A 出力初期値
- PORTC.PDR.BIT.B6 = 1; // PC6 出力設定
- PORTC.PMR.BIT.B6 = 0; // PC6ポートとして使用
- MPC.PWPR.BIT.B0WI = 0; // PFSWE書き込み可
- MPC.PWPR.BIT.PFSWE = 1; // PFSレジスタへの書き込み可
- MPC.PC7PFS.BIT.PSEL = 1; // PC7をMTIOC3Aとして使用
- MPC.PC6PFS.BIT.PSEL = 1; // PC6をMTIOC3Cとして使用
- MPC.PWPR.BIT.PFSWE = 0; // PFSレジスタへの書き込み禁止
- PORTC.PMR.BIT.B7 = 1; // PC7周辺機器として使用
- PORTC.PMR.BIT.B6 = 1; // PC6周辺機器として使用
- /* MTUタイマの設定 */
- MTU.TSTR.BIT.CST3 = 0x00; //MTUカウント停止
- MTU3.TCR.BIT.TPSC = 0x00; // CLK PCLK/1 でカウント
- MTU3.TCR.BIT.CCLR = 0x02; //TCNT3はTGRBのコンペアマッチでクリア
- MTU3.TMDR.BIT.MD = 0x02; //タイマーPWMモード1
- // 出力波形の設定
- MTU3.TIORH.BIT.IOA = 0x05; // MTIOC3A 初期出力はHigh出力コンペアマッチでLow出力
- MTU3.TIORH.BIT.IOB = 0x06; // MTIOC3B 初期出力はHigh出力コンペアマッチでHigh出力
- MTU3.TIORL.BIT.IOC = 0x05; // MTIOC3C 初期出力はHigh出力コンペアマッチでLow出力
- MTU3.TIORL.BIT.IOD = 0x06; // MTIOC3D 初期出力はHigh出力コンペアマッチでHigh出力
- MTU3.TGRA = 0; // MTIOC3Aデューティー比
- MTU3.TGRB = 256; // MTU3 周波数
- MTU3.TGRC = 0; // MTIOC3Cデューティー比
- MTU3.TGRD = 256; // MTU3 周波数 MTU3.TGRBと同じ値に
- MTU3.TCNT = 0; //カウンタクリア
- MTU.TSTR.BIT.CST3 = 0x01; //タイマ動作
- }
- void main(void)
- {
- initMTU3pwm();
- MTU3.TGRA = 5; //LED D8の明るさ 0〜255
- MTU3.TGRC = 254; //LED D7の明るさ 0〜255
- while(1) {
- /* ハードウェアで波形出力するのでプログラムでは何もしなくてもよい */
- }
- }
※コメント投稿者のブログIDはブログ作成者のみに通知されます