PIC16F84’ün 0x00~0X4F adres aralığında ayrılmış olan RAM belleği vardır. Bu bellek içerisindeki dosya kümesi (file registerler) içerisine yerleştirilen veriler PIC işlemcisinin çalışmasını yönlendirir. File registerlerin bellek uzunluğu 8 bittir. File register adı verilen özel bellek alanlarının dışında kalan diğer bellek alanları program içerisindeki değişkenler için kullanılır.
3. 3. 6. W KayItcIsI
PIC16F84’ün içerisinde akümülatör veye geçici depolama alanı olarak düşünebileceğimiz W registeri (mikroişlemcideki A kaydedicisine benzer işleve sahip) vardır. PIC içerisinde gerçekleşen aritmetik işlemler ve atama işlemleri bu kaydedici vasıtasıyla gerçekleştirilir.
3. 3. 7. I/O Pinleri ve Port Yapısı
PIC16F84’de genelde 1,2,3,17 ve 18 no.lu pinler giriş 6,7,8,9,10,11,12 ve 13 no.lu pinler çıkış olarak tanımlanmıştır. Program yazılırken istenilen pin, giriş veya çıkış pini olarak atanabilir. B portunun 8 ucu PIC içerisinde pull-up yapılmış etki gösterir.
Port uçlarından herhangi birisi çıkış olarak yönlendirildiğinde o uçtaki pull-up direnci otomatik olarak iptal olur. A portunun 4. biti TOCKI adı verilen haricî timer/counter giriş ucu ile ortak kullanılınır. RA1, RA2, RA3 ve RA4 açık kollektör özelliğinden dolayı haricî olarak pull-up direncine bağlanmalıdır.
PIC 16F84 mikrodenetleyicisi 10 MHz’e kadar bir saat hızında çalışabilir. Bu hızda çalışınca komut saykılı 400ns kadardır.
Şekilden anlaşılacağı gibi portun ilgili pininin çıkış olması için, çıkıştaki tristate bufferin aktif edilmesi, yani tris latch üzerine önceden 0 bilgisinin verilmiş olması gerekir. Eğer tris latch üzerine önceden 1 yüklenmiş ise, çıkıştaki buffer açık devre olacağı için bilgi çıkışı mümkün değildir. Bu durumda ancak oku komutu verilerek (Read Port) pin üzerindeki bilginin data busa aktarılması, yani okunması (giriş yapılması) sağlanmış olacaktır. Write port ya da write tris ise adres hattına bağlı olan seçme hatları gibi çalışırlar. Tris ve Port registerinin adreslerinden biri bank0 diğeri bank 1’dedir. Bu sebeple port ayarı programı yazmak için öncelikle bank1’e geçip (bu işlem için fsr registeri kullanılacaktır.) tris üzerine istenilen bilgi yazılır. Burada portun pinleri birbirinden bağımsız olduğu için istenilen port ucu giriş, istenilen port ucu çıkış olarak ayarlanabilir. Bunun için tris registerinin ilgili ucuna 1 ya da 0 verilmesi (giriş için 1, çıkış için 0) yeterli olacaktır.
Böylece sistemin tamamını tanımış olduk. Şimdi de dışarıdan yapılacak bağlantıları inceleyelim:
3. 3. 8. I/O Pinleri AkIm SInIrlarI
PIC16F84’ün belleğinde bulunan programı çalıştırması sırasında çıkış portlarına 0 veya 1 bilgisi gönderir. Portlara 0 bilgisi gönderildiğinde çıkış portu max 25 mA’lik giriş (sink) akımı çeker. Portlara 1 bilgisi gönderildiğinde çıkış portu 20mA’lik çıkış (source) akımı verilebilir.
3. 3. 9. MİKROKONTROLLÖR OSİLATÖR BAĞLANTILARI
Mikroişlemci ve mikrodenetleyici devrelerinin çalışması için sürekli bir saat (clock) pulsu gerekir. Genellikle bu saat zamanlama uygulamalarında dıştan bir kristal bağlamakla sağlanmaktadır. Bazı zamanın hassas olması gerekmeyen uygulamalarda ise mikrodenetleyici içerisinde bulunan saat veya dıştan direnç ve kondansatör bağlamakla saat pulsları elde edilmektedir.
PIC mikrodenetleyicilerde 5 değişik şekilde saat palsleri elde etmek mümkündür.
1) Düşük güç kristal kullanarak (LP modu)
2) Kristal / rezonatör kullanarak (XT modu)
3) Yüksek hızlı kristal / rezonatör kullanarak (HS modu)
4) Direnç / kondansatör kullanarak (RC modu)
5) İç osilatörü kullanarak (sadece bazı PIC’lerde)
3. 3. 9. 1. RC OSİLATÖR
Kararlı bir osilatör olmadığı için, genellikle zamanlamanın önemli olmadığı uygulamalarda kullanılır. RC osilatör bağlantı şekli şekilde verilmiştir. Şekilde görüldüğü gibi RC osilatör sadece PIC’in Osc1 pininden bağlanıyor. Osc2 pininden Osc1'e giren frekansın 1/4'ü kadar bir frekans çıkışı alabilirsiniz. Osc2 pinindeki frekansı kullanmanız yada kullanmamanız önemli değildir. Tabloda R ve C değerlerine göre elde edilen frekans değerleri verilmiştir. Frekans değeri, bağlanan RC elemanın toleransına, beslemedeki sapmalara ve çevre şartlarına bağlı olarak +%5-20 arasında değişim gösterebilir.
3. 3. 9. 2. KRİSTAL OSİLATÖRLER
Kullanılan diğer osilatör çeşidi ise kristal osilatörlerdir. Kristal mikrodenetleyicinin OSC1 ve OSC2 bacaklarına bağlanır ve ayrıca iki tane de kondansatör kullanılır. Kristal osilatörler kararlılığı yüksek olan osilatörlerdir.Bu yüzden genellikle bu osilatör çeşidi kullanılır. 32 KHz’den 200 KHz’e kadar olan kristal osilatörler LP, 200 KHz’den 4 MHz’e kadar olan kristal osilatörler XT, 4 MHz’den 20 MHz’e kadar olan kristal osilatörler ise HS olarak adlandırılır. Şekilde kristal osilatör bağlantı şeması verilmiştir.
Devrede görülen C1 ve C2 değerleri kullandığınız kristal osilatöre göre değişir. Tabloda kullanılan kristal osilatöre göre C1 ve C2 değerleri verilmiştir. Burada dikkat edilmesi gereken konu C1 ve C2 değerlerinin birbiri ile aynı değerde olması gerektiğidir.
Bazı PIC microdenetleyicilerde (örneğin PIC 12C672) yonga içerisinde osilatör devresi olup bu devrenin çalışması için dıştan herhangi bir ek parçaya gerek yoktur. Bu osilatör genellikle 4 MHz’de çalışır ve microdenetleyici programlanırken gereken frekans seçimi yapılabilir. İç osilatör hassas olmayıp sadece hassasiyet gerektirmeyen ve fiyatı düşük olacak olan uygulamalarda kullanılmalıdır.
Bu sisteme, aslında sadece hazır tipteki bir kristal osilatör devresini bağlamak da mümkündür; ancak burada kristalin entegresi ve benzeri elemanlarla uğraşmaktansa işlemcinin sunduğu avantajları kullanmak daha faydalı olacaktır. Devredeki Rs direnci kullanılmayabilir ancak; osilatörün ilk çalışma durumunu garantiye almak için devreye 100-200 ohm arası direnç bağlamak faydalı olacaktır. Burada istenilen frekansa göre kristal seçimi yapıldıktan sonra tabloda verilen değerlere uygun olarak kondansatör seçimi yapılmalıdır. Kristal osilatör kullanılırken seçilen kondansatör değerleri birbirine eşit olur. Ayrıca seçilen kondansatör değerinin düşük ya da yüksek olması osilasyonun başlamasını sağlamayabilir veya osc2 ucundaki dalga şeklinin bozuk olmasını sağlayarak osilasyon olmasına rağmen pic bu osilasyonu algılayamayabilir.
3. 3. 9. 3. REZONATÖR İLE YAPILAN OSİLATÖR
Ucuz ve hassas bir eleman olan seramik rezonatör üç uclu bir eleman olup içerisinde kristal ve kondansatörü hazır durumdadır. Rezonatörün üç ayağından kenarda olanlar osc1 ve osc2 uclarına bağlanır. Hangi ayağın osc1’e, hangi ayağının osc2’ye bağlandığı önemli değildir. Devre bağlantısı şekildeki gibidir.
3. 3. 10. MİKROKONTROLLÖR RESET İŞLEMLERİ
PIC microdenetleyicisinin MCLR pini reset pini olarak kullanılmaktadır. Bu pin '0' konumunda iken PIC reset durumundadır. '1' konumuna alındığı anda ise çalışmaya başlar. MCLR pinine bağlayacağınız 10k-1k arası bir direnç reset problemini çözecektir. Basit bir reset devresi Şekil A’da verilmiştir.
Şekil A’da verilen reset devresi basit bir devredir ve yeterince güvenli değildir. İşlemciye ilk enerji verildiğinde hemen çalışması güç kaynağı toparlanmalarından dolayı istenen bir durum değildir. Bu yüzden küçük bir gecikmeden sonra işlemcinin çalışmaya başlaması uygun bir dizayn olacaktır. Basit bir RC devresi ile bu gecikme sağlanabilir. Şekil B’de MCLR için basit bir RC gecikme devresi verilmiştir.
Şekil B’ de görülen devre uygun bir dizayndır. Ancak reset işlemini daha da güvenli hale getirmek mümkündür. MCLR pinine ters bir diyot bağlanarak en uygun ve güvenli devre dizaynı oluşturulmuş olur. Şekil C’de en uygun reset işlemi devresi verilmiştir.
Şekil C’deki şekle bir buton eklenerek reset manuel olarak kontrol edilebilir. Şekil D’de bir butonla kontrol edilebilen reset devresi şeması verilmiştir. Şekil D’deki devrede reset butonuna basıldığı anda PIC resetlenir, bırakıldığında resetten kurtularak tekrar çalışmaya başlar.
3. 3. 11. MİKROKONTROLLÖR GÜÇ BAĞLANTILARI
PIC16F84 işlemcileri çalışma esnasında 5 Volt besleme isterler. Mikroişlemcilerin genel karakteristiği olarak besleme ne kadar stabl olursa o kadar iyi sonuç alınır. Vdd ve Vss ayaklarına sistem beslemesi bağlanır. Bu iki uc arasına da her ihtimale karşı 100 nanofaradlık bir kondansatör parazit süzücü olarak bağlanmıştır.
Tün verilen bilgilerin ardından bir PIC16F84 mikrodenetleyicisinin çalışması için osilatör, reset ve besleme bağlantılarının yapılı olması gerektiğini görmekteyiz. Aşağıda RC osilatör için bu şartları sağlayan devre şekli verilmiştir.
3. 3. 12. MİKROKONTROLLÖR GİRİŞ-ÇIKIŞ İŞLEMLERİ