2 Replies Latest reply on Jul 20, 2020 4:11 PM by keni_4440091

    Community Translation - Implementing Watchdog Timer in FX3 – KBA223337

    keni_4440091

      Hi

       

      I want to translate KBA223337, please confirm to my work.

       

      Regards,

      Nino

        • 1. Re: Community Translation - Implementing Watchdog Timer in FX3 – KBA223337
          JuyoungJ_06

          Hi, Nino-san

           

          Sorry for late response.

          Confirm to work this KBA.

           

          Thanks

          Jenna

          • 2. Re: Community Translation - Implementing Watchdog Timer in FX3 – KBA223337
            keni_4440091

            タイトル:FX3にウォッチドッグタイマーを実装 – KBA223337

             

            バージョン 2

             

            chaitanyav_41 2018/03/26 0:02 に作成。chaitanyav_41 2018/03/26 0:02 に変更。

             

            Version: **

             

            質問:

            FX3ファームウェアにどのようにしてウォッチドッグタイマーを実装しますか?

             

            回答:

            下記の例を考えてみます:

            #define CY_FX_WATCHDOG_PERIOD 5000 //ウォッチドッグタイマーを5秒に設定

            #define CY_FX_WATCHDOG_CLEAR_PERIOD 3000
            //
            ウォッチドッグクリアタイマーを3秒に設定

             

            CyU3PTimer WdClearTimer;

             

            void TimerInit(void)

            {

                 CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;

                 CyU3PSysWatchDogConfigure(CyTrue, (CY_FX_WATCHDOG_PERIOD); //ここではCY_FX_WATCHDOG_PERIODミリ秒単位です。

                 CyU3PDebugPrint (4, "WatchDog Timer Created\r\n");

               
            apiRetStatus = CyU3PTimerCreate(&WdClearTimer, WatchDogTimerClearCb, 0, CY_FX_WATCHDOG_CLEAR_PERIOD, CY_FX_WATCHDOG_CLEAR_PERIOD, 1);                              //ここでCY_FX_WATCHDOG_CLEAR_PERIOD はミリ秒単位です。

            if (apiRetStatus != CY_U3P_SUCCESS)
            {

                    CyU3PDebugPrint (4, "TimerCreate failed, Error Code = %d\r\n", apiRetStatus);

            }

            }

             

            無限「for loop」の前にTimerInit()関数を呼び出します。( for ( ;  )

             

            注意:

            1. サンプルコードの一部で、CY_FX_WATCHDOG_PERIODはウォッチドッグタイマーのリセット期間です。つまり、ウォッチドッグタイマーがこの期間の前にクリアされない場合、FX3はリセットされます。従って、もう一つのタイマー「WdClearTimer」が時間切れになる前にウォッチドッグタイマーをクリアするために生成されています。
            2. CY_FX_WATCHDOG_CLEAR_PERIODの値はCY_FX_WATCHDOG_PERIODの値よりも少なくする必要があります。
            3. WdClearTimerタイマーは、下記に定義されているコールバックWatchDogTimerClearCbを生成します:

             

            void WatchDogTimerCb (uint32_t nParam)

            {

            CyU3PSysWatchDogClear();
            }

             

            401  閲覧 カテゴリ: USB: SuperSpeed Peripherals  タグ: timer, watchdog, reset, fx3, ss_usb