İçindekiler:
- Adım 1: Bu Watchdog Zamanlayıcı Nedir?
- Adım 2: Watchdog Zamanlayıcı Nasıl Etkinleştirilir?
- 3. Adım: Programınızı Çalıştırmaya Devam Edin
- Adım 4: Örnek Kullanım
- Adım 5: Watchdog Zamanlayıcı Sorunları
- 6. Adım: Keyfini çıkarın
Video: Arduino Hang Guardian - Arduino Watchdog Zamanlayıcı Eğitimi: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
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?
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?
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
Ş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
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
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:
KS-Çay-Zamanlayıcı: 4 Adım
KS-Çay-Zamanlayıcı: DurumSen ör. bir ofiste ve olması gerektiği gibi çayı demlemek istiyorsunuz (örneğin yeşil çay 2 dakika, siyah çay 5 dakika…), ancak bazen demlemeyi durdurmak için doğru zamanı kaçırıyorsunuz ve çayınızı ocaktan çıkarıyorsunuz. sıcak su. Bu çok
Diş Fırçası Zamanlayıcı: 4 Adım
Diş Fırçası Zamanlayıcısı: Fikir, diş fırçalama için 2 kişilik bir zamanlayıcı oluşturmaktır, bunun için bir mikrobit V1 kullandım.Çocuklarımın dişlerini önerilen süre boyunca fırçalamasına yardımcı olur.Çocuklarınız ve bir micr:bit varsa ve emin olmak istiyorsanız temiz dişleri var; tereddüt etmeyin
14 $'lık Sofistike Kahve Öğütücü Zamanlayıcı: 6 Adım
14 Dolarlık Sofistike Kahve Öğütücü Zamanlayıcısı: Bu proje, birkaç yıl önce yayınladığım 7 Dolarlık Kahve Öğütücü Zamanlayıcı Ders Kitabımın bir ilerlemesidir. Zaman geçtikçe daha sofistike bir kahve değirmeni ihtiyacı da artıyor. Son Eğitilebilirlik'te belirttiğime benzer şekilde, bunun amacı
555 Zamanlayıcı Atmega328'i Kesintiye Uğratmak İçin Sinyal Yaymak İçin: 7 Adım
555 Zamanlayıcı Sinyali Kesinti Vermek İçin Atmega328: Bu devrenin temel amacı enerji tasarrufu yapmaktır. Bu yüzden, arduino hakkında konuşmayacağım çünkü kartın kendisinin nihai bir ürün için gereksiz güç yükü var. Gelişim için harikadır. Ancak, batt üzerinde çalışan nihai projeler için pek iyi değil
Kendiniz Bir Zamanlayıcı Nasıl Yapılır: 10 Adım
Kendiniz Bir Zamanlayıcı Nasıl Yapılır: Zamanlayıcılar artık zamanlayıcı şarj korumalı elektrikli araç şarjı ve bazı işlevsel ağ zamanlama denetleyicileri gibi birçok uygulamada yaygın olarak kullanılmaktadır. Peki zamanlayıcı nasıl yapılır?