- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I would like to translate KBA230963 into Japanese.
Please confirm to my work.
Thanks,
Kenshow
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Kenshow-san
Confirm to work this KBA.
Thanks
Jenna
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Jenna-san,
Japanese translation was over.
Please check below.
Original KBA:
Using Additional Timers in PSoC 4S Series – KBA230963
Thanks.
==============================
タイトル: PSoC 4Sシリーズで追加のタイマーを使用する – KBA230963
バージョン:**
質問: PSoC® 4Sシリーズでどのように「タイマーの追加」を行えばよろしいでしょうか?
回答:ウォッチドッグタイマー(WDT)は、予期しないファームウェア実行パスまたはCPUの機能を危険にさらす電圧低下がある場合に、デバイスを自動的にリセットするために使用されます。WDTは、ILOによって生成されたLFCLKから実行されます。タイマーは、リセットを回避するためにファームウェアで定期的に処理する必要があります。そうしない場合には、タイマーが経過してデバイスがリセットされます。WDTは、低電力モードで割り込みソースまたはウェイクアップソースとして使用できます。
WDTの他に、WDT0、WDT1、およびWDT2の3つの追加の汎用タイマーがあります。これらの3つのタイマーは、ILOまたはWCOからクロック供給され、WCO_WDT_CLKENレジスタへの書き込みによって選択されます。これらのタイマーは、アクティブ、スリープ、およびディープスリープモードで実行でき、割り込みを生成できます。
図1.デフォルトのシステムクロックの設定
例
Timer0を1 Hzタイマーとして構成する(図2は、デフォルトでILOを使用します)
解決策1:
図2に示すように、クロックエディターを使用して構成します。
図2. 設定後にシステムクロックを構成する
プロジェクトのビルド中に、プロジェクトの基礎となるコードは、cyfitter_cfg.cファイルのstatic void ClockSetup(void)APIでクロック構成情報を生成します。
main.cのファイル、コールバック関数を呼び出し、次のコードスニペットに示すように、タイマカウンターを有効にする必要があります。
/* 特定のDeepSleepタイマーカウンターのISRコールバック関数を設定します */
CySysTimerSetInterruptCallback(CY_SYS_TIMER0 、Timer0_1s_isr);
/* 指定したDeepSleepタイマーカウンターを有効にします */
CySysTimerEnable(CY_SYS_TIMER0_MASK );
その後、デバイスは1秒ごとにvoid Timer0_1s_isr(void ) APIで実行されます。
解決策2:
クロックエディターでは設定を行わず、次のコードを使用してタイマーを構成します。
void Timer0_1s_isr(void )
{
//ユーザーはここにアプリケーションコードを配置できます。割り込みが発生すると、コードはここにジャンプします。
}
#define ENABLE_WDT_TIMER0_IN_CLICKEDITOR (0u)
#if (!ENABLE_WDT_TIMER0_IN_CLICKEDITOR )
/* ここでタイマーソースを設定し、WCOまたはILOを選択 */
CySysClkSetTimerSource(CY_SYS_CLK_TIMER_SRC_ILO);
/* タイマーモード、フリーランニングまたは割り込み、カウンター0と1の一致で生成される割り込み、counter2のビットトグルで設定します */
CySysTimerSetMode(CY_SYS_TIMER0, CY_SYS_TIMER_MODE_INT );
/* サイクルを取得するためにmatch値を使用します */
CySysTimerSetMatch(CY_SYS_TIMER0, 0x9C3E );
/* ビットを有効にする:0 - カウンターフリーラン; 1 – match上のカウンターをクリア */
CySysTimerSetClearOnMatch(CY_SYS_TIMER0, 1);
#endif
/* 特定のDeepSleepタイマーカウンターのISRコールバック関数を設定します */
CySysTimerSetInterruptCallback(CY_SYS_TIMER0, Timer0_1s_isr);
/* 指定したDeepSleepタイマーカウンターを有効にします */
CySysTimerEnable(CY_SYS_TIMER0_MASK );
==============================
10-August-2020