watch dog timer nasıl kullanılır?

Başlatan F®T, 10 Nisan 2012, 19:41:49

F®T

arkadaşlar 16f877a işlemcisinde

@ DEVICE pic16f877a, WDT_ON              'Watch Dog timer açık

olarak verince devreye alınmış oluyormu.yoksa registerde ne gibi ayarlar yapmak gerekiyor. clrwdt komutu ile neden sıfırlama yapıyoruz.ayrıca wdt süresini programa göre nasıl belirleriz.basit bir örnek ile kullanımını izah eden olursa memnun olurum.

herkese iyi çalışmalar.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Mucit23

Watchdog Timer İşlemcinin çalışıp çalışmadığını kontrol eden bir Bir sayıcıdır. Olurda işlemci kilitlenirse WDT saymaya başlar. WDT nin taştığı anda İşlemci Resetlenir. Tabi WDT sayıcısı taşana kadar belli bir süre geçer. Bu süre Watchdog timerin prescaller oranıyla belirlenir. Bu Prescaller oranı ise 16F877 için OPTION_REG in 0-2 . bitleriyle ayarlanır.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Mucit23

Galiba clrwdt komutuda WDT sayıcısının değerini sıfırlaıyor
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

F®T

mucit23 dediklerin doğruda ben basit bir örnek ile aslında olayı görmek istemiştim.yapmış olduğum kartta protonbasic te config ayarlarında watchdog u açınca kart çalışmıyor yada sürekli timer süresi dolup reset attığı için çalışmıyor gibi görünüyor.şimdi tmr0 kesmesi kullanıyorum prescaller oranı 111 olarak ayarlı.watchdog u açınca bu bölme değeri onun içinde geçerlimidir? nasıl ayarlamak gerekiyor?senin anlıcağın ben watchdog u sadece config de wdt_on yapınca kendi herşeyi yapıyor biliyordum ama öyle olmadığını görmüş oldum.öğrenmek mecburiyeti doğdu.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Beklenmedik durumlarda işlemciyi kilitlenmekten yada sonsuz döngülerden kurtarmak için geri planda çalışan bir zamanlayıcıdır.
Yeni nesil işlemcilerde epeyce detaylı peryod zamanlaması vardır. Eski tiplerde pek fazla ayar imkanı yok gibi gözüküyor.
Direk bir işe yaraması için wdt kullanılan program sayısı çok fazla yok . Ben bu konuda örnek görmüştüm ama şimdi pek hatırlamıyorum ne amaçla kullanıldığını. Kısaca bu konuda pek tecrübem yok diyebilirim.
Zaman zaman karşıma çıkıyor. Yazdığım programlarda bir kararsızlık anında isisde görebiliyorum program sürekli reset atıyor ve isis de ikaz veriyor wdt reset diye. O zaman wdt_off yapıyorum sorun ortadan kalkıyor idi. Pek gözlemlemedim neden olduğunu .
Ete

mg1980

Temel esasları ETE hocamın izah ettiği gibidir. Ayrıca MPLAB tekniğinde Orhan ALTINBAŞAK'ın ''Mikrodenetleyiciler ve PIC Programlama 16F628A'' isimli kitabının 224-230 sayfalarında yeterli açıklama var.

efsanepoldem

   Aslında genel olarak WDT nin ne olduğu açıklanmış. Tamamen sizin ayarladığınız süre boyunca uyuyan, süre dolduğunda uyanan bir zamanlayıcı. WDT zaman ayarı option_reg nın 0,1,2 bitleri ile ayarlanabiliyor. Burada dikkat edilmesi gereken konu şudur. Ayarladığınız süre dolmadan WDT yi program içerisinde sürekli clear (clrwdt) etmeniz gerekli. Eğer ayarladığınız süre dolarsa, wdt devreye girerek, program resetlenip baştan başlayacaktır (power_on reset gibi)


mg1980

Belirttiğim kaynakta gayet güzel bir açıklama ile örnek program da mevcuttur. Saygılar.

F®T

OPTION_REG 0-1-2. bitleri Prescaler bitleri ve 3. bit ise bu bitlerin  tmr0 mı yoksa watchdog sayıcısınınmı olacağını belirtiyor.
eğer 3. biti seçer 1 yaparsam ve prescaler bitlerinide ayarlarsam bu süre zarfında kesmeye giriyor ve çıkıyor ayrıca wdtclr komutu kullanmaya gerek kalmıyor.ama prescalerı tmr0 için seçersem her tarafa wdtclr koymama rağmen sürekli resete giriyor kontrol edemiyorum.bunun sebebi nedir acaba düşüncelerinizi almak isterim.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

KAZIMUGUR

WDT açtı iseniz , programınızda bekleme yapan ve ya yapması ihtimali olan , (max2.1sn) mesela döngülerde , her yerde wdt sayacını sıfırlamalısınız !

F®T

#10
KAZIMUGUR hocam selamlar.
sorun şu tmr0 kesmesi kullanıyorum prescaler tmr0 için ayarlı, watchdog açık vede heryerde sıfırlama yapıyorum ama program sürekli reset atıyor.ama prescalerı watchdog için seçersem clrwdt kullanmasam bile resetleme ortadan kalkıyor.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

KAZIMUGUR

#11
WDT süresi,  prescaler açmaz isen yaklaşık 18ms ( max 255 sayar ), açarsan en fazla 2.3sn (yukarıda 2.1 yanlış yazmışım) ...

F®T

"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal