SH7216にて、IRQ0Fフラグが1ではないときに、不定期にIRQ0割り込みが呼ばれる

お世話になります。

問い合わせの現象はとしては、外部のINT信号なし、IRQ0フラグは0という状態でも
ベクタテーブルからIRQ0割り込みが不定期にコールされることです。
INT信号、IRQ0フラグの状態はオシロスコープで確認済です。

システムの仕様は、外部デバイス(バス接続)からのINT信号を/IRQ0 I/Oに入れ、
それを契機にIRQ0割り込みを発生させています。
また、他の割り込みについては、MTUのタイマ割り込みを使用しており、それ以外の割り込みは使用していません。
MTUのタイマ割り込みでIRQ0割り込みが呼ばれていないことは確認しています。

同じようは現象を経験された方、
回避方法などご教示お願い致します。

  • CPUボード自体のノイズ耐性とか大丈夫なんでしょうか?

    こちらについては、別部隊で確認しています。

    開発環境はまさかアセンブラではないですよね

    HEWでもコンパイラバージョンは?やCPUの選択

    ベアメタルのC言語です。

    Hew:4.08.0、コンパイラ: V.9.04 、CPU:SH2A-FPU(SH7216のため)

    ※Hewにアップデート版4.09.1があることは認知しています。

    本事案が他のルネサスユーザでご経験があるか?という期待を込めておりました。

    Hew、コンパイラ等の開発環境は別カットで確認中ですが、

    エラッタ等もないために開発環境でこのような事案が出る(発生させられる)ということも

    なかなか考えにくいと推察しております。

  • 本事案が他のルネサスユーザでご経験があるか?

    ちょっと誤解してたら申し訳ありません

    今では廃盤のSH7670を使用した経験があります

    ですのでSH7216ではないので、的外れだったかもしれません

    しかし非常に興味深い内容であったので投稿させていただきましたが

    たぶんこんな経験をされたかたというのは希有ではないでしょうか

    解決に至らなかったということで、力不足で申し訳ありませんでした。

  • 解決に至らなかったということで、力不足で申し訳ありませんでした。

    とんでもございません。
    稀な事象であるため、レスポンスを頂けないことも想定しておりました。

    お時間を割いて頂いてありがとうございました。

  • (一般的には?)プログラムの先頭の方でクロック設定をしてるかと思うのですが、

    その設定をコメントアウトしても、状況は変わらないでしょうか?

    SH7216は、クロック設定(分周比の変更)に関して、

    ・RAMでプログラムを実行する事

    ・分周比変更後周辺クロックで32クロック分のNOPを入れる

    等の事がハードウェアマニュアルに記載されています。(RAM実行というのが意外に面倒です)

    ROMに配置したプログラムで分周比を変えてしまっても、問題なく動作する事が多いですが、

    なんか変な挙動を示すケースもありました。

    分周比設定の問題である事が疑われる場合は、アプリケーションノート

    「SH7216/SH7239グループ CPG 動作周波数変更時の設定例」

    (ルネサスWebで、"an1182"で検索するとヒットします)に、サンプルコードがありますので、

    参照してみてください。

    今回の不具合とは関係が無いかも知れませんが、ちょっと気になりました。

  • th様

    ご回答ありがとうございます。

    SH7216は、クロック設定(分周比の変更)に関して、

    ・RAMでプログラムを実行する事

    ・分周比変更後周辺クロックで32クロック分のNOPを入れる

    等の事がハードウェアマニュアルに記載されています。(RAM実行というのが意外に面倒です)

    RAM実行は試せていませんが、クロック設定後に周辺クロックで32クロック分のNOPを追加することは実行しました。

    しかし、現象は変わりませんでした。

  • >システムの仕様は、外部デバイス(バス接続)からのINT信号を/IRQ0 I/Oに入れ、
     
     「バス接続」と言うと外部メモリのデータバスのような感じだけど、単に/IRQ0 がコネクタに出ていると言う事ですか?
     
    >INT信号、IRQ0フラグの状態はオシロスコープで確認済です。
     
     IRQ0フラグをオシロで確認とはどう言う事でしょう。
     
     オシロのトリガーの掛け方を知っていますか?
     ノーマルとオートの使い分けが分かりますか?
     単掃引の方法を知っていますか?
     ノイズ除去の方法を知っていますか?
     
     /IRQ0 と書いて有るのは負論理の割り込み信号ですか?
    立下りエッジで割り込みが掛かるのですか?
     
     INT信号を出す側はどのような仕様ですか?オープン・コレクタ?
     そうだとしたら、プルアップ抵抗を入れていますか?
     
     INT 信号を外せますか?外せるなら外して、 /IRQ0 をHかLに固定して割り込みが掛かるか調べます。

  • リカルド様

    ご回答ありがとうございます。

     「バス接続」と言うと外部メモリのデータバスのような感じだけど、単に/IRQ0 がコネクタに出ていると言う事ですか?
     
    >INT信号、IRQ0フラグの状態はオシロスコープで確認済です。

    外部メモリのデータバスです。

    >INT信号、IRQ0フラグの状態はオシロスコープで確認済です。
     
     IRQ0フラグをオシロで確認とはどう言う事でしょう。

    IRQ0フラグの値(0 or 1)をIOポートに出力して確認しました。

     INT信号を出す側はどのような仕様ですか?オープン・コレクタ?
     そうだとしたら、プルアップ抵抗を入れていますか?

    プルアップ抵抗は入ってます。

    INT 信号を外せますか?外せるなら外して、 /IRQ0 をHかLに固定して割り込みが掛かるか調べます。

    INT信号を入れないと、割り込みは掛かりません。

  • ●「バス接続」と言うと外部メモリのデータバスのような感じだけど、単に/IRQ0 がコネクタに出ていると言う事ですか?
     
    >INT信号、IRQ0フラグの状態はオシロスコープで確認済です。
    外部メモリのデータバスです。

     INT 信号をデータバスからソフト的に読み込み、/IRQ0 の有るポートに書き込み、割り込みを起動させているのですか?
     入出力が同時に出来るポートですか?
     汎用I/Oポートに出力して、/IRQ0 に繋いでいるのですか?

     ソフト敵に割り込みを起動する機能は無いのですか。
     データバスから INT 信号を読むなら、割り込み処理の必要は無いんだけれど???

     ポートに出力して /IRQ0 を起動しているのなら、その部分を止めれば不定期に入るかどうか判断出来ると思うのですが


    ●INT 信号を外せますか?外せるなら外して、 /IRQ0 をHかLに固定して割り込みが掛かるか調べます。
    INT信号を入れないと、割り込みは掛かりません。

     ハード的に割り込みは掛かっているが、オシロで見逃していると言う事ではないでしょうか。
     トリガーを1回だけ受け付けて、1回だけ描画するモードにします。
     短いパルスでも受け付けるように、周波数帯域は広げておきます。