ATmega'nın yeni “PB” varyantlarında kararma detektöründe bir hata var mı?


9

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)

iyi başlıyor

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.

çılgın bir halde yeniden başlar

İ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:

Kararma yok, saat hızlanıyor Kahve çıkmaz, saat 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:

başarılı başlangıç, yakınlaştırılmış

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:

başarısız başlangıç, yakınlaştırılmış

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.


Atmel ile temasa geçtiniz mi veya onların hatalarına baktınız mı? Bu gün ve yaş IC tasarım hataları oldukça yaygındır.
Edgar Brown

Erratas'a baktım (bu yönde bir şey bulamadık) ve Atmel ile iletişime geçmeyi düşünüyoruz, ancak daha fazla test yapmadan ve biraz daha etrafa bakmadan önce değil.
vsz

3
Deneyimlerime göre, üreticiyle iletişime geçmeden veya forumlarını kullanmadan önce zaman kaybetmeyin. Çok güçlü bir durum sunmak için fazlasıyla hata ayıklama yaptınız. Bundan daha azıyla, TI, sorunumuzu belgeleyen IC'lerinden biri için bana dahili (yayınlanmamış) erratalarını gönderdi.
Edgar Brown

İki sentim değerinde: Güç çok hızlı yükselirse diğer CPU'larla ilgili sorunlar gördüm. Bazı üreticiler maksimum bir yükselme süresi belirler, ancak daha sıklıkla bundan bahsedilmez.
Oldfart

Yanıtlar:


3

Kahverengi dedektörde bir hata olduğunu düşünmüyorum, ama çipi nasıl kullandığınızı.

Kendiniz söylediğiniz gibi, güç kısa bir süre için çıkarılır ve bağlanırsa açılış sıfırlama eşiğine 1,1 V ulaşılmaz, bu nedenle POR olmayacaktır.

Brown-out detektörü de burada çok yardımcı olamaz. AVR'yi 20 MHz'de kullanıyorsunuz ve bunun için besleme voltajının 4,5 V veya daha yüksek olması gerekiyor ya da özellikleri ihlal ediyorsunuz. Ve BOD, 4.5 V'da açacağını garanti etmez, genellikle 4.3 V'den daha azdır. 20 MHz saatiniz nedeniyle çalışmıyor. Gerilim tekrar yükselmeye başladığında, besleme gerilimi tekrar güvenli bir 4,5 V seviyesine gelmeden BOD devre dışı kalır. Doğru tetiklenmişse. Daha sonra başlatma gecikme süresi, dahili sıfırlama serbest bırakılmadan önce voltajın BOİ devre dışı bırakma seviyesinden 4,5 V'a yükselecek bir değişikliğe sahip olacağı kadar yüksek olarak ayarlanmalıdır.

Ancak her şey başarısız olabilir, çünkü 20 MHz'de çalışmak için en az 4.5 V'ye ihtiyaç duyar. AVR veri sayfası, dahili sıfırlama sistemi uygun değilse, harici bir sıfırlama çipi kullanın ve bu durumda voltaj 4.5 V'a düşmeden AVR'yi sıfırlamak için sorunlarınızı çözecek gibi görünüyor.


BOD'un işlemcinin kendisini kullanmadığını, ancak özel bir donanım olduğunu varsaydım. Belki PB varyantı için değiştirdiler? Artık 20 MHz için BOD'u desteklemiyorlarsa şaşırırdım. En yüksek vücut seviyesi 4.3 V, yani 20 MHz harici bir BOİ gerektiriyor mu? Yine de bunun tek sebebi olduğundan şüphelerim var. 20 MHz, 2.7V bodlevel ile bir test yaptım, VCC'yi 3V'ye ayarladım, iyi çalıştı. Gerilimi 2.7'nin biraz altına düşürdüğümde, çıkış durdu, 2.7'nin üzerine çıkardığımda çıkış devam etti, her zaman, bir kez bile başarısız olmadı. Yalnızca 1,1 V'den başlayan bir başlatma BOİ'yi devre dışı bırakır.
vsz

Büyük olasılıkla özel bir donanımdır, ancak BOD devreye girmeden önce düşük voltaj sırasında, CPU yürütmek için flaştan doğru verilerin getirildiğinden ve CPU'nun bunları doğru bir şekilde yürüttüğünden emin olabilir misiniz? Belirtilmemiş şeyler yapan ayrılmış kayıtlara rasgele veriler yazabilir veya yazabilir. PB değişkeni için özellikler değişti ve eski çipte 20MHz için BOD'u desteklemediler. PB varyantı hem BOD hem de POR eğrilerine sahiptir ve daha sonra düşük voltajlarda devreye girer.
Justme

Lütfen ikinci resmime bir göz atın. BOD görünüşte doğru şekilde nişanlandı ve çipi sıfırladı. Yalnızca bir sonraki başlangıçta başlatılamaz. Ayrıca, bu çipi 3 V'de çalıştırdım ve doğru şekilde çalıştı, asla tek seferde başarısız olmadı.
vsz

Bence çipin güvenli çalışma alanının dışında çalışması gerekmiyor, ama devam edelim. BOİ Saat Arıza Dedektörünü sıfırlamaz, bu nedenle dahili Açılıştan sadece Güç Açma sıfırlaması ve harici sıfırlama kapanacaktır. Bu yüzden CFD sigorta ayarlarını iki kez kontrol edin. Harici kristal mi yoksa harici saat mi kullanıyorsunuz? CFD sigortası daha önce Full Swing sigortası olabilirdi. Tam salınım sigortası olmadığından, bir kristal için maksimum frekans 16MHz'dir ve 20MHz harici mantık seviyesi saat sinyali gerektirir. Kristal bir başlangıç ​​sorunu da olabilir, bu yüzden kristal pimlere de bir kapsam koyun.
Justme

Bir kristal kullanıyorum. İyi fikir, buna bakacağım. CFD açık ya da kapalı olsun, görüntülerle tasvir ettiğim aynı davranışın gerçekleştiğini lütfen unutmayın.
vsz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.