つちだです。 AKI−3052のTIOCA−0(CN1−10)に外部からクロックを入力さ せHiの時間を計測させています。 接続内容:TIOCA−0(CN1-10)に外部クロック入力、P5−0にLED1、2 にLED2 LED1は、割り込み関数内で目標値より大きいならON、少ないならOFFさせ ています。 main関数内ではLED2を200msで点滅させようとしています。 ですが、一瞬だけ、LED2が点滅するだけでOFFしてしまう現象です。割り込 みでのLED1はちゃんとON/OFFしています。 (mainに戻ってきていない???) initITU(); を //initITU();にするば(実行させない)LED2の点滅は正 常です。 なぜ、一瞬だけになってしまうのか?教えてください。 下記がその内容です。 *割り込み 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} } *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.TSR.BYTE = 0x00; // 全割り込みフラグクリア ITU0.TCNT = 0x00; // カウントクリア ITU0.GRA = 0; // GRA初期値設定 ITU.TSTR.BIT.STR0 = 1; // ITU0スタート }