ATmega48 / 88/168/328 mikrodenetleyicileri birçok ürünümüzde uzun yıllardır başarıyla kullanıyoruz. Şimdi A ve PA varyantlarından yeni PB varyantına geçmeyi düşündük (çünkü yeni ürünlerde ekstra pimlere, zamanlayıcılara ve UART'lara ihtiyacımız olacak, çünkü daha ucuz hale geliyor ve eski varyantların kesileceği görülüyor), bu yüzden ATmega328A'yı ATmega328PB ile değiştirdik. Elektrik kesintilerinden sonra çok sık saman gibi görünüyor . Bu tür problemler eski varyantlarda hiç görülmedi.
Ürünlerimizin kullanımı için düzenli güç kesintileri normaldir. Biz (böyle bir anahtarlama güç kaynağı kullanmak bu bir 5V seti) ve ATMEGA en VCC üzerinde 220μF aralığında kapasitörler var, misyon olmayan iç durumlarını saklamak için, birkaç dakika aralığında güç kesintileri hayatta SRAM tutmak kritiktir, ancak yeniden başlatma sonrasında anında kullanılabilir olarak kullanıcı deneyimini önemli ölçüde artırır (bu durumlar EEPROM'u uygunsuz hale getirmek için yeterince sık değişir). Bu her zaman işe yaradı.
Bununla birlikte, yeni ATmega328PB ile, bir güç kesintisinden sonra, yonga MCUSR'de bir sıfırlama koşulu bulunmadan sıfırlanır ve saat haywire gibi görünüyor.
- kahverengileşme detektörü sigorta başına ayarlanır. Her mevcut seviyeyi denedik, hata hepsinde oluyor.
- sigorta başına doğru ayarlanmış harici 20 MHz kullanıyoruz.
- 3 farklı yonga denedik, bu yüzden tek bir lehimleme veya diğer donanım hatası değildi.
Hata meydana geldikten sonra, saat genellikle 2.5 kat daha düşük bir hıza ayarlanır, bu da mcu'nun 8 MHz dahili osilatör tarafından saatlendiğini gösterir. Ancak, bazen yavaşlama 6x civarındadır. Bu, sigortaları yazılımdan ayarlayamadığım için saat bölücüyü değiştiren bir yazılım hatası olamaz ve saat bölücü saati 2,5 veya 6'ya bölemez.
İlk şüphem yeni Saat Arızası Tespit sigortasıydı. Ancak, açık veya kapalı olursa olsun, davranış aynı kalır.
Yazılım özelliklerini göz ardı etmek için sıfırdan basit bir test programı yazdım, bu başka bir şey yapmaz, ancak bir zamanlayıcı kesintisinden 100 Hz'lik bir çıkışı değiştirir ve her yeniden başlatmadan sonra LED'lerle hangi sıfırlama koşullarının etkinleştirildiğini gösterir (MCUSR'den okunduğu gibi). Donanımın geri kalanı da çıkarıldı, sadece mcu ve regülatör var (ve seri dirençli gösterge ledleri).
Sonuçlar
Kabaca 2/3, ilginç bir şey olmaz. Güç kesintisinden sonra, mcu işine devam eder, hem esmerleşme sıfırlama hem de güç açma sıfırlama göstergeleri yanar.
(görüntüde, kırmızı geçiş pimi ve mavi VCC'dir. Bu görüntüde, 2,7 V bronwn-out açıkça görülebilir. Diğer brown-out ayarlarıyla aynı testleri yaptım, sonuçlar tamamen aynı, bu resimleri atlayacağım)
Güç tekrar olduğunda Kabaca zamanın 1/3, yukarıda bahsedilen böcek meydana gelir ve, hiçbiri kahverengi-out reset ve sıfırlama göstergeler açılış ait aydınlatılır! Çıkış, mcu garip bir saatle çalışıyormuş gibi farklıdır. Kaotik değil, aynı frekansta ilerliyor.
İlginç bir şekilde, bu durumda, kahverengileşme dedektörü tamamen pasif görünüyor, çünkü bir sonraki güç kesintisinden sonra (doğru saatin bazen geri yüklendiği, bazen değil), çıkışın kahverengiden sonra iyi değişmeye devam ettiği açıkça görülmektedir. çıkış seviyesi geçti. Bu gibi durumlarda, saat bazen hızlanır, bazen yavaşlar:
Bu testler sırasında başlatma gecikmesi için 16K CK / 14CK + 4.1 ms kullandım (ancak 65 ms gecikme problemlerden kaçınmıyor).
Yakınlaştırılmış bir resim, burada VCC'nin 2 ms'de 5 V'de kararlı bir duruma ulaştığını açıkça görebilirsiniz:
Yukarıdaki resimde, mcu doğru şekilde başladı.
İlginç bir şekilde, çalışmadığı zaman, besleme voltajı daha erken kararlı bir 5 V'ye kadar çıkar (mcu'nun birçok kısmı açılmaz, bu nedenle başlatma sırasında daha az akım çeker)
Başarısız bir başlangıçtan bir görüntü aşağıdadır:
Yazılımın, besleme voltajı sabitlendikten sonra, aksi takdirde gerekli olan 10,5 ms yerine 85 ms'den daha uzun bir süre sonra çalışmaya başladığını lütfen unutmayın. Başlatma gecikmesi için sigortalar hala aynı, 16K CK / 14CK + 4.1 ms.
Ayrıca dikkat çeken şey, besleme kapatıldıktan sonra VCC'nin yaklaşık 1,1 ila 1,2 Volt arasında stabilize olması (eski, ATmega328A varyantı yaklaşık 0,6 - 0,7 V'a düştü). Bunu birkaç dakika korur. Yeterince uzun süre beklersem (yarım saat veya daha fazla), mcu her zaman doğru başlar! Yani sorun şu ki, veri sayfasına göre açılışta sıfırlama için yeterli olacağı garanti edilmeyen 1.1 Volt var. Ama kararma sıfırlaması için yeterli olmalı!
Bu durumlar dışında, kahverengi renkli dedektör iyi çalışır. İlk görüntüde görünür (kasa seviyesine ulaşıldığında çıkış sinyali durur ve mcu'nun parçaları kapatıldıkça voltaj düşmesi yavaşlar). VCC'yi gövde seviyesinin biraz altına düşürdüğümde ve tekrar tırmanmasına izin verdiğimde testler yaptım, mcu bu koşullar altında her zaman doğru bir şekilde yeniden başladı ve sadece kahverengi sıfırlama göstergesi yanıyordu.
Açık bir şeyi mi kaçırdım, yoksa ATmega328PB'nin kahverengi dedektöründe ciddi bir hatası var mı?
DÜZENLE:
İlginçtir, yukarıdaki problemler sadece regülatörden önce kaynağı kestiğimde ortaya çıkar. Regülatörden sonra kesersem (veya bir laboratuvar güç kaynağı kullanırsam), problemler asla gerçekleşmez. Sanki yükselen voltajın şekli problemlere neden oldu. Bununla birlikte, son görüntüden de görebileceğiniz gibi, voltaj artışı oldukça güzel ve hızlı bir şekilde stabilize oluyor.
DÜZENLEME 2
20 MHz yerine 16 MHz ile denedim, ama aynı problemler oluyor.