• Forumu kullanabilmek için lütfen üye olunuz. 😊

Nuvoton WDT (Watch Dog Timer) Nedir ? Nasıl Kullanılır ?

Argeolog

Admin
Yetkili
Öncelikle WDT nedir onu açıklayalım. İzleyici köpek olarak adlandırılan bu yapı, şu işe yarar.
İşlemcide bir işlemin tamamlanması gereken sürede tamamlanamaması durumunda işlemciye Reset Atarak işlemcinin yeniden başlamasını sağlayan bir yapıdır.
WDT timer ayarları yapılarak kurma işlemi tamamlanır. Aşağıdaki Örnek de yer alan WDT_TIMEOUT_2POW14 değeri 2 kod arasında ne kadar süre olabileceğini belirler.
Kullandığım işlemci M252 serisi Dahili OSC kullanılmıştır ve Frekansı 48mhz olarak belirlenmiştir.

WDT_TIMEOUT_2POW14 değerini Test Ettiğimde Afaki olarak WDT 'yi 400 milisaniye olarak kurmuş oldum.
WDT_RESET_DELAY_18CLK değerinin anlamı: Reset Atmadan önce diğer işlemlerin tamamlanması için verilen ek süre.


Bir Örnek Yapalım:

void delay_ms(uint32_t ms) { CLK_SysTickLongDelay(ms *1000); } void main() { WatchDog_Timer_Ayarla(); while(1) { WDT_RESET_COUNTER(); //delay_ms(400); // Reset Atmayacaktır. delay_ms(500); // Reset Atacaktır. Çünkü WDT_RESET_COUNTER fonksiyonuna gitmek için 500 milisaniye zaman kaybetti. } }


wdt.c Dosyasını projenize ekleyiniz.

WDT Sayaç Sıfırlama Kodu:

WDT_RESET_COUNTER(); // Bu Fonksiyon çağrıldığında WDT Sayacı Temizlenir. ve yeniden saymaya başlar.

void WatchDog_Timer_Ayarla() { SYS_UnlockReg(); WDT_CLEAR_RESET_FLAG(); CLK_EnableModuleClock(WDT_MODULE); CLK_SetModuleClock(WDT_MODULE, CLK_CLKSEL1_WDTSEL_LIRC, 0); WDT_Open(WDT_TIMEOUT_2POW14, WDT_RESET_DELAY_18CLK, TRUE, TRUE); SYS_LockReg(); }
 
Üst