Mikrodenetleyici Mimarisi -3- Mikrodenetleyici Çevre Birimleri

Önceki başlıklarda mikrodenetleyicinin ne olduğunu ve temel mikrodenetleyici birimlerini size anlattık. Mikrodenetleyiciyi mikrodenetleyici yapan sadece üzerinde ROM ve RAM bellekleri bulundurması değildir. Bu entegreleri alıp bir mikroişlemci üzerinde de aynı sistemi çok bir maliyet olmadan kurabiliriz. Fakat yeri geldiğinde toplamda onlarca entegre kullanacağımız bir sistemi tek bir mikrodenetleyici çipi ile yapmamız mümkündür. Bu da mikrodenetleyicilerin zengin çevre birimleri sayesinde olmaktadır. Gün geçtikçe firmalar çıkardıkları mikrodenetleyicileri ucuzlatmanın yanında aynı fiyata daha zengin çevre birimlerine sahip mikrodenetleyicileri bizlere sunmaktadır. Mikrodenetleyicilerin işlem gücünün ve çevre birimleri artarken fiyatlarının düşmesinden dolayı mikrodenetleyici pazarı son yıllarda büyük ölçüde büyümüş ve mikrodenetleyicilerin kullanım alanları oldukça genişlemiştir. Bu yazıda bir mikrodenetleyici kullanırken karşılaşcağınız çevre birimlerinin ne olduğunu ve bize ne gibi imkanlar sunduğunu sizlere anlatacağız.

Giriş ve Çıkış Birimi (I/O)

Mikrodenetleyici dış dünya ile mikroişlemci gibi adres ve veri yoluyla irtibat kurmamaktadır. Onun yerine en temel işi yapan giriş ve çıkış portları mikroişlemcinin en temel çevre birimlerinden biridir. Bunlar ile  bir ledi yakmak, bir düğme bağlamak gibi basit işleri yapmamız mümkün olduğu gibi LCD, TFT ekran sürmek ve frekans üretmek gibi işleri yapmamız da mümkündür. Temel giriş ve çıkış ünitesi belli bir veriye göre çıkış vermektedir ve bu giriş ve çıkış yazmaçlarına yazılan veri olmaktadır. Böylelikle buradan okunan veriyi seri ve paralel olarak değerlendirip yorumlayabiliriz. Aynı zamanda da paralel olarak bir sayı değerini bu portlardan ikilik sistemde dijital çıkış olarak verebiliriz. Mikrodenetleyici’nin çalışma gerilimine göre bu portlardan 5V kaynak akım veya 0V olup akım çekme şeklinde dijital HIGH veya LOW sinyal verilebilir. Aynı zamanda giriş olarak tanımlanan ayaklardaki HIGH veya LOW sinyalleri okunabilir.

Zamanlayıcı/Sayıcılar (Timer/Counter)

Zamanlayıcı ve sayıcılar günümüzde basitleştirilmiş mikrodenetleyici platformları tarafından  görmezden gelinen birimler olsa da gerçek bir geliştirici nazarı ile baktığımızda mikrodenetleyicinin en önemli unsurlarından biridir. Mikrodenetleyici sırayla kodları işletip bunun zamanlamasını da sabit bir saat sinyalinden aldığı için zamana bağlı uygulamalarda ana program akışını gereksiz yere meşgul edip uygulamamızı yapmamız gereklidir. Hepimizin bildiği delay fonksiyonları bu işlemi yapmaktadır. Örneğin bir ledi bir saniye aralıklarla yakıp söndürmek için bir kere işe yarar işlem yaptığımız gibi 1MHz frekansta çalışan bir mikrodenetleyici için bir milyon kere boş işlem yapmamız ve o esnada gereksiz  yere meşgul etmemiz gereklidir. Bu sayma işlemini mikroişlemciden başka bir birimin yapması mikrodenetleyiciyi gereksiz yere meşgul olmaktan kurtaracaktır. Bekleme ve saat uygulamaları gibi zamanlayıcıların çıkış birimleri ve kesmeleri sayesinde sinyal üretme, sinyal okuma ve frekans okuma gibi uygulamaları yapmamız da mümkündür. Elektronikte önemli bir yeri olan PWM sinyallerini zamanlayıcılar sayesinde daha kolay yapabiliriz. Zamanlayıcılar prensip olarak aynı mikroişlemcilerin program sayacında olduğu gibi sürekli artan bir sayaç ünitesini bulundururlar. Bu sayaç ünitesi aldığı her saat sinyali ile birer birer artmaktadır. Bu artma yükselen veya düşen kenarda gerçekleşebilir. İleride dijital elektroniği anlattığımız zamanlar bu sayaç devresinin iç yapısını açıklayabiliriz. Şimdilik bu seviyede sayaç hakkında bu kadar bilgi edinmemiz yeterlidir.

Kesmeler (Interrupt)

Kesmeler aslında bir mikrodenetleyici sisteminden çok mikroişlemci sistemine ait bir yapıdır. Yani mikrodenetleyicilerin bize ek özellik olarak sunduğu bir şey olarak anlamamak gerekir. Mikroişlemci sistemlerinde programlanabilir kesme denetimcisi olarak eklediğimiz aygıt mikrodenetleyicilerde gömülü olarak gelmektedir. Kesmeler bir mikroişlemci sisteminin olmazsa olmazlarındandır. Pek çok işletim sistemi ve olay tabanlı çalışan program kesmeler üzerine bina edilmiştir. Kesmeleri fonksiyon ve döngülerden (sub-routine) ayıran en büyük özellik bunun yazılım tarafından değil harici bir donanım tarafından gerçekleştirilmesidir. Harici bir donanım program akışına müdahale etmekte ve bu program akışına müdahaleyi kullanıcı denetleyebilmektedir. Böylelikle yazılımsal yönden kalan zayıflık donanım yönüyle kuvvetlendirilmektedir. Örneğin bir düğmeye bastığımızda bir ledin yanmasını istiyorsak yazılımda sürekli düğmenin giriş ayağının durumunu okuyup buna göre bir karar mekanizmasıyla ledi yakmamız ve bunu da gecikme istemiyorsak sürekli yaparak işlemciyi meşgul etmemiz gerekecektir. Fakat bu düğmenin ayağı kesme birimine bağlanırsa bunun denetimini kesme birimi yapar ve ilgili durumda mikroişlemcinin program sayacına müdahalede bulunup hafızada istenilen kod blokunun olduğu kısma atlama sağlanır.

DMA Denetimcisi

DMA, doğrudan bellek erişimi anlamına gelmektedir. Mikroişlemci mimarisini anlatırken mikroişlemcilerin bellekten veya giriş/çıkış aygıtlarından sürekli okuma ve yazma yaptığından bahsetmiştir. Eğer mikrodenetleyici bu okuma ve yazma işleriyle çok uğraşıyorsa sistemde ister istemez bir yavaşlama olacaktır. DMA birimi giriş ve çıkış birimlerinden gelen veriyi belleğe, bellekteki veriyi ise giriş ve çıkış birimlerine işlemciye uğramadan doğrudan aktararak işlemci yükünü azaltan bir birimdir. Mikrodenetleyiciye özgü olmayıp mikroişlemci sistemlerinde de sıkça kullanılsa da artık gelişmiş mikrodenetleyiciler bilgisayarların özelliklerine yaklaştığı için özellikle 32-bit mikrodenetleyicilere DMA birimi eklenmektedir.

Analog Dijital Çevirici

Mikrodenetleyicilerin analog sistemlerle sıkça muhatap olduğunu ve ölçme ve kontrol uygulamalarında kullanıldığını söylemiştik. Bir analog sistemi ölçüp yorumlamanın başlıca yolu analog veriyi sayısal veriye dönüştürüp bunu okumak, işlemek ve yorumlamaktır. Aynı bir multimetre ile bir devreyi ölçüp gerilimine göre yorumladığımız gibi bizim yazdığımız program ile mikrodenetleyici ADC birimini kullanarak biz olmadan bunu yorumlayıp hesaplayacak ve ona göre bir işlem yapacaktır. Bilgisayar sistemlerinde böyle bir analog dijital çevirici çok aşikare kullanılmaz ve programcı bununla ilgilenmez. Gömülü sistemlerde ise donanıma yakın olduğumuz gibi analog sistemlerle de sıkça beraber çalışmak zorunda kalırız. Bir bataryanın durumu, algılayıcının çıkışı, potansiyometrenin seviyesi gibi analog değerleri hassas bir şekilde okumak gerekebilir. O yüzden analog-sayısal çeviriciler olmazsa olmaz özelliklerden biridir.

Seri İletişim Birimleri

Mikrodenetleyicileri incelerken paralel iletişim birimi olmadığını fark edebilirsiniz. Aslında bu zaten I/O portları vasıtasıyla paralel iletişim yapmamızdan kaynaklanmaktadır. Seri iletişimde ise tek bir protokol olmayıp birbirinden farklı yollar ve protokoller mevcuttur. O yüzden seri iletişim türüne göre birbirinden ayrı protokoller için ayrı birimler yer almaktadır. Bu seri iletişim I/O portları vasıtasıyla yazılımsal olarak da yapılsa da gereksiz yere işlemciyi meşgul edebileceği gibi yeteri kadar da performans alınamamaktadır. O yüzden mikrodenetleyici tercihinde seri iletişim birimlerinin yeri büyüktür. Artık dijital devreler ve entegreler birbiriyle belli başlı iletişim protokolleriyle iletişime geçtiğinden bizim mikrodenetleyiciye bağlayabileceğimiz ürünlerin sayısı mikrodenetleyicinin ne kadar fazla protokolü desteklediği ile doğru orantılıdır.  Seri iletişim prokolleri olarak SPI, I2C, LIN, CAN, USART gibi protokolleri örnek verebiliriz. Yalnız bu protokoller hakkında bilgiyi seri iletişim konusunda sizlere vereceğiz.

 

Bu bahsettiğimiz belli başlı birimlerden başka mikrodenetleyici sistemine ait besleme birimi, reset birimi, güvenlik birimleri, sigorta ayarları ve saat birimi gibi birimler bulunmaktadır. Bazı mikrodenetleyicilerde analog karşılaştırıcı, opamp, dijital-analog çevirici, ethernet denetleyicisi gibi birimler de bulunmaktadır. Biz konudan çıkmama ve çok uzatmama adına bu kadarıyla yetiniyoruz.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.