ある機種RH850のコードにて、外部割込みの割込発生フラグのクリアをしていない箇所がありました。その機種の取説には割込発生フラグのクリアを行う記載があります。一般的に割込み発生後、割込発生フラグのクリアを行わないと次の割込みが発生しない ことが多々くあります。大抵と明確に取説にき記載されていません。試そうとしてもハードが固められていて自由に、外部割込みが発生できません。
このような場合は開発ボードで調べます。北斗電子のRH850F1KH-176pin :R7F7017093AFPボードで調べてみました。まず e2Stdio の自動コード生成で、INTP割込みを追加します。


これで一旦自動生成して、ユーザコードを追加します。割込ハンドラ: r_Config_INTC_intp0_interrupt は ベクタテーブルから直callされているので、割込発生フラグのクリアは無い状態です。


R7F7017093AFP の INTP0 は P0_1、pin19 です。 線をつけて手動でポートをGNDに落とします。特に問題なく連続検出できているみたいですね。

ここで自動生成コードを見てみます。ここで気づいたのですが、SFR 構成が試したかったRH850機種とと全然ちがいますね。

試したかったRH850機種は多分開発フェーズが古いようです。差を比較すると全然違うようでした。
項目 | RH850F1KH | 調査対象RH850 |
外部割込みの呼び名 | INTPx | IRQx |
外部割込エッジ設定レジスタ | FCLA0CTLx_INTPL | EXINTCTL |
外部割込発生フラグレジスタ | ICPx に含む | EXINTSTR |
外部割込発生クリアレジスタ | 無し。 | EXINTSTC |
割込設定レジスタ | ICPx | EICx IMRx |
ユーザ側で割込発生フラグクリアの実施 | エッジ検出時は自動。(取説に明記あり) | 外部割り込み処理フローに明記あり。 |
ユーザ側で発生クリアレジスタのダミーリードの実施 | 取説上は記載無し。 | 外部割り込み処理フローに明記あり。 |