Stm32

STM32 Watchdog Timer Kullanımı

Watchdog Timer ile İşe Başlarken..

Merhabalar Elektronik Kurtları bugün sizlere Watchdog Timerdan bahsedeceğim bu bekçi köpeği ismini duyunca çokta bir anlam veremediğinizi düşünüyorum açıkçası ama bu minik köpek yapacağınız minik projelerde dahi bulunması gereken önemli bir bileşen olduğunu söylemekle ayıpta etmiş olmam herhalde!!

Neredeyse tüm denetleyicilerde dahili olarak bulunan denetleyici bir birimdir. Denetleyiciniz takıldığında ona minik bir ısırık atarak kendine getirir :) şimdi teknik bir dille mevzuyu açıklayıp nasıl kullanacağınıza değinelim..

Watchdog Timer Nedir ?

Watchdog Timer hemen her mikrodenetleyici de bulunan denetleyici bir birimdir.

Belli bir zaman aşım sürecine kurulduktan sonra işlemci eğer o süre içinde watchdog timer’ı sıfırlamazsa ki bu kilitlenme yada takılma olabilir. Watchdog Timer işlemcinizin cevap vermediğini düşünüp işlemcinize reset atma işlemini yerine getirir.

Genel olarak açıklamak gerekirse döngünüzün içine 3 tane 250 ms Gecikme koydunuz ve kendi işlem sürelerini eklediğinizde bu kısma birde tölerans değeri eklemeliyiz ortalama 1 sn olan döngü tamamlama süreci mevcut biz döngünün sonuna töleransla birlikte en geç 3 sn de ulaşsın isteyelim eğer ulaşmamışsa bir sorun oluşmuş diyerek watchdog otomatik olarak reset atacaktır.

Stm32 ile Watchdog Timer Nasıl Kurulur ?

Öncelikle CubeMX açıp projemizdeki tüm gerekli bileşenleri ekleyip tüm işlemlerimizi yaptıktan sonra System Core bileşenlerden IWDT bileşenini aktif ediyoruz.

Cubemx den Watchdog timer aktif edilmesi.
Watchdog Timer Aktif edilmesi.

Sonrasında resmin alt kısmında görüldüğü üzere Timer’ın Aşım ayarı görülmekte İşte esas önemli kısım burası burada döngü ne kadar sürede tamamlanacak ??

Örneğin benim döngüm en çok 1 saniyede tamamlanır eğer tamamlanmazsa reset atsın. diyelim şimdi geçelim zaman aşımı ayarını nasıl yapacağımıza.

Zaman Aşımı Ayarı

Arkadaşlar öncelikle Stm’in hangi denetleyicisini Kullanıyorsanız Ona uygun olarak Google amcamızdan muhakkak reference manual indirmeniz gerekiyor ki aşım değerlerini doğru bir şekilde kullanalım.

Ben Stm32f103c8 Kullanacağım için onun manual inden sizlere kesit bırakıyorum aşağıya gerekli değerlerimiz aşağıdaki resimde göreceğiniz gibi..

Stm32f103c8 Watchdog timer datasheet sayfası
Stm32F103C8T6 Reference manual IWDG aşım değerleri

Dostlar şimdi burayı nasıl okuyacağımızı anlatayım sizlere prescaler divider 8 seçtiğimizde Downcounter reload value 4095 yaptığımızda maksimum 819.2 ms bir aşım süresi elde edeceğiz. Ki yukarıda da demiştik bizim işlemimiz 1 sn sürer biz burda garanti olsun diye psc divider 32 kullanacağız buda bize 3.2 sn lik bir aşım töleransı tanır çokta işe yarar

bu durumda IWDG Precaler counter clock bölümüne 32 değerini girip Down-Counter Reload kısmına da 4095 gireceğiz. Sonrasında projemizi derleyip artık kodlama aşamasına geçebiliriz.

Keil ile watchdog kodlamaya başlarken Watchdog timer ın sisteme eklenişi.
Keil Watchdog Timer Ekran

Gördüğünüz üzere Watchdog timer sisteme eklenmiş durumda sonrasında hemen altına aşağıdaki kodu ekleyelim.

__HAL_WWDG_ENABLE(&hwwdg);

Şimdi Watchdog Timer’ımız aktif oldu.

Artık döngümüzün içerisine kodların en sonuna aşağıdaki kodu ekleyelim bu ekleyeceğimiz kod Watchdogun Her Döngü sonunda sıfırlanmasını sağlar.

HAL_WWDG_Refresh(&hwwdg);

Artık Programımıza Watchdog Timer ı dahil etmiş bulunmaktayız siz projenizin durumuna göre düzenleyip isteğinize göre şekillendirebilirsiniz. Umarım anlatabilmişidir okudğunuz için Teşekkürler İyi Çalışmalar.

Etiketler

Onur NP

Arduino Stm32 gibi Mikrodenetleyici PLC Otomasyon sistemleri ve Genel elektronik projeleri üzerine örnek paylaşımlar yapmaktayım Endüstriyel ve Kişisel proejelerinize Ücretli olarak destek verebilirim.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Call Now ButtonAra
Kapalı
Kapalı