お騒がせしております。
> 例の図5.6を見る限りでは、プライオリティレベル0の割り込み中に
> Iビットをクリアすれば、同じレベルの割り込みも受け付けるように見えますね。
> ということは、割り込みルーチン内の任意の場所で割り込みの発生をポーリングして、
> 場合によっては同一レベルの割り込みをネストしたりもできるのでしょうね。
ひやしたさんのアドバイスをみてふと気づきましたが、最初に問題を提起したプログ
ラムで、5msecの割り込み中で0.1msecの割り込みを許可していますが、許可をする前
に、5msecの割り込み要因をクリヤしておかないと、0.1msecからの復帰後、5msecの
割り込みがまだ立っていますから、再度5msecの割り込みの頭から実行していたので
はないかと思いまして、次のようにプログラムを修正したら、見事簡単に動いてしま
いました。 ん〜〜何だったんだ... いろいろ勉強になりました。
void int_imia0(void) /* 0.1msec interrupt */
{
...
/* current control program. */
...
ITU0.TSR.BIT.IMFA=0;
}
void int_imia1(void) /* 5msec interrupt */
{
ITU1.TSR.BIT.IMFA=0; /* clear compare match flag */
EI;
...
/* velocity control program. */
...
}
on 02.12.12 0:56 PM, Hirashita at iced@xxxxxxxxxxxxxxx wrote:
> ひやしたです。
>
>> プログラムを修正しましたら問題が解決致しました。
>
> 良かったですね。
>
>> 一度割り込みを受け付けると同じレベルの割り込みは
>> 正しく受け入れないような感じでしょうか?
>
> 例の図5.6を見る限りでは、プライオリティレベル0の割り込み中に
> Iビットをクリアすれば、同じレベルの割り込みも受け付けるように見えますね。
> ということは、割り込みルーチン内の任意の場所で割り込みの発生をポーリングして、
> 場合によっては同一レベルの割り込みをネストしたりもできるのでしょうね。
>
>> 3レベルとはプライオリティレベル0,レベル1、NMIの事なのでしょうか?
>
> 5.4.1割り込み動作の流れ 表5.4
> によると3つの状態が有りますので、これを3レベルと表現しているのだと思います。
>
----------------------------------------------------------
HARAMAKI Shinya 原槙真也 〒836-8585 大牟田市東萩尾町150
TEL 0944-53-8683/FAX 8865 有明工業高等専門学校 機械工学科
==========================================================