Mikrodenetleyiciler - çıkış durumları sabit mi yoksa çoğullanmış mı?


14

PWM açıkça bilgi işlem kaynakları gerektirir (ve bu nedenle diğer süreçlerle aynı anda yapılamaz), ancak bir pimi çıkış 5V veya 0V olarak ayarlayacak olsaydım, bu durumlar sabit mi kalıyor yoksa mikrodenetleyici diğer süreçlerde çalıştıkça tekrar tekrar "yenileniyorlar mı?" ?

Bu metinde açıklamak zor, bu yüzden soruma bir benzetme düşündüm. Elimde bir bardak olduğunu hayal et ve masanın üzerine koymam talimatı verildi. Sonra bir sandalyeye oturmam talimatı verildi.

Masanın üzerindeki cam bir durumdur. Camı masanın üzerinde bırakıyor muyum, yoksa tekrar alıp oturuyorum ve çok hızlı bir şekilde tekrarlıyorum, böylece camın masadan çıkarıldığını fark etmiyor musunuz?


Veya daha basit bir şekilde, eğer bir durum değişikliği açıkça programlamazsanız, mikrodenetleyici pinlerini durumu hakkında "unutur" mu?

Umarım bunu mümkün olduğunca kafa karıştırıcı yaptım.


4
+1 İlk ifadeniz yanlış ve donanım PWM fikri, işlemcinin her zaman dahil olması gerekmediği için ilginç bir soru. Ama bu şekilde bırakın ve eminim ki birisi her şeyin nasıl çalıştığına dair iyi bir açıklamaya sahip olacak.
PeterJ

PWM'nin işlemcinin YÜKSEK / DÜŞÜK döngü süresini değiştirdiğini düşündüm. Bu şekilde, işlemcinin doğrudan dahil olduğu görülüyor - en azından durumun değiştiği zaman.
sherrellbc

1
Görev döngüsünü% 10'dan% 20'ye değiştirmek için CPU'nun dahil edilmesi gerekir, ancak yalnızca birkaç döngü için bir kaydı değiştirmek gerekir. Donanım PWM için, donanım PWM frekansı 1MHz olsa bile% 20 olarak değiştirildikten sonra artık işlemciyi etkilemez.
PeterJ

Mikrodenetleyicinin daha düşük bir seviyede nasıl çalıştığı ile ilgili belgelere iyi bağlantılarınız var mı? Kayda yapılan referanslarınızı anlamıyorum, bu yüzden bu cevapları tam olarak takdir edemem.
sherrellbc

1
Çok kafa karıştırıcı değil. Daha çok deneyin!
radagast

Yanıtlar:


16

Soruyu yorumlama şeklimin PWM ile bir ilgisi yok, eğer temelden uzaktaysam özür dilerim, ama bunu sadece bir örnek olarak kullandığınız gibi görünüyor.

Hemen hemen her tür mikrodenetleyici ve G / Ç'li cihazlar çıkış devrelerini çalıştırmak için bir mandal / FF kullanır. Bunun anlamı, bir durum belirlediğinizde o durumda kalır. Durumlarında kalmak için çıktı istatistiklerinin sürekli olarak "yenilenmesi" gereken DRAM gibi değildir.

Cam örneğinizle, camı tekrar tekrar masanın üzerine alıp yere indirecek herhangi bir donanım görmedim. Camı sadece masaya koyar ve devlet değişikliği talep edilinceye kadar orada bırakırdı.

PWM'ye geri dönme (aslında PWM hakkında soru sormanız durumunda). İster bitbang ister mikro denetleyicinizin belirttiği diğer mesajlar gibi özel donanımları olsun, G / Ç bloğuna yalnızca çalışan kod veya PWM çevre birimi tarafından bir durum değişikliği istendiğinde erişilir ve değiştirilir.


Bu tam olarak benim sorum, ancak mikrodenetleyicilere anlamadığımı fark etmediğim çok şey var gibi görünüyor.
sherrellbc

3
Burnunuzu veri sayfalarında tutun, deney yapın ve sorular sorun. Onu asacaksın.
Kris Bahnsen

11

Mikrodenetleyici çıkışları yenilemek zorunda değildir. Bir kez kurulduktan sonra durumlarını süresiz olarak tutarlar (güç kesilene kadar). Eski işlemcilerde işlemcinin durumunu korumak için saat gerekliyken, bugünün işlemcileri tamamen statik olarak adlandırılan şeydir. Bu, saatin gerçekten durdurulabileceği ve her şeyin mevcut durumunda kalacağı anlamına gelir. Çünkü tüm kayıtlar (I / O dahil) parmak arası terlik kullanılarak yapılır.


Ve ilerleme kaydediyoruz! Teşekkürler şimdi daha mantıklı. Teşekkür ederim!
sherrellbc

10

Çoğu modern mikrodenetleyici, PWM ile ilgilenen özel bir donanım PWM çevre birimine sahiptir, çok kaba bir benzetme şunlar olabilir:

İşlemci çekirdeği, çevre birimine şunları söyler: "aksini söyleyene kadar bu pimi 10kHz ve% 50 görev döngüsünde değiştirin". O zaman çekirdek başka şeyler yapmakta serbesttir. Bir kesinti ayarlayabilir, yani çevre biriminden ilgilenilen bir şey olduğunda bunu söylemesini isteyebilirsiniz.
Çekirdeği "patron" ve çevre birimleri uzman işçi olarak düşünebilirsiniz. Çekirdek tüm programı yönetir (her bir talimatı okur ve ona göre hareket eder) ve çevre birimlerinden çeşitli görevleri yapmalarını ve tamamladıklarında bunu bilgilendirmelerini ister.

Analojinizde, sanki başka bir kişi camı tutuyor gibi, sandalyeye oturmakta özgürken masaya yerleştirmelerini söylersiniz.

Mikro özel bir çevre birimine sahip olmasaydı, bunu "manüel olarak" (yani kendisi) yapmalı ve pimler arasındaki geçişi ve zamanlamayı takip etmelidir. Bu, basit bir çevre birimi tarafından kolayca ele alınabilen oldukça önemli şeylere adanmış birçok döngü anlamına gelir.

İşte popüler bir 8 bit mikrodenetleyici PIC16F690'ın düzeninin bir diyagramı . Altta bulunan çevre birimlerine dikkat edin:

resim açıklamasını buraya girin


Bu tür çevresel bileşenlerin var olduğunu fark etmedim. Peki bu bileşenler oldukça küçük işlemciler mi? Bu tür şeylerin var olması çok mantıklı.
sherrellbc

İşlemciler değil, hayır - çevre birimleri, belirli bir görevi yerine getirmek için özel olarak tasarlanmış özel donanım bloklarına benzer. Örneğin, tipik bir mikroda ADC, PWM, Zamanlayıcılar, UART, SPI, vb. Gibi çevre birimleri bulunur
Oli Glaser

Kesinlikle önyargılıysa, bu sistemleri anladığım halde, bu konuyu kesinlikle daha derinlemesine inceleyeceğim. UC'nin tüm işlemleri yapacağını düşünüyordum. Çevre birimlerine verilen "talimatlar" yorumlanmalıdır. Sanırım tam olarak anlayamadığım yer burası.
sherrellbc

2
Tipik bir mikro diyagram çizdim - okumaya başlamak için iyi bir yer de bağlı olduğum veri sayfası.
Oli Glaser

@sherrellbc, işlemci ve mikroişlemcinin farklı olduğu yer. Bir µC'de, örneğin RAM, ROM, ALU, Seri Bağlantı Noktası vb. Aynı çipe entegre edilmiştir. Bir bilgisayarda, işlemcinin bu tür devrelere harici olarak bağlandığını bilirsiniz.
chwi

5

Tam olarak geçerli olmayan bazı varsayımlar yapıyorsunuz. Ayrıca, evet, soruyu mümkün olduğunca kafa karıştırıcı yaptınız. Ciddi anlamda.

PWM diğer işlemlerle aynı anda yapılabilir. Yazılımda yapılırsa, bir GPIO pininde PWM sinyali oluşturmak için zamanlayıcı kesintilerini kullanırsınız. Diğer kesintiler de olabilir ve ana süreç ilgisiz şeyler yapmaktır. Ayrıca, birçok MCU, PWM'yi doğrudan zamanlayıcı çevre biriminde yapabilir ve MCU'yu başka şeyler yapmak için serbest bırakır.

I / O Pinlerine gelince, bunlar çoğullanır. Ama nasıl çoğullandıklarını kontrol ediyorsunuz, bu gerçekten bir sorun değil.


PWM zamanlayıcı kesintileriyle ilgili yorumunuzu anlıyorum - bu mantıklı. Bu şekilde, işlemci yalnızca çıkış durumunu değiştirdiği anda dahil olur. Her ne kadar I / O pinlerinin çoğullandığını söylüyorsunuz - yani, eğer denetleyiciyi bir YÜKSEK pim çıkartacak şekilde programlayıp daha sonra başka bir ilgisiz hesaplama gerçekleştirirsem, bu tür işlemler yapılırken pim anlık olarak DÜŞÜK olarak ayarlanır?
sherrellbc

@sherrellbc Pinlerin nasıl çoğulladığını kontrol ediyorsunuz. Normalde bunları önyükleme sırasında yapılandırırsınız ve bundan sonra değiştirmezsiniz. Bu yüzden, özellikle bunu söylemediğiniz sürece, "anlık olarak düşük" olmaz.

PWM örneğini ekleyerek okuyucuları kafam karıştıysa özür dilerim. Bu sorunun amacı YÜKSEK olarak ayarlanmış talimatlı bir G / Ç pininin kontrolör tarafından çoğulup çoğaltılmadığını belirlemekti (yani pin durumlarını sürekli olarak "yenilemesi" ve her seferinde sadece bir şey yapması gerektiğinden). Ancak, şimdi mikrodenetleyicilere anlamadığım çok şey olduğunu anlıyorum (çevre birimleri). Bu yüzden bana cevap hayır, çıkış pimleri bir duruma ayarlanmış ve sürekli değişene kadar bu durumda kalır.
sherrellbc

1

Mikrodenetleyicilerdeki G / Ç pinlerinin çoğu çok işlevlidir, ancak bunları çoğullamalı olarak adlandırmazdım.

Örneğin, bir AVR üzerindeki birkaç pim dijital giriş, dijital çıkış veya analog giriş olarak kullanılabilir. Normalde, program başlatmanın bir parçası olarak istenen işlevi seçer ve daha sonra değiştirmezsiniz (aynı sinyali görüntülemek için bir analog girişi dijital girişe değiştirmenin bir nedenini görebilirim.)

Dijital çıkışlar için, pinler çıkış olarak ayarlandığında, işlemcinin kendilerine yazdığı son değeri tutarlar - periyodik olarak "yenilemeye" gerek yoktur.


İşlemci değeri ayarlarsa, bu değeri kaldırırsa, diğer yönergeleri uygular ve sonra döngüde kalır ve orijinal değeri yeniden ayarlarsa çoğullanırlar. Sorumun özü bu. Bununla birlikte, yukarıdaki cevaplardan bu işlevleri yerine getiren çeşitli perihperaller vardır ve işlemcinin aksi belirtilmedikçe onunla hiçbir ilgisi yoktur; Bu konuda hiçbir fikrim yoktu. Öğrenecek çok şey var. Cevap için teşekkürler.
sherrellbc

1

Mikrodenetleyici donanım PWM çevre birimine basit bir örnekte 8 bitlik bir dijital karşılaştırıcıya 8 bitlik bir sayaç bağlanabilir. Mikrodenetleyici, karşılaştırıcıya bir sayı yükleyecek ve sayacı sistem saati veya bunun önceden belirlenmiş bölünmüş bir versiyonu ile artıracaktır. sayaç daha sonra 0 ila 255 arasında sayılır ve tekrar tekrar sıfıra geri sayar. Karşılaştırıcı, sayaç değerinin karşılaştırıcı değerinden büyük veya küçük olduğunu belirten bir çıktıya sahip olacaktır. Bu PWM çıkışı olur. PWM süresi sayacın bir sayım döngüsünü tamamlaması için ne kadar zaman alacağı ve görev döngüsü toplam sayımın hangi bölümünün karşılaştırıcı değeri ile temsil edildiği olacaktır. Mikrodenetleyici kodunun, donanımın başlangıçta ayarlanması ve bir pwm değişikliği istendiğinde karşılaştırıcı verilerinin değiştirilmesi dışında hiçbir şeyi olmayacaktır. PWM, işlemci dikkati çekmeden sürekli bir PWM darbeleri akışı üretecektir.

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.