İçindekiler:

Arduino Hang Guardian - Arduino Watchdog Zamanlayıcı Eğitimi: 6 Adım
Arduino Hang Guardian - Arduino Watchdog Zamanlayıcı Eğitimi: 6 Adım

Video: Arduino Hang Guardian - Arduino Watchdog Zamanlayıcı Eğitimi: 6 Adım

Video: Arduino Hang Guardian - Arduino Watchdog Zamanlayıcı Eğitimi: 6 Adım
Video: Arduino Bellek Yönetimi PROGMEM ve F() Makrosu - Kilitlenme Sorunları 2024, Temmuz
Anonim
Image
Image

Herkese selam, Hepimize olur. Bir proje oluşturursunuz, tüm sensörleri hevesle bağlarsınız ve aniden Arduino kilitlenir ve hiçbir girdi işlenmez.

"Neler oluyor?" diye soracak ve kodunuzu incelemeye başlayacaksınız, ancak sonsuz bir döngüde sıkışıp kaldığınızı fark edeceksiniz. Tanrıya şükür Arduino uzak bir yerde değil, banktaydı.

Bugün, bunun olmasını önlemek için Arduino'daki watchdog zamanlayıcısını nasıl kullanabileceğimize bakacağız.

Adım 1: Bu Watchdog Zamanlayıcı Nedir?

Watchdog Zamanlayıcı Nasıl Etkinleştirilir?
Watchdog Zamanlayıcı Nasıl Etkinleştirilir?

Arduino watchdog timer, adından da anlaşılacağı gibi, kart üzerindeki ana CPU'dan ayrı olarak çalışan bir zamanlayıcıdır. Bu zamanlayıcı, kartın durumunu periyodik olarak kontrol etmek için kullanılabilir ve kartın bir yazılım döngüsüne takıldığı veya donanım arızası nedeniyle takıldığı durumlarda, watchdog zamanlayıcı Arduino'yu sıfırlayabilir ve baştan başlamasını sağlayabilir.

Varsayılan olarak kullanılmadığında bu zamanlayıcı tüm projelerde devre dışıdır ve yalnızca etkinleştirdiğimizde, hala beklendiği gibi çalışıyorsa kartımızı sıfırlamamasını periyodik olarak söylememiz gerekir.

Watchdog timer'ı kullanabilmek için öncelikle Arduino taslağımıza avr/wdt.h dosyasını eklememiz gerekiyor. Bu, bekçi eylemlerini tutan standart kitaplıktır.

Adım 2: Watchdog Zamanlayıcı Nasıl Etkinleştirilir?

Watchdog Zamanlayıcı Nasıl Etkinleştirilir?
Watchdog Zamanlayıcı Nasıl Etkinleştirilir?
Watchdog Zamanlayıcı Nasıl Etkinleştirilir?
Watchdog Zamanlayıcı Nasıl Etkinleştirilir?

Zamanlayıcıyı etkinleştirmek için, kartın sıfırlanacağı eşik aralığında geçmemiz gereken “wdt_enable” işlevini kullanıyoruz. Kullanım durumumuza bağlı olarak, bu, watchdog kitaplığında bulunan önceden tanımlanmış ayarlarda 15 milisaniyeden 8 saniyeye kadar herhangi bir yerde olabilir.

EŞİK - SABİT ADI

15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S

3. Adım: Programınızı Çalıştırmaya Devam Edin

Programınızı Çalıştırmaya Devam Edin
Programınızı Çalıştırmaya Devam Edin

Şimdi, zamanlayıcı etkinken, Arduino'muzu sıfırlamasını önlemek için, eşik aralığı sona ermeden önce watchdog zamanlayıcısını sıfırlamak için periyodik olarak “wdt_reset” işlevini çağırmamız gerekiyor.

Bir sıfırlama aralığı seçerken, veri okuma veya gönderme veya harici sensörlere bağlanma gibi uzun işlemleri dikkate almamız çok önemlidir. Herhangi bir yanlışlıkla sıfırlamayı önlemek için sıfırlama eşiği bu sürelerden en az bir buçuk kat daha büyük olmalıdır.

Adım 4: Örnek Kullanım

Örnek Kullanım
Örnek Kullanım
Örnek Kullanım
Örnek Kullanım
Örnek Kullanım
Örnek Kullanım

Buradan indirebileceğiniz örnek programda önce watchdog timer'ı 4 saniyelik reset aralığı ile kurduk. Daha sonra kurulum fonksiyonunda olduğumuzu bilmek için bir LED'i 3 kez hızlı bir şekilde yanıp sönüyoruz ve ardından ana döngüde önce zamanlayıcıyı sıfırlıyoruz, bir LED'i giderek daha uzun aralıklarla yakıyoruz ve sonra kapatıyoruz. Bir sonraki döngü, yanma süresi 4 saniyeden uzun olana kadar zamanlayıcıyı yeniden sıfırlar.

Bu olduğunda, bekçi zamanlayıcısı kartı sıfırlar ve kurulum yeniden yürütülür.

Adım 5: Watchdog Zamanlayıcı Sorunları

Arduino'nuzun bootloader'ına bağlı olarak watchdog zamanlayıcı ile ilgili olası bir sorun, watchdog zamanlayıcı değeri çok düşükse ve bootloader yeni kod yüklerken zamanlayıcıyı sıfırlamazsa, Arduino kartınıza bir şekilde zarar verebilirsiniz. her zaman önyükleme aşamasında takılıp kalacaktır. Önyükleyici başlamaya çalışacak, ancak zamanlayıcı kartı sıfırlamaya devam edecek ve asla düzgün şekilde başlamasına izin vermeyecektir. Bunun gibi sorunları önlemek için her zaman 2 saniye veya daha fazla eşik aralıkları kullandığınızdan emin olun.

6. Adım: Keyfini çıkarın

Eğlence
Eğlence

Gerçek bir projede watchdog zamanlayıcıyı nerede kullandığınıza dair bir örneğiniz varsa, yorumlarda bana bildirin, videoyu beğenmeyi ve abone olmayı unutmayın.

Şerefe ve okuduğunuz/izlediğiniz için teşekkürler!

Önerilen: