フルーです。 > ソフト的になにか不十分なのでしょうか? 割り込み許可しているのに void INT_IMIB0(void) { /*sleep*/} とコーディングしていると、もしINT_IMIB0割り込みがノイズ等で 発生した場合には、上記のコードが呼び出されますが、 割り込みフラグをクリアーしていないので、永遠に呼び続けられます。 メインルーチンが回らなくなってしまいます。 もし、GRB割り込みを許可したいなら、 void INT_IMIB0(void) { ITU0.TSR.BIT.IMFB = 0; } っと書いておきましょう。 それから、内容によっては違いますが、一般的には 割り込みフラグのクリアータイミングは、割り込みルーチンの 最後に記述します。 void INT_IMIA0(void) { if(PA.DR.BIT.B2) // 立ち上がりエッジの場合 ITU0.TCNT = 0x00; // カウントをクリア else // 立ち下がりエッジの場合 cnt0 = ITU0.GRA; // 値をcnt0に記憶 if(cnt0>2000){LED1=1;}else{LED1=0} ITU0.TSR.BIT.IMFA = 0; // 割り込みフラグ解除 } それから、ITUの初期化ルーチンで > ITU0.TSR.BYTE = 0x00; // 全割り込みフラグクリア これではクリアーできません。 マニュアルに書かれているように、一端読み出してから、0を 書き込まないといけません。 ITU0.TSR.BYTE &= 0x00; フルー