- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I want to translate KBA223337, please confirm to my work.
Regards,
Nino
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Nino-san
Sorry for late response.
Confirm to work this KBA.
Thanks
Jenna
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
タイトル:FX3にウォッチドッグタイマーを実装 – KBA223337
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 ( ; )
注意:
- サンプルコードの一部で、CY_FX_WATCHDOG_PERIODはウォッチドッグタイマーのリセット期間です。つまり、ウォッチドッグタイマーがこの期間の前にクリアされない場合、FX3はリセットされます。従って、もう一つのタイマー「WdClearTimer」が時間切れになる前にウォッチドッグタイマーをクリアするために生成されています。
- CY_FX_WATCHDOG_CLEAR_PERIODの値はCY_FX_WATCHDOG_PERIODの値よりも少なくする必要があります。
- WdClearTimerタイマーは、下記に定義されているコールバックWatchDogTimerClearCbを生成します:
void WatchDogTimerCb (uint32_t nParam)
{
CyU3PSysWatchDogClear();
}
401 閲覧 カテゴリ: USB: SuperSpeed Peripherals タグ: timer, watchdog, reset, fx3, ss_usb