最新情報
ナウいマイコン PSoC4200 の WDT(備忘録)
PSoC4200でWDTがあるらしいのですが、よくわからないので調べてみました。
コンポーネントでWDTがあると思ったのですが・・・・・・無いです。
Clock 関係を調べてみると、Watchdog の設定ができるようです。
ここダブルクリックすると
この画面が出てきます。
Timer 0
周期(Period) 1秒
の設定にしてみました。
確認用に、スイッチ(SW)とLEDを2個配置(赤、緑)。
Solved: How to reset WDT in PSoc 4200? – Infineon Developer Community
このページに、WDTクリアらしい情報があったので参考にしました。
//———————————————————————————-
スイッチ(OFF)押されていなければ、
1 赤LED点滅
2 WDTクリア
3 1へ(繰返し)
スイッチ(ON)押している間WDTクリアせずループ(WDTリセット発生)。
WDTリセット発生したら、緑LED点灯
こんな感じのソフトで試してみます。
#include <project.h>
uint32	reason;		//reason (理由、原因)
int main(void) {
    
	CyGlobalIntEnable; /* Enable global interrupts. */
	G_LED_Write(0);		// 緑LED_OFF
	R_1_LED_Write(0);	// 赤LED_1_OFF
	
	reason = CySysGetResetReason(CY_SYS_RESET_WDT);		// 0bit目 (xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx1)
	
	if(reason && CY_SYS_RESET_WDT){						// CY_SYS_RESET_WDT WDT 	リセット?
														// CY_SYS_RESET_PROTFAULT	保護失敗リセット?(いまのところ意味不明)
														// CY_SYS_RESET_PROTFAULT 	ソフトウェアリセット?
		
		CySysWdtDisable(CY_SYS_WDT_COUNTER0_MASK);		// カウント停止
		R_1_LED_Write(1);	// WDT Reset 発生で 赤LED_1_ON
		while(1);			// ループ(停止)
    }
	
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
	
    for (;;) {
        /* Place your application code here. */
		G_LED_Write(~G_LED_Read());		// 緑LED 点滅 0.5秒 OFF 0.5秒ON
		CyDelay(500);
	
		if (SW_Read()== 0){	// ボタン押されたら
			while(1);		// ループ(停止)
		}
		
		CySysWatchdogFeed(CY_SYS_WDT_COUNTER0);	//WDT クリア
   }
}
ちゃんと動作しています(動画参照)
加納 大裕(かのう だいゆう)
- 
- 2025.10.29
 - 薪ストーブ実演展示 東栄フェスティバル
 
 - 
- 2025.10.29
 - 薪ストーブ実演展示、売木村秋色感謝祭
 
 - 
- 2025.09.26
 - 薪ストーブ、新城軽トラ市に出店します。
 
 - 
- 2025.09.05
 - 薪ストーブ出展 GP CAMP.Fes2025
 
 - 
- 2025.08.29
 - なぜ加納製作所の薪ストーブは薪を炭にしてから燃焼させるのか?
 
 











