CS+ RX63N 全割り込みを禁止するには

RX63初心者のIKUZOです、全割り込みを、禁止するような方法はありませんでしょうか?

  • CC-RX では clrpsw_i() で PSW の割り込み許可ビット(Iビット)を0に設定することで割り込み禁止にできます。

    > 全割り込みを、禁止するような方法はありませんでしょうか?

    NMI は禁止できません。
  • こんにちは

    fujita nozomuさんの説明に補足します。

    NMI端子割り込みを含むノンマスカブル割り込み初期設定では、「ノンマスカブル割り込み禁止」となっています。
    ノンマスカブル割り込み許可レジスタ(NMIER)で割り込み許可と設定すると、それ以後は割り込みを禁止することができません。
    NMIERの各ビットは1回だけ”1”をかけます。”0”(割り込み禁止)は書くことができません。
    マニュアルの410ページ、15.6 ノンマスカブル割り込みの動作説明 を読んでみてください。

    一般割り込みで、PSWのIPL[3:0]を1111(優先レベル15)に設定すると割り込みは受け付けられません。
  • fujita nozomuさん
    回答ありがとうございます、NMI はまーしかたないとは思います。
  • SAさん
    お世話になります、NMI端子割り込みというのは、そう簡単にはできないと思いますが、「一般割り込みで、PSWのIPL[3:0]を1111(優先レベル15)に設定すると割り込みは受け付けられません」を一か所設定するだけで一般割り込みを全て禁止できるということですよね set_psw(0xFF);等で禁止できるということですよね。
  • こんな感じ?
    clrpsw_i(); //割り込み禁止
    setpsw_i(); //割り込み許可
  • > set_psw(0xFF);等で禁止できるということですよね。

    PSW は32bit幅のレジスタであり、set_psw(0xFF); では PSW の内容は 0x000000ff になります。
    PSW の内容は『RX63Nグループ、RX631グループユーザーズマニュアル ハードウェア編』「2.2.2.4プロセッサステータスワード(PSW)」等を参照してください。
  • > 「一般割り込みで、PSWのIPL[3:0]を1111(優先レベル15)に設定すると割り込みは受け付けられません」を一か所設定するだけで一般割り込みを全て禁止できるということですよね set_psw(0xFF);等で禁止できるということですよね。

    PSW の割り込みマスクレベルを変更する __set_ipl() という関数もあります。
  • こんにちは、

    set_ipl()で割り込み優先レベルの設定が出来ます。
    RX ファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ
    コンパイラパッケージ の293ページ、
    void set_ipl(signed long level) を見てみてください。
    マニュアルから
      set_ipl(7);    // PSW.IPL に7 を設定 (0~15の値が設定できるよです)
  • NAKAさん
    「clrpsw_i(); //割り込み禁止」これでいいんですか、簡単ですね、先ほどのは私が間違っていたのですね、これでいきます、ありがとうございます。
  • fujita nozomuさん
    「「2.2.2.4プロセッサステータスワード(PSW)」等を参照してください。」確認してみます。