GR-SKURAでMTUのコンペアマッチ時に割込みが入るようにしたいと思っております。MTU3のMTIOC3A端子(P17)からPWMモード1で指定したパルス信号は出るのですが、割り込みで記述したIO7からは出力がありません。作成したプログラムに何か誤りがあれば、ご教授いただければと思います。
開発環境:e2studio「sakura-sketch-v223-e2v7.zip」をインポートして使用。
interrupt_handlers.c --> void INT_Excep_MTU3_TGIA3(void){ } をコメントアウト
※以下、gr_sketch.cppに記述したプログラムです
#include <Arduino.h>#include <iodefine_gcc63n.h>#include <rx63n/interrupt_handlers.h>
int OUT = 0;
void init_MTU(void){
startModule(MstpIdMTU3); // ストップ状態 解除
MTU.TSTR.BYTE = 0x00; // MTUのTCNT動作停止 MTU.TRWER.BIT.RWE = 1; // タイマーリードライト許可レジスタ 許可 MTU3.TCNT = 0x0000; // TCNTクリア
MPC.PWPR.BIT.B0WI = 0; // プロテクト MPC.PWPR.BIT.PFSWE = 1; // 解除
MPC.P17PFS.BIT.PSEL = 0x01; // P17 --> MTIOC3A に設定
MPC.PWPR.BIT.PFSWE = 0; // プロテクト MPC.PWPR.BIT.B0WI = 1; // 設定
PORT1.PMR.BIT.B7 = 1; // P17は周辺機能として使用
MTU3.TCR.BIT.TPSC = 1; // カウンタクロック: PCLK/4 = 48MHz / 4 = 12MHz MTU3.TCR.BIT.CKEG = 0; // 立ち上がりエッジでカウント MTU3.TCR.BIT.CCLR = 1; // TGRAのコンペアマッチでTCNTクリア MTU.TSYR.BIT.SYNC3 = 0; // MTU3は独立動作
MTU3.TMDR.BIT.MD = 2; // PWMモード1 MTU3.TMDR.BIT.BFA = 1; // TGRAとTGRCレジスタはバッファ動作
MTU3.TIORH.BIT.IOA = 2; // 初期状態でLOW出力 周期コンペアマッチでHIGH出力 MTU3.TIORH.BIT.IOB = 1; // 初期状態でLOW出力 デューティコンペアマッチでLOW出力
MTU3.TGRA = 12000; // 周期 12000 / 12MHz = 1ms MTU3.TGRC = 12000; // TGRA バッファ MTU3.TGRB = 6000; // Duty
MTU3.TIER.BIT.TGIEA = 1; // タイマ割り込み許可
IPR(MTU3, TGIA3) = 2; // TGIA3の割り込み優先度を2に設定 IEN(MTU3, TGIA3) = 1; // TGIA3の割り込みを有効化 MTU.TSTR.BIT.CST3 = 1; // カウントスタート}
void INT_Excep_MTU3_TGIA3(void){ OUT = ~OUT; digitalWrite(7, OUT);}
void setup(){ pinMode(7,OUTPUT); init_MTU();}
void loop(){
}