RL78/G13 基本的な多重割り込み処理の操作方法

皆様、

初心者です。ご教示お願いします。

・外部のモメンタリSWに接続した割り込みP137端子(INTP0)と12bitインターバルタイマを使い、外部割り込みSWのチャタリング防止のプログラムを作成しました。

・INTP0で呼ばれる#pragmaで定義される割り込みルーチンプログラムの冒頭に、12bitインターバルタイマによるwait_25ms()を記述したところ、このwait_25ms()のHALT()で止まってしまいます。

・そこで、割り込みルーチンのwait_25ms()の代わりに、割り込みを使用しないNOP()を繰り替えすループを作成したところ(100ms程度?)、P137のSW動作はうまく行くようになりました。

お尋ねしたいのは、

(1)外部SWのチャタリング防止のウエイトのために、12bitインターバルタイマを使用するには、どうしたらよいのでしょうか?

(2)INTP0のデフォルト割り込み優先順位は"2"のようです(H/Wマニュアル)。インターバルタイマはこれより低い順位です。wait_25ms()の前に、EI()を入れ、後にDI()を挿入すればことたりるのでしょうか?

初歩的な内容ですが、よろしくお願いします。

Parents
  • チョコです。
    スイッチについては,いろんな人がコメントされているので,私はRL78の多重割り込みについて説明します。
    >(2)INTP0のデフォルト割り込み優先順位は"2"のようです
    これは,ディフォルト・プライオリティのことで,単に同時に発生した同じ優先度(下で説明)の割り込みのどれを受け付けるかを示すだけで,多重割り込みとは無関係です。
    多重割り込みの多重は,各割り込みに対して「優先順位指定フラグ・レジスタ」で指定する4レベルの優先順位を対象としたものです。ディフォルトでは,全ての割り込みはレベル3(最低優先度)になっており,優先的に処理させたい割り込みの優先順位を高く(レベル2~レベル0(最優先)のどれかに)変更します。その上で,優先順位の低い割り込み処理の先頭で割り込みを許可(EI();)します。
    通常は,割り込みが受け付けられると,割り込み禁止状態になり,それ以上は優先順位によらず割り込みは受け受けません。優先順位が低い割り込み処理の先頭で割り込みを許可することで,実行中の割り込みより優先順位が高い割り込みは受け付け可能になります。これが,多重割り込みです。
  • チョコさん
    いつもご指導ありがとうございます(簡易IICでもお世話になりました。現在動作中です)。

    はい。今回のスレッドの目的は、「多重割り込み処理」のことでした。
    さて、デフォルト・プライオリティは、H/Wマニュアルの割り込み優先順位に関する表16-1 (p828)で見つけた用語です。同表の注1を読んでも、割り込みの優先順位と認識し、多重割り込みの処理優先順位とは違うこととは考えませんでした。4レベルの優先順位については、これは別なページで記載があり、これとデフォルト・プライオリティの区別がつきませんでした。今回のチョコさんのコメントで違いが分かりました。

    4レベルの優先順位について、デフォルトではレベル3とのことですが、コード生成画面において、「優先順位」という選択肢があり、ここで指定することになっていますが、このデフォルトが"低"ということですね。これまであまり認識しておりませんでした。現在、取り組んでいるINTP0とITはいずれも"低"でした。これでは、通常では多重割り込みは不可ですね。

    引き続きご指導お願いいたします。
Reply
  • チョコさん
    いつもご指導ありがとうございます(簡易IICでもお世話になりました。現在動作中です)。

    はい。今回のスレッドの目的は、「多重割り込み処理」のことでした。
    さて、デフォルト・プライオリティは、H/Wマニュアルの割り込み優先順位に関する表16-1 (p828)で見つけた用語です。同表の注1を読んでも、割り込みの優先順位と認識し、多重割り込みの処理優先順位とは違うこととは考えませんでした。4レベルの優先順位については、これは別なページで記載があり、これとデフォルト・プライオリティの区別がつきませんでした。今回のチョコさんのコメントで違いが分かりました。

    4レベルの優先順位について、デフォルトではレベル3とのことですが、コード生成画面において、「優先順位」という選択肢があり、ここで指定することになっていますが、このデフォルトが"低"ということですね。これまであまり認識しておりませんでした。現在、取り組んでいるINTP0とITはいずれも"低"でした。これでは、通常では多重割り込みは不可ですね。

    引き続きご指導お願いいたします。
Children
No Data