5 Replies Latest reply on Oct 30, 2017 4:22 AM by ndma

    Measurement of target period using MFT

    user_511126955

      I write in Japanese.

       

      <FRT>

        カウントアップモード

        ゼロ検出割込み(ピーク割込みは未使用)

         ピーク値:0xFFFF

      <ICU>

        立ち上がりエッジでキャプチャ

       

      入力周期(ICU入力) = 65536×ゼロ検出割込みの回数+今回のICUキャプチャ値-前回のキャプチャ

       

      上記の様にパルス周期を測定しようとしています(添付)。

      FRTのカウンタ値がピーク値からゼロへ切り替わる付近で ICU入力が立ち上がると、FRTのゼロ検出割込みが発生した後にICUのキャプチャ割込みが発生します。この時、ICUのキャプチャ値が0x0000ではなく0xFFFFとなっており、入力周期を正しく測定できません。

      正しい入力周期の測定方法を教えてください。

        • 1. Re: Measurement of target period using MFT
          ndma

          ICUで計測する入力周期の最大値より長い周期になるようにFRTのカウントクロック周期を制御するのが最も簡単な解決方法です。

          しかし、より詳細に入力信号の周期を計測されたいようなので、以下のような方法はいかがでしょうか?

          二つの別々の周期(FRTと入力信号)の物を利用していますので、一方がもう一方をケアする必要があります。

          更に、ケアする側がケアされる側より高優先で動作するようにします。

           

          • 割込み優先度について

          NVICの機能を使用して、FRTのゼロ検出割込みとICUのキャプチャ割込みに優先度の差をつけてください。

          FRTのゼロ検出割込み:優先度高

          ICUのキャプチャ割込み:優先度低

           

          • それぞれの割り込み処理について

          FRTのゼロ検出割込み:(ICU側のケアを行う

          ICUがキャプチャ済かどうか確認する。


             ICU
          制御レジスタAIPC0(IPC1)フィールドを参照(0クリアはしないでください)

          IPC0(IPC1)フィールドが0の場合:ゼロ検出割込みの回数をカウントアップする。

          IPC0(IPC1)フィールドが1の場合:ICUのキャプチャ値を参照して、ゼロをまたいでいれば、ゼロ検出割込みの回数をカウントアップする。ゼロをまたいでいなければ、カウントアップしない。

          ICUのキャプチャ割込み:

          ・キャプチャ値から、入力周期を計算する。

           

          以上、宜しくお願い致します。

          Nada

          • 2. Re: Measurement of target period using MFT
            user_511126955

            I write in Japanese.

             

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

            以下、確認させて下さい。

             

              FRTのゼロ検出割込みが発生した後にICUのキャプチャ割込みが発生する。

             このときキャプチャされていた値が0xFFFFである。

            キャプチャ値が0xFFFFなので割り込みの発生時間が逆転している様に見えてしまいますが、ICUでキャプチャしたことの割り込みが受け付けられるまでに時間が掛かっているものと思います。

            仕様上 FRTのゼロ検出割込みとICUのキャプチャ割込みとの時間規定がなく、デバイスに問題がある訳ではない(逆転している様に見えこともあり得る)との理解で正しいでしょうか?

             

            > ゼロをまたいでいれば、ゼロ検出割込みの回数をカウントアップする。

            > ゼロをまたいでいなければ、カウントアップしない。

            またいでいることの判断は、システム設計による(ICUのキャプチャ割込みよりも高い優先順位の割り込みがある場合は0xFFFFよりも小さい値に見えることもあるなど)ので、一概に回答頂けるものではないとの理解で正しいでしょうか?

             

            • 3. Re: Measurement of target period using MFT
              ndma

              どちらも正しく理解されています。

               

              以上、宜しくお願い致します。

              Nada

              • 4. Re: Measurement of target period using MFT
                user_511126955

                デバイス内部のタイミングについて、念のために確認させてください。

                 

                ご提示頂いた手順から、

                「ICUが0xFFFFをキャプチャ」して「FRTのゼロ検出割込み」の後に「ICUの

                キャプチャ割込み」が発生する場合、

                「FRTのゼロ検出割込みでIPC0(IPC1)フィールド参照するタイミング」

                よりも「IPC0(IPC1)フィールドが1になるタイミング」が遅れてしまうこと

                はないものと理解しました。

                正しいでしょうか?

                • 5. Re: Measurement of target period using MFT
                  ndma

                  CPUに供給しているクロックとMFTFRT)に供給しているクロックの間に

                  極端な差を付けている場合には、MFTが動作する前に

                  CPUがレジスタを参照してしまうことがあるかもしれません。

                  今回問題視している2つの割込み以外に、

                  割込みが発生していないとすると、

                  ICU0xFFFFをキャプチャするタイミングが

                  もっとも厳しい条件になります。

                   

                  お客様のクロック設定で評価されてみて、ICU0xFFFFをキャプチャしている時に、

                  FRTのゼロ検出割り込みでIPCフィールドを参照して、

                  1になっていることを確認していただければ、問題ないと考えます。

                   

                  以上、よろしくお願いいたします。

                  Nada