こんにちは
ご回答ありがとうございます。大変助かります。
早速試させて頂きました。 ...しかし、状況は変わらないようです。
I/Oポートに割り込み処理の最初と最後に1/0を出力するようにして、オシロで確認し
ました。 最初の5msecの割り込み処理中に、0.1msecの割り込みが入ると0.1msec割
り込み終了後元の5msecのプログラムに戻っていないようです。 それでも0.1msecの
割り込みは続いています。 感ですが、何かスタックがおかしくなったようです。
また、5msecの割り込み終了前に 割り込み禁止を入れてみましたが、結果は×でし
た。
ん....何がおかしいのでしょうか? よくわかりませ〜〜ん。
void int_imia0(void) /* 0.1msec interrupt */
{
...
/* current control program. */
...
if(ITU0.TSR.BIT.IMFA==1) ITU0.TSR.BIT.IMFA=0;
}
void int_imia1(void) /* 5msec interrupt */
{
EI; /* not work ? */
...
/* velocity control program. */
...
DI /* improvement!, but not still work */
if((ITU1.TSR.BIT.IMFA) ITU1.TSR.BIT.IMFA=0;
}
on 02.12.11 10:13 PM, Takao Furumori at ta_ka@xxxxxxxxxxxxxxxx wrote:
> こんにちは。
>
> CPUはH8/3048ですか?
> その場合、割り込み終了時の割り込みフラグのクリアーは
>> ITU0.TSR.BIT.IMFA=0;
> ではなくて
> if( ITU0.TSR.BIT.IMFA == 1) ITU0.TSR.BIT.IMFA = 0;
> っと一度、空読みしなければ割り込みフラグをクリアー出来なかったと思います。