Mikrodenetleyiciler keyfi olarak düşük saat frekanslarında çalıştırılabilir mi?


103

ATTiny13A veri sayfası, örneğin, 0 MHz Min frekansını listeler. Bu, saatin herhangi bir kötü etkisi olmayan keyfi herhangi bir düşük frekansta çalıştırılabileceği anlamına mı geliyor? Düşük saat hızlarında daha düşük akım çekeceğini tahmin ediyorum. 0 MHz, saati tamamen durdurabileceğiniz ve güç devam ettiği sürece durumunu sürekli olarak hatırlayacağı anlamına mı geliyor?


34
Eklemek isterim, bu mükemmel bir soru. Birçok kıdemli EE, ya sizin için bir tamamlayıcı olan ya da onlara hakaret eden veri sayfalarını okuyup düşünmek için zaman ayırmaz, ikisini de belirtmek isterim.
Kortuk

Özel olarak talimat vermediğiniz sürece (çeşitli güç tasarrufu seçenekleriyle) dahili RC osilatörünün kapatıldığından tam olarak emin değilim. Ne için kullanıldığından emin değilsiniz, ama en azından EEPROM ve muhtemelen ADC için.
jippie

1
@jippie ne iç RC söylüyorsun? Örneğin ATMegaX, sistem saati için dahili RC'ye sahiptir (normalde 8Mhz, isteğe bağlı div 8 önceden ölçeklendiricili), gözcü osilatörüne sahiptir. Sistem saati sigorta seçili ve harici saati kullanırken muhtemelen kapalı. Söylediğiniz gibi diğerleri güç tasarrufu modları tarafından devre dışı bırakılabilir, ancak sistem saatinde duracağından şüpheliyim.
Diego C Nascimento

Yanıtlar:


73

Evet. Veri sayfasında "tamamen statik çalışma" yazıyorsa, 0 Hz'de bile istediğiniz hızda saat kullanabilirsiniz. Bir "dinamik" yonga belirli bir hızda bir saate sahip olmalı ya da durumunu kaybediyor.


1
Buna izin veren bir mikro örneğiniz var mı?
MrEvil

4
Çip üzerinde flaş içeren mikrodenetleyiciler, flaşa yazarken minimum (ve maksimum) flaş saat hızını belirleyebilir. Ancak, flaştan okurken bu geçerli değildir.
Steve Melnikoff

8
BayEvil, soruda belirtilen Atmel AVR ATtiny serisi, tamamen Atmel AVR yongalarının çoğunu düşündüğümden, tamamen statik. Ve sanırım tüm Microchip'in PIC mikrodenetleyicilerinin çoğu.
todbot

7
Aslında, ATTiny13A’daki ADC’nin düşük frekanslarda çalışmadığını düşünüyorum, belki de örnek tut ve tut kapasitör çürümesi yüzünden? "Varsayılan olarak, ardışık yaklaşım devresi, maksimum çözünürlük elde etmek için 50 kHz ve 200 kHz arasında bir giriş saati frekansı gerektirir. ... ADC modülü, 100 kHz'in üzerindeki herhangi bir CPU frekansından kabul edilebilir bir ADC saat frekansı üreten bir ön ölçekleyici içerir."
Endolith

8
endolith - Kabul ediyorum, ADC'ler genellikle düşük frekanslarda çalışmıyor. Söyleyebileceğim kadarıyla, pratik olarak tüm modern mikrodenetleyiciler üzerindeki her şey "0 Hz", aka "süresiz olarak duraklat" a kadar yolunda çalışmaya devam ediyor. Özellikle, birçok mikrodenetleyicinin, tüm saatleri durduran bir şey - tipik olarak bir düğmeye basan bir kişi - uyanana ve bıraktığı yerden devam edene kadar "düşük güçte uyku" modu vardır. en.wikipedia.org/wiki/Static_logic_(digital_logic)
davidcary

23

Başka bir cevap gönderiyorum, çünkü son sorduğunuz soru daha önce cevaplanmadı.

Todbot tamamen doğru. Aynı zamanda düşük hızlarda düşük güç çekecektir. Ayrıca, saatini başka bir işlemciden tedarik ederseniz, örneğin, herhangi bir noktada beslemeyi durdurabilir ve daha sonra saat hızına geçmeden, maksimum hızdan daha hızlı gitmediğiniz sürece iyi olacağınız anlamına gelir.

Chips I 32768Hz osilatör ve 1MHz olanı arasında bir büyüklük sırası alıyor. Hıza ihtiyaç duymadığım uygulamalarım oldu, sadece benim için bazı temel veri işlemlerini yapan başka bir küçük çocuğa ihtiyacım vardı.

Bu yardımcı olur umarım.


9
Her zaman bir mikroişlemcinin saat çizgisini bir tuşla çalıştırmak istemişimdir. İnsan saat olsun. :) Ciddi bir kayda göre, bu statik tasarımlar hakkında gerçekten güzel şeyler, güç tüketimlerinin saat hızı ile doğrusal olması: saati yavaşlatmak ve daha az güç kullanmak. Bu gerçekten kullanışlı olabilir.
todbot

5
Evet, ama şunu belirtmek isterim ki, güç tüketimi bir kayma bile olmadan doğrusal bir fonksiyondur, hatta bir saat olmadan da güç tüketirler, özellikle de herhangi bir çıkış sürülüyorsa. İşimde yeni stajyerlerimiz var, bir buton kullanıp ne olduğunu görmemizi önereceğim.
Kortuk

13
@ todbot Güzel fikir. :-) Ancak düğmeyi kaldırdığınızdan emin olun.
starblue

4
Bir "grind crank" ile deneyin (Jargon anlamında olduğu gibi: jargon.net/jargonfile/g/grindcrank.html ) :-)) (ve evet, yıllar önce Turbo Pascal'ı kullanırken kod yazmak için bir tane yaptım okulda :-)
Axeman

@todbot Kaba bir soyutlamayı kabul edebiliyorsanız, çok uzak veya zor değil. Bilgisayarların nasıl çalıştığını öğretmek için bu gibi araçları kullanan birçok insan örneği vardır. Myke Predko'nun gerçekten iyi bir kitabı var ve hatta PCB'lerle birlikte geliyor (bilgisayar projesi için olmasa da): amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/…
Lou

17

Çoğu modern mikrodenetleyici tasarımı, yalnızca belirli bir minimum uzunluğun altında olmaması, düşük darbe belirli bir minimum uzunluktan düşük olmaması ve düşük-yüksek-düşük-yüksek-düşük-yüksek olmaması koşuluyla, saat girişlerinde herhangi bir desenle çalışacaktır. Darbe çifti belirli bir uzunluğun altında. Temel olarak olan şey, çipin belirli bir saat kenarıyla ilişkili tüm eylemleri gerçekleştirmesinden sonra, çipin bir sonraki saat kenarını beklemekten başka hiçbir şey yapmadığı bir durumda olacağıdır. Eğer bir sonraki saat kenarı on gün boyunca gelmezse (yonganın bazı harici gözcüleri olmadıkça) yonga, yonga için hazır olduğu anda kenar gelmiş gibi aynı durumda olacaktır.

Genel olarak, saati bir mikrodenetleyicide duraklatmak akım tüketimini önemli ölçüde azaltacaktır, ancak "uyku" özelliğini kullanmak kadar önemli olmayacaktır. Çoğu mikrodenetleyicinin "çalıştırma" modundaki mevcut tüketimi, sabit sakin bir akım artı saniyede bir döngü başına belirli bir miktarda akım olarak tahmin edilebilir (bu, döngü başına şarj olarak daha doğal olarak ifade edilebilir). Örneğin, bir yonga, 10uA'lık bir sakin akıma, artı 0.1mA / MHz'lik bir akıma (100pC / devir) sahip olabilir. Böyle bir çipi 10MHz'de çalıştırmak 1.01mA'lık bir akım verir. 1 MHz'de çalıştırılması, 0.11mA verir. 100 KHz’de çalıştırılması 0.02mA verir. 1 Hz woudl verimi 0.0100001mA'da çalışıyor. Öte yandan, çip 1uA uyku akımı sunabilir. Genellikle, uyku moduna girerken, çip uyurken yararlı bir şey yapmayacak olan çip alanlarını tamamen kapatacak, böylece bu tür alanlarda olabilecek herhangi bir kaçak akımı önleyecektir. Bazı durumlarda, kayıt dosyaları gibi alanlara giden voltajı, kayıt dosyalarının içeriklerini tutabilecekleri bir seviyeye düşürür, ancak çok hızlı bir şekilde erişemezler (hiç erişilmediğinden, erişim hızı önemli değildir) .

Bazı eski mikroişlemciler, mikro denetleyiciler ve diğer aygıtlar saatin maksimum ve / veya saatin en düşük olduğu zamanlara sahiptir. Bu tür işlemciler devreden tasarruf etmek için dinamik mantığı kullandılar. Dinamik mantığın bir örneği olarak, bir kaydırma yazmacını göz önünde bulundurun: tipik bir statik kayıt biti, değeri tutmak için iki transistörlü bir devre gerektirirken, dinamik bir kayıt biti bir okuma transistörünün kapısı üzerindeki değeri tutar. İki fazlı bir dinamik kaydırma yazmacı NMOS'ta bit başına dört NFET ve iki direnç kullanarak gerçekleştirilebilir. Statik bir kaydırma yazmacı, bit başına sekiz NFET ve dört direnç gerektirecektir. Dinamik mantık yaklaşımları bugün neredeyse pek yaygın değildir. 1970'lerde, geçit kapasitansı önemliydi ve ondan kurtulmak yoktu. Bundan faydalanmamak için özel bir sebep yoktu. Bugün, kapı kapasitansı genellikle çok daha düşüktür ve çip üreticileri aktif olarak daha da azaltmaya çalışmaktadır. Dinamik mantık işini güvenilir bir şekilde yapmak, geçit kapasitansını artırmak için kasten çalışmayı gerektirir. Çoğu durumda, kapasitansı artırmak için gereken fazladan çip alanı, kapasitansı gereksiz kılmak için daha fazla transistör eklemek için etkili bir şekilde kullanılabilir.


NMOS ve IIRC'den bahsediyorsunuz, dinamik mantığın popülaritesi ile tamamlayıcı MOS (CMOS) arasında henüz bulunmayan bir bağlantı var.
jpc

JPC: Bazı NMOS yongalarının şemalarını inceledim - bazıları gerçekten dehasının gerçek bir eseri olan Atari 2600 TIA da dahil olmak üzere çok detaylı - insanlar hala otuz yıl sonra bununla yapacak yeni şeyler buluyorlar. NMOS'a göre CMOS'a karşı tasarım kolaylığı açısından bir avantaj, "çekiş" in (yüksek ve alçak-yan sürücünün yanlışlıkla eşzamanlı olarak etkinleştirilmesi), neden olarak bazı merakları itiraf edersem faktör değil CMOS bir girişteki kesişme noktasının her ikisini de etkinleştirmek yerine yüksek ve düşük taraf sürücülerini kapalı bırakacağı kadar düşük bir voltajda çalıştırılmaz.
supercat

jpc: NMOS'ta, eğer girişler yeterince "güçlü" ise, iki transistör ve iki direnç içeren bir XOR geçidi uygulamak mümkündür. Her iki girişe de invertör eklemek zorunda olsa bile, dört transistörlü dört dirençli xor kapısı birçok diğer yaklaşımlardan daha iyi olurdu. Bununla birlikte, 1978’deki BJT’leri kullanarak benzer bir devre tasarlamama rağmen, kullanılan yaklaşımı hiç görmedim (tasarım konsepti MOSFETS ile daha iyi çalışırdı, ama onlar hakkında hiçbir şey bilmiyordum).
supercat

2
+1 - Burada bahsettiğiniz asıl mücevherin, düşük saat hızlarının güç tasarrufu sağladığını ancak güç tasarruflarını optimize etmek için özel olarak tasarlanmış uyku modları kadar olmadığını düşündüğümü hissediyorum. Bağırsaklarım, uyku modunun makul kullanımıyla birleştirilen hızlı bir osilatörde daha fazla güç tasarrufu sağlayacağınızı ve sürekli olarak çok düşük bir frekansta çalıştırılacağınızı söylüyor.
Joel B,

@JoelB: Bu birçok faktöre bağlıdır. Birçok işlemcide, hızlı bir saatin açılması ile gerçekte onu kullanabilmek arasında bir gecikme var; Bu süre zarfında, kişi güç harcar. Eğer biri 100x / saniye gibi bir saatte uyanmak zorunda kalırsa, sürekli çalışmaya başlamaktan ve durmaktan ziyade yavaş yavaş koşmak daha iyi olabilir. Öte yandan, eğer bir kimse hızlı saati başlatacak ve durduracaksa, ek enerjiyi boşa harcamayıncaya kadar çalışacağı süreyi en aza indirmek iyi olabilir. Örneğin ...
supercat 14

12

Evet, saati tamamen durdurabilir ve daha sonra sonuç vermeden yeniden başlatabilirsiniz. Saati bir tuşla bile değiştirebilir ve tam anlamıyla adım adım programınızdan geçebilirsiniz (frekans: yaklaşık 0,1 Hz).

Güç, frekansla neredeyse doğrusaldır: 10 MHz'de mikrodenetleyici, 1 MHz'de 10 kat daha fazla güç tüketir. Bu, 0 Hz'de tüketimin tamamen sıfır olduğu anlamına gelmez. Her zaman statik dağılım vardır, ancak bu çok düşüktür, tipik olarak 1 uA veya daha azdır.

Not: ADC'nin minimum çalışma frekansına sahip olduğuna dikkat edin. Frekans çok düşükse, voltajın ölçüldüğü kapasitör çok fazla boşalacak ve ölçümünüz yanlış olacaktır.


Butona basınız? Ayrılma ne olacak?
Peter Mortensen

1
Yeniden başlatma gerekli.
Vovanium

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.