ひやしたです。
> 0.1msecのITU0コンペアマッチ割り込み(優先)と 5msecのITU1コンペアマッチ割
>り込みを使って制御プログラムを開発していますが、ITU1の割り込みの途中でEIを行
>うとプログラムがおかしな動き?になってしまいます。
> EIを入れなければ正しく動くのですが、ITU1の割り込み終了までITU0の割り込み処
>理が待たされてしまい、制御が上手く行えないのです。
参考になるかどうかわかりませんが、以前IRQ割り込みの処理が長くかかるときに
SCIの取りこぼしがあり、そのときに書いたコードです。
最終的にはITRONを導入してクリアしたので、もしかしたら
検証に問題があったかもしれないのですが、この時点では確か動いていたはず。
但しプロセッサは3067、開発環境はイエローソフトです。
ハードウェアの初期化云々をやるルーチンで
−−−−−−−−−−−−−−−−−−−−−−−−−
// この時点ではCCRのIビットはセット、UIは不定
#asm ORC.B #H'C0, CCR ; 全割り込み禁止
SYSCR &= ~0x08; // UIビットをマスクビットとして使用
INTC.IER |= 0x10; // IRQ4を許可
INTC.IPRB = 0x0E; // SCI0,1,2 の割り込み優先順位を上げる
#asm ANDC.B #H'3F, CCR ; 全割り込み許可
−−−−−−−−−−−−−−−−−−−−−−−−−−
てなことをやりまして、
/*************************************************************************
IRQ4割り込み
**************************************************************************/
void interrupt irq4()
{
INTC.ISR &= ~0x10;
#asm ANDC.B #H'BF, CCR ;レベル1割り込みを許可
nagai_syori(); //長い処理
}
とにかく、H8の多重割り込みの解説を何度も読み返した記憶があります・・・。