Community Translation - Implementing Watchdog Timer in FX3 – KBA223337

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
keni_4440091
Level 7
Level 7
500 replies posted 100 solutions authored 50 solutions authored

Hi

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

Regards,

Nino

0 Likes
2 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Nino-san

Sorry for late response.

Confirm to work this KBA.

Thanks

Jenna

Jenna Jo
0 Likes

タイトル: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

0 Likes