Çoğu mikrodenetleyici (örn. AVR'ler, MSP430'lar, PIC'ler, vb.) Bir dizi farklı uyku modunu destekler. "En derin" uyku modu, en düşük güç tüketimini (örn. "Güç Kapatma", "Kapat") algılayan moddur, ancak tüm saat sistemleri genellikle bu modlarda durdurulur ve bana göre " uyandırma ", harici uyaran yoluyla yapılır (örneğin pim değiştirme kesintileri, talaş sıfırlama). Bir şey mi kaçırıyorum? Bir MCU için periyodik bir uyandırma sinyali oluşturmak için inanılmaz derecede düşük güç yöntemleri var mı?
Hedefim güç tüketimini en aza indirgemek (yani mümkün olduğunca uzun süre uyu, mümkün olduğunca kısa süre uyanık kalmak), bir işlevi yerine getirmek için periyodik olarak uyanırken, bu tür davranışları başarmanın ortak yolu nedir? Daha da basitleştirmek için, fonksiyonumun vatansız olduğunu varsayalım (bunu yapmak için geçmişten hiçbir şey hatırlamak zorunda değilim).
Bu etkiyi elde etmek için MSP430'da WDT'yi kullanma konusunda bazı başarılar yaşadım. Sadece ana rutinimi fonksiyonum haline getirdim, son satır bekçi zamanlayıcısının belirli bir süre sonra sona ermesini ve LPM4.5'e veya "derin uyku" modunun adı ne olursa olsun sürmesini sağlıyor. Net sonuç, işlevin yerine getirilmesidir, MCU uyur, WDT'nin süresi dolar ve çip sıfırlanır, ad nauseum. Bu tür davranışları elde etmenin "daha iyi" ya da "daha zarif" ya da "daha fazla enerji tasarruflu" bir yol olup olmadığını mı merak ediyorsunuz?
Bu yaklaşımı henüz bir AVR ile denemedim, ancak WDT'nin AVR'lerde MSP430'a göre daha fazla "güç aç" olduğunu düşünüyorum, bu nedenle düşük güç çalışması için daha az çekici olabilir. Belki de düşük güce "evrensel" bir yaklaşım yoktur ve belirli bir ürün yelpazesinin sağladığı araçları kullanmanız gerekir. Yeni picoPower serisinin, uygulamanızı bu yapıya sığdırırsanız CPU'nun uyanık olmasını gerektirmeyen Olay Sistemi ve Uyku Yürüyüşü gibi birçok whiz-bang özelliği olduğunu biliyorum ...
Tamam, dolaşmam yeterli, işte sana ne söyleyeceksin :)
Düzenle Teknikleri gösteren somut örnekler de harika olurdu!