//AÇIKLAMA
//WDT zamanlayıcısı 2 sn'yeye ayarlandı. for döngüsüne girdiğimizde döngü içinde wdt_reset()
//komutunu kullanmazsak döndü tamamlanmadan yani i=5'e kadar gelmeden arduino resetleneceği
//için tüm komutlar baştan başlayacaktır. Böylece döngü hep tamamlanmadan baştan
//başlayacaktır. Fakat wdt_reset() komutunu döngü içinde kullandığımızda 2 sn'den
//daha kısa sürede WDT zamanlayıcısı sıfırlanacağı için arduino resetlenmeyecek ve döngü
//tamamlanacaktır. Siz de bu uygulamada wdt_reset(); komutunu kullanarak ve kullanmayarak
//sonuçları izleyebilirsiniz.
#include <avr/wdt.h>
int i;
void setup()
{
Serial.begin(9600);
wdt_disable(); //WDT pasif edildi.
delay(3000);
wdt_enable(WDTO_2S); //WDT etkinleştirildi sayaç 2 sn'ye ye ayarlandı.
Serial.println("Watchdog Timer 2 sn olarak ayarlandı.");
}
void loop()
{
for (i = 1; i < 6; i++)
{
Serial.print(i); Serial.println("'nci döngü");
delay(1000);
//wdt_reset(); //zamanlayıcı sıfırlandı.
}
}
Örnek-2
//AÇIKLAMA
//WDT 4 sn'ye olarak ayarlandı. Loop içinde "Merhaba" yazısını ekrana
//yazdırdıktan sonra while(1) ile programı 18. satırda sonsuz döngüye
//soktuk. Normalde ekrana bir kez "Merhaba" yazdıktan sonra bu satırda
//sürekli beklemesi gerekirdi ama WDT ile 4 sn'de bir Arduino'yu resetlediğimiz
//için "Merhaba" yazısı belirli zaman araklıklarıyla sonsuz döngüden
//kurtulup ekrana tekrar yazılabilmektedir.
#include <avr/wdt.h>
int i;
void setup()
{
Serial.begin(9600);
wdt_disable(); //WDT pasif edildi.
delay(3000);
wdt_enable(WDTO_4S); //WDT etkinleştirildi sayaç 4 sn'ye ye ayarlandı.
Serial.println("Watchdog Timer 4 sn olarak ayarlandı.");
}
void loop()
{
Serial.println("Merhaba");
while(1);
}
0 comments:
Yorum Gönder