P

WDT Kullanımı

Başlatan Pic_877, 26 Mart 2013, 20:06:42

Pic_877

16f628 de wdt kesmesi oluşturamıyorum. WDT nin çalışma mantığını biliyorum ama komutları nasıldır fikrim yok. Birşeyler denedim ama olmadı. Sanırım tmr0'ı kullanıyor. Atıyorum 8 saniye de bir bir işin yapılmasını istiyorum, 8 saniyeyi geçerse wdt nin bayrağını kullanıp hata sinyali almam lazım, eğer 8 saniye içinde iş tamamlanırsa butona basılıp wdt yi sıfırlayıp hata vermesi gerekiyor.

Prescaler değerini 110 yaptım yani 1/32 oldu. 4Mhz lik kristalde fdahili=4Mhz/4= 1Mhz. tdahili=1/1Mhz=1us yapıyor. Prescaler değerinden 256x32=8192us yapıyor yani her 8192us'de bir wdt kesmeye gidecek bunu kesmede saydırıp saniye cinsine:

disable
wdt_kesmesi:
sayac=sayac+1
if sayac=8192000 then goto uyari
intcon.2=0
enable

gibi bir yazılımla çeviriyorum.

WDT hiç kullanmadığım için sıkıntı çekiyorum, yazılım konusunda yardıma ihtiyacım var, intcon ve option registerini tmr0 a göremi yapılandırmak gerecek, farklı bir kodu varmıdır bilmiyorum.

F®T

disable
wdt_kesmesi:
sayac=sayac+1
if sayac=8192000 then goto uyari
intcon.2=0
enable

öyle bir sayaç olmaz çünkü wdt çalışınca işlemciye reset atar.
siz işlemcinin hangi zamanı aşarsa wdt reset edeceğini prescaler ile ayarlarsınız.işlemci işlem yaparken bu zaman aşımı olursa direk reset atar ve configrasyon başlangıcına gider sıfırdan başlar.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal