つちだです。
IMFBの割り込みを禁止にしたら
ITU0.TIER.BYTE = 0x01; // IMFA割り込みのみ許可
main関数内でのLED2の点滅も正常動作しました。
でもなぜ?
ソフト的になにか不十分なのでしょうか?
ITUの設定、割り込み設定
IMFBのTIOCB−0(PA−3)の端子の処理?
*割り込み
extern unsigned int cnt0;
/***********************************************************/
void INT_IMIA0(void)
{
ITU0.TSR.BIT.IMFA = 0; // 割り込みフラグ解除
if(PA.DR.BIT.B2) // 立ち上がりエッジの場合
ITU0.TCNT = 0x00; // カウントをクリア
else // 立ち下がりエッジの場合
cnt0 = ITU0.GRA; // 値をcnt0に記憶
if(cnt0>2000){LED1=1;}else{LED1=0}
}
void INT_IMIB0(void)
{ /*sleep*/}
*Main
unsigned int cnt0; // 信号のHighの時間を記憶
char data[16]; // 表示文字列を記憶
/***********************************************************/
void main(void)
{
cnt0 = 0; // cnt0初期化
PA.DDR = 0x00; // Port-Aは入力設定
P5.DDR = 0xff; // Port-5は出力設定
initITU(); // ITU初期化
while( 1 ){
LED2=1;wait_time4(200); //タイマー4使用
LED2=0;wait_time4(200);
}
}
/***********************************************************/
void initITU(void)
{
ITU.TSTR.BYTE = 0x00; // ひとまず全タイマー停止
ITU.TSNC.BYTE = 0x00; // 全タイマーは独立動作
ITU.TMDR.BYTE = 0x00; // ITUはすべて通常動作
ITU.TFCR.BYTE = 0x00; // ITU3,4およびGRA3,4,GRB3,4は通常動作
ITU.TOER.BYTE = 0x00; // ITU3,4による端子出力は禁止
ITU.TOCR.BYTE = 0xff; // 外部トリガ禁止
ITU0.TCR.BYTE = 0x83; // クロックの1/8で動作。TCNTのクリア禁止
ITU0.TIOR.BYTE = 0xdf; // 両エッジでGRAへインプットキャプチャ
//ITU0.TIER.BYTE = 0x03; // IMFA,IMFBによる割り込み許可 OVIE禁止
ITU0.TIER.BYTE = 0x01; // IMFA割り込みのみ許可■修正
ITU0.TSR.BYTE = 0x00; // 全割り込みフラグクリア
ITU0.TCNT = 0x00; // カウントクリア
ITU0.GRA = 0; // GRA初期値設定
ITU.TSTR.BIT.STR0 = 1; // ITU0スタート
}