割り込みのエッジ判定について

CubeSuite+のシミュレータを用いて、V850ES/JH3-Hを評価しています。

割り込みINTP00の有効エッジを「両エッジ」とすれば、立ち上がりエッジと立ち下がりエッジどちらかが来れば割り込みがかかることは確認できましたが、割り込みハンドラの中でどちらのエッジで割り込まれたのかを判別することができません。

立ち上がりエッジと立ち下がりエッジどちらで割り込まれたか知る方法はないのでしょうか。

今回使用する通信ICでは、割り込み信号の立ち上がり時と立ち下がり時で別の処理をする必要があるためです。
(割り込みを使わない方法もあるのですか...)

ご存知の方、教えていただけないでしょうか。
以上、よろしくお願いいたします。
  • スタッフのチョコです。

    両エッジ検出の場合の割り込みエッジ確認には,兼用になっているポートの状態を確認してください。

    ポートの兼用になっているビットが0ならば立下りエッジを検出,1ならば立ち上がりエッジ検出と判断してください。
  • チョコさん

    シミュレータ上で確認したところ、おっしゃるとおりでした。

    ご回答、感謝いたします。
    ありがとうございました。
  • チョコさん
    ありがとうございます。
    参照させて頂きました。
  • 両エッジの発生間隔は十分に長いですか?
    また、エッジの度に割り込み動作は毎回必須ですか?

    兼用ポートの値を見るのが確実ですが、↓エッジの次は必ず↑エッジなので、
    先回のエッジの方向と必ず反対のエッジで検出するなら、
    兼用ポートの値と記憶している内容の比較というのも信頼性向上に役立つかもしれません。
  • わわいです
    まあ、割り込みルーチンでレベルを見て、ってのはエッジの間隔が十分に長い、というのを前提としないと破綻しますのでご注意を。
    その割り込みの信号にチャタリングが乗る、とかになるとヤバイですなー
  • Kekero様
    おはようございます、お世話になっております。
    使用しているMCUはV850ではないのですが、チョコ様の的確なご回答がありましたので、参照させていただきました。
    > 両エッジの発生間隔は十分に長いですか?
     はい。十分に長いです。

    > エッジの度に割り込み動作は毎回必須ですか?
     はい。人間の操作による不定期な扉の開閉操作による信号を即座にうけるため、まず割り込みは必要です。
     そして、扉が開かれた回数を数えることと、扉の開閉状態の両方を得る必要があるので、両方のエッジを
     使おうと考えました。

            割り込み(↓/↑)
              |
            ポートの状態確認
              |
            Lならば扉開のカウント
              |
            LならばLED点灯/HならばLED消灯

     うーん、片方のエッジだけでカウントして、LEDの消灯はポーリングという方法もありますね。
  • わわい様
    おはようございます。
    エッジの間隔が十分に長いのは確実です。人間の操作による扉の開閉で、一番短い間隔でも十数秒です。
    開閉信号はリミットスイッチ(無電圧接点)で、この入力信号をフォトカプラで受けてさらにフィルタを入れています。
    たぶんこれにチャタが乗ることはないと考えています。
  • チョコです。
    >回のエッジの方向と必ず反対のエッジで検出するなら、
    チャタリングの影響を考えると,きちんと状態を確認すべきでしょうね。
    つまり,エッジ検出割り込みの中でチャタリングが落ち着くまで待ってからポートで確認するのが
    いいのではないでしょうか。
  • わわいです
    ハード的に対策されてるならOKですねー

    私なら、という話になりますが、そういう用途なら、タイマ割り込みでポート値を読み出して、そこでチャタリング処理を行うとともに開閉処理をさせてしまいますねー
    #そういう人間の操作に割り込み使うってのはなんかもったいない、気がしますw
  • 扉の開閉タイミングで、即なにかを実行とかの必要があれば、割り込みも手と思いますが、
    扉の開閉タイミングが10秒以上もあくのなら、インターバルでメインルーチンを回しているなら、
    例えば10msecくらいでも十分早いと思いますし、それよりも長くても問題は少ない気がします。
    メインルーチンが規則的に回らないなら、かわいさんが書かれたタイマー割り込みとかでもよいと思います。

    私の考えですが、割り込みを使わなくて済むなら使わないというのが、余計な事を考えなくて
    よいのかなーと思います。

    近接センサ自体もヒステリシス?特性みたいなのがあると思いますので、ギリギリでもハンチング
    しないと思いますし、フォトカプラで受けてフィルタなので、ハード的にはハンチング防止になっていると
    思いますが、万が一、近接センサの入力までの信号系が断線や故障の時に、ハンチングが起きた場合まで想定するかどうかだと思います。
    この状態なので、正しく開閉判定できないのは、あたりまえですが、割り込みが連続した時に、割り込みを受け付けると他に支障が来ないようなプログラムにするのか、そこまで過剰に気にしても無意味と判断するかです。

    最初に書いた、適当な間隔でポートを見ればと思ったのは、フォトカプラの後にフィルタ入れたという事なので、10msecやもう少し遅く判定しても大丈夫なのかと思いました。
  • チョコです。
    >割り込みを使わなくて済むなら使わないというのが、
    それも,一つの考え方です。
    別に,割り込みは急ぐ処理だけではありません。
    いつ発生するかわからない事象をメインのループで毎回チェックするのは処理の無駄にも思えます。
    使用する端子に,割り込み機能があるのなら,それを使わない手は無いと思いますよ。
  • 最初の質問者のdai_tory さんとパールマンさんは同一人物って言う事?
  • >今回使用する通信ICでは、割り込み信号の立ち上がり時と立ち下がり時で別の処理をする必要があるためです。

     ドアの開閉と通信ICはどう言う関係に有るんですか。通信ICと割り込みは無関係だと思うけど。
  • 最初の質問日が 2012/8/27 8:51 になっている。
    何が何だか良く分からないな。
  • おはようございます。
    dai_tory様と私は同一人物ではありません。
    たまたま、割り込みの両エッジについて調べていましたら、dai_toryさんの質問がありまして、ちょこさんの回答があてはまっていました。(dai_toryさんのご質問は、お書きになったとおり2012年8月ですね)
    ちょこさんにお礼申し上げましたら、皆様からご意見があったというわけです。
    私のほうの両エッジは通信とは関係ありません。
    dai_toryさんのスレッドにつけたために混乱を与えてしまい、申し訳ありません。<m(__)m>