[H8-ML(2551)] RE:多重割り込みが上手くいきませんが..?
From: "Hirashita" <iced@xxxxxxxxxxxxxxx>
Date: 2002年12月12日(木)10時34分50秒
ひやしたです。

> 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の多重割り込みの解説を何度も読み返した記憶があります・・・。

スレッド概略
[2526(R)](起点)
 └[2544(U)]
   └[表示中]
     ├[2552(1)]
     └[2555(2)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]