[H8-ML(2555)] RE:多重割り込みが上手くいきませんが..?
From: Shinya HARAMAKI <haramaki@xxxxxxxxxxxxxxxx>
Date: 2002年12月12日(木)12時39分16秒
お騒がせしております。 みなさんこんにちは。 貴重なアドバイスを沢山頂きまし
てありがとうございます。

ひやした さんのアドバイスに従って、プログラムを修正しましたら問題が解決致し
ました。オシロで確認したところ、5msecの割り込み中に0.1msecの割り込みが入った
所は処理時間がその分長くなっておりました。

良く分かりませんが、一度割り込みを受け付けると同じレベルの割り込みは正しく受
け入れないような感じでしょうか? 3レベルとはプライオリティレベル0,レベル
1、NMIの事なのでしょうか?

因みに、プログラムは下記の通りでした。

#define EI1 asm("andc.b #0xbf,ccr")

main()
{
    ...
    SYSCR.BIT.UE=0;         /* use user bit for mask */
    INTC.IPRA.BIT.B2=1;     /* set ITU0 priority level 1 */
    EI;
    ...
}

void int_imia0(void)    /* 0.1msec interrupt */
{
   ...
   /* current control program. */
   ...
   ITU0.TSR.BIT.IMFA=0;
}

void int_imia1(void)    /* 5msec interrupt */
{
    EI1;
    ...
    /* velocity control program. */
    ...
    ITU1.TSR.BIT.IMFA=0;
}



on 02.12.12 10:34 AM, Hirashita at iced@xxxxxxxxxxxxxxx wrote:

> ひやしたです。
> 
>>  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)](起点)
 └[2551(U)]
   └[表示中]
     ├[2557(1)]
     └[2558(2)]


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


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