RX62マイコンでMTUを使う.
使ったのはAKI-RX62マイコンボード
HEW+FDT
参考
http://memo--randum.blogspot.com/2011/07/blog-post.html
ここでは後々使えそうなオーバーフロー割り込みを使ってみる.
(※まだ検証してない.とりあえずできそうな気がするやつ)
メイン文
RX62N_MTUOVF.c
割り込み部分
intprg.c
余裕があれば検証する.
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
#include "iodefine.h"
void intCMT0()
{
static int count = 0;
static int pattern = 0x0f;
static int flag = 0;
//1msec
//CMT0.CMCR.BIT.CMIE = 0;
CMT.CMSTR0.BIT.STR0 = 0; // CMTカウンタ停止
CMT0.CMCNT = 0; // カウントクリア
count= count+1;
if(count > 1000)
{
PORT2.DDR.BIT.B0 = flag;
PORTA.DDR.BYTE = pattern;
flag = ~flag;
pattern = ~pattern;
count = 0;
}
CMT0.CMCR.BIT.CMIE = 1;
CMT.CMSTR0.BIT.STR0 = 1; // CMTカウンタ開始
}
int main(void)
{
long t;
// PORTA
PORTA.DR.BYTE = 0xff; // 出力端子に設定
PORTA.DDR.BYTE = 0x00; // 初期値
// PORT2
PORT2.DR.BYTE = 0xff; // 出力端子に設定
PORT2.DDR.BYTE = 0x00; // 初期値
SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; //モジュールストップ状態の解除 CMTユニット0
//SYSTEM.MSTPCRA.BIT.MSTPA8 = 0; // MTUユニット1
CMT.CMSTR0.BIT.STR0 = 0; // CMTカウンタ停止
CMT0.CMCR.BIT.CMIE = 0; // コンペアマッチ割り込み停止
CMT0.CMCR.BIT.CKS = 0; // φ/8 = 12,500,000
CMT0.CMCNT = 0; // カウントクリア
CMT0.CMCOR = 12500; // 周期設定
ICU.IER[0x03].BIT.IEN4 = 1; // 割り込み要求許可
ICU.IPR[0x04].BIT.IPR = 10; // 割り込み優先レベル
CMT0.CMCR.BIT.CMIE = 1; // コンペアマッチ割り込み許可
CMT.CMSTR0.BIT.STR0 = 1; // CMTカウンタ開始
//set_psw(0x00010000); // #define PSW_init 0x00010000 // PSW bit pattern
//PORT2.DDR.BYTE = 0xff;
while(1)
{
/*
for(t=0; t<6000000; t++); // wait about 1sec
PORT2.DDR.BYTE = 0x01; // LED1
PORTA.DDR.BYTE = 0x01; // LED1
for(t=0; t<6000000; t++); // wait about 1sec
PORT2.DDR.BYTE = 0x02; // LED2
PORTA.DDR.BYTE = 0x02; // LED2
*/
}
return 0;
}
void Excep_CMTU0_CMT0(void){ }
// CMTU0_CMT0
void Excep_CMTU0_CMT0(void)
{
intCMT0();
}