Mikroişlemci Programlama Aşamaları 1. Önce yapılacak işe uygun devre şeması çizilmelidir. Çünkü program bu devreye göre yapılacaktır. Biz ISIS programında devreyi kurabiliriz. Bu devrederb4 çıkışına bağlı LED i yakmak için RB4 göndermeliyiz. Aynı şekilde RB5 e bağlı LED i göndereceğiz. çıkışına 1 bilgisini yani +5 yakmakk için o çıkışa 5V 1 Bu bağlantıda eğer çıkışa 1 gönderirsek LED yanar, 0 gönderirsek LED söner. Farklı bir bağlantı şekli ile çıkışa 0 göndererek LED i yakabilir, 1 gönderer ek LED i söndürebiliriz. Bu bağlantı şeklini düşününüz. 8
NOT: Proje yaparken öncelikle donanım elemanlarını belirlemelisiniz. Sizden istenilen işi yapacak motor, sensör vb. elemanların hangi özellikte elemanlar olacağını belirlemelisiniz. Örneğin step motor, servo motor, DC motor gibi motorlarından hangisini ve hangi özellikte olanı kullanacağınızı belirlemelisiniz. Motorun dönme hızını ölçmek için bağlayacağınız sensörün özelliklerini, hangi durumlarda ne çıkışı verdiğini öğrenmelisiniz. Motorları çalıştırmak için hangi sürücü devrelerin kullanıldığını ve bu sürücülere PIC den hangi sinyalleri göndermek gerektiğini öğrenmelisiniz. Bunları belirlemeden programlamaya geçemezsiniz. 2. Bir programlama dili ile yazılım yapılmalıdır. C, Basic gibi yüksek seviye programlama dilleri olduğu gibi, assembly (makine dili) gibi düşük seviye programlama dilleride vardır. Yüksek seviye olanlar insana daha yakın, anlaşılması daha kolay dillerdir. Düşük seviyeli olanlar işlemcinin direkt kullanabileceği ama anlaması zor dillerdir. 3. Biz MikroC programında yazılım yapacağız. (Ayrıca CCS C de vardır.) Derleyici program editöründe yazdığımız programı Build tuşu ile derleyerek.hex uzantılı dosyayı oluştururuz. 4. Editörde yazdığımız programı kaydettiğiizde ***.c adıyla kaydedilir. Bu dosyaya KAYNAK DOSYASI (Source File) denir. Dışardan aldığımız yazılımlarda bu dosyayı elde etmek programda değişiklik yapmak için önemlidir. 9
5. MikroC programı çalıştırılır. 6. Çıkan uyarıyı dikkate almayınız. 7. New Project tıklıyoruz. Ekran gelecek. Next diyelim. 10
8. Adım1 de yapılacaklar: Proje adı: Programı hatırlatacak, türkçe karakter olmayan, boşluksuz bir isim veriniz. Proje klasörü: Klasör olarak C:/ dizininde bir klasör açıp kullanınız. Masaüstü kullanmayınız. Cihaz (Mikroişilemci) adı: Çalışacağımız mikroişlemci olan PIC16F84A seçilmelidir. Kodların derlenmesi işlemi bu işlemciye uygun yapılacağından önemlidir. Yanlış seçilirse program çalışmayabilir. Cihaz hızı: Çalışacağımız işlemci hızı belirlenir. İşlemciye bağlayacağımız kristal osilatörün (XT) hızına bağlıdır. Biz 4 MHz. kullanacağız. 11
9. Adım2 için bir şey yapmadan geçiyoruz. Aslında burada projeye dosya eklenebilir. Biz hep tek dosya ile çalışacağız. Büyük projelerde birden fazla dosya ile çalışılır. 10. Adım3 kütüphane dosyalarını alıp almamakla ilgilidir. Biz Include All seçeneğini seçip (zaten seçilidir default) devam ediyoruz. 11. Adım4 konfigürasyon bitlerini ayarlamakla ilgilidir. Sonrada ayarlanabilir ama şimdiden ayarlamakta fayda vardır. Aslında.HEX dosyasını PIC e atarken ayarlanır. Programı sonradan açtığımızda hatırlaması zor olduğu için burada ayarlanır ve o ayar hatırlanmış olur. Biz işaret koyup devam ediyoruz. 12
Konfigürasyon ayarları: Osilatör: XT oscillator seçilir. Çünkü biz bunu kullanacağız. Başka tip osilatör kullanılacaksa o seçilmelidir. (XT=Kristal) Watchdog Timer: Bir çeşit sayıcıdır. Program takılıp kaldığında reset atması için kullanılır. Eğer kullanılacaksa belirli ayarları yapmak gerekir. Biz çoğunlukla kullanmayacağımız için Disable yapıyoruz. Eğer kullanmayacaksak ve Disable yapmayı unutursak yazdığımız program durmadan reset atabilir ve program düzgün çalışamamış olur. Power Up Timer: Enerji istenilen seviyenin altına düştüğünde devreye girer. Enable yapmak faydalıdır. Code Protection: Kod korumasıdır. Enable olduğunda PIC e attığınız kodu kimse okuyamaz. Disable yaptığınızda okunabilir. Konfigürasyon kelimesi: Bizim PIC imizde 2007 nolu adreste yazılıdır. Burada yaptığımız ayarların her biri bu adresteki bitlerin değişmesini sağlar. Örneğin bizim ayarlarımıza karşılık gelen kelime: 0x3FF1 dir. Yani: 11 1111 1111 0001 dir. CONFIG _CP_OFF &_WDT_OFF &_PWRTE_OFF &_XT_OSC Configuration Word : h 3FF1 = b 11111111110001 = b 11 1111 1111 0001 13
KONFİGÜRASYON BİTLERİNİN YAZILMASI CONFIG _CP_OFF &_WDT_OFF &_PWRTE_OFF &_XT_OSC Configuration Word : h 3FF1 = b 11111111110001 = b 11 1111 1111 0001 Konfigürasyon bit'leri, PIC'e gerilim uygulandığı anda PIC'in uyması gereken koşulları belirlemede kullanılır. Bu koşullar PIC uygulama devresine bağlıdır. Örneğin uygulama devresinde RC osilatör kullanılıyorsa, bu koşul kaynak program içerisinde bulunmalıdır ve PIC'e yazdırılmalıdır. Konfigürasyon bit'leri aşağıdaki koşulları belirlemede kullanılır: Osilatör tipini (RC, XT, HS, LP gibi) belirlemek, Watchdog tımer'i ON veya OFF yapmak, Povver-on-reset (PIC'e enerji verildiğinde reset) durumunu ON veya OFF yapmak, Kod korumayı ON veya OFF durumuna getirmek (PIC'e yazılan programın okunmasını engellemek için yapılır.) İlk programımızda konfigürasyon bit'lerini yazmadığımızı gördünüz. Aslında program içerisinde yazma zorunluluğu da yoktur. Çünkü çoğu PIC programlayıcı yazılımı, bu bit'lerin programı PIC'e yazdırma esnasında yazılabilmesi veya değiştirilmesi için olanaklar tanımıştır. Örneğin, P16PRO programlayıcısında F2 tuşuna basarak ekrana getirdiğimiz pencerede bu konfigürasyonu yapabiliyoruz. 14
Şimdi de konfigürasyon belirlemede kullanılan tanımların neler olduğunu görelim. Koşul Yazılacak tanım kodları Kod koruma var Kod koruma yok Power-on-reset var Power-on-reset yok Watchdog timer devrede Watchdog timer devrede yok Low Power Osilatör Kristal osilatör High Speed osilatör RC Osilatör _CP_ON _CP_OFF _PWRTE_ON _PWRTE_OFF _WDT_ON _WDT_OFF _LP_OSC _XT_OSC _HS_OSC _RC_OSC 15
12. MicroC programı ile istenilenleri yapacak program kodları yazılır. Örneğin: RB4 ve RB5 çıkışlarına bağlı LED leri 1sn. aralıklarla yakan program kodları şu şekildedir: void main() { trisb=0; portb=0; while(1) { portb.b4=1; portb.b5=1; delay_ms(1000); portb.b4=0; portb.b5=0; delay_ms(1000); } } Bu kodların anlamları daha sonra açıklanacaktır. Editörde yazdığımız programı kaydettiğiizde ***.c adıyla kaydedilir. Bu dosyaya KAYNAK DOSYASI (Source File) denir. 13. Yazdığınız programı derleyerek ( Build ) ***.hex uzantılı dosyayı oluşturunuz. 16
14. Program kodlarında mantıksal bir hata yoksa Finished successfully yazısını görmelisiniz. Eğer hatalı bir yazım varsa derleyici sizi uyaracaktır. Örneğin ; yazmayı unutursanız uyarı ve hatanın olduğu yer gözükecektir. Artık oluşturduğumuz ***.hex dosyasını PIC programlayıcı kart ile PIC16F84 içine atmalıyız. Attığımız program PIC in içindeki program belleğine yazılır. 17
15. Programlayıcı kartınızı bilgisayarın uygun USB girişine bağlayınız. 16. PIC entegresini uygun şekilde programlayıcı karta yerleştiriniz. Yanda görüldüğü üzere PIC16F84 entegresini programlayıcı kartın ZIF Soket kısmına yukarıdan 1 sıra boş kalacak şekilde 1 atlayarak ve çentik yukarı gelecek şekilde takmalısınız. Mandal ile entegreyi sıkıştırabilir ve çözebilirsiniz. 17. Programlayıcı yazılımını çalıştırınız. (MicroPro26) 18. Bilgisayar Programlayıcı haberleştiğinden emin olunuz. (Connected yazısını görmelisiniz.) Eğer problem varsa COM numarasını ayarlayınız. 18
19. File > Load komutu ile ***.hex dosyasının bulunduğu dizinden dosyayı bulup yükleyiniz. 20. Gerekli sigorta ayarlarının düzgün yapıldığından emin olunuz. Fuses düğmesine basarak ayarları görebilirsiniz. 21. Program düğmesi ile yazdığınız programı PIC içersindeki program belleğine atınız. 22. Programladığınız PIC i programlayıcıdan çıkartıp kurduğunuz devreye takınız ve devreye enerji verip doğru çalışıp çalışmadığını kontrol ediniz. NOT: LED in yanması doğru çalışması anlamına gelmez. Belki LED in sönmesi gerekiyordur. Devrenin nasıl çalıştığını, ne iş yapacağını bilmek devreyi çalıştırmak kadar önemlidir. 19
ISIS te PIC çalıştırma ISIS te kurduğunuz devrede PIC üzerine çift tıklayın. Yeni bir pencere açılacak. Program File: karşısındaki kutucuğa derlediğiniz ***.hex dosyasını getirmek için klasör resmine tıklayın. Derlediğiniz ***.hex dosyası nerde kayıtlı ise bulup seçin. 20
Processor Clock Freqency: 4 MHz. Program Configuration Word: 3FF1 yapınız ve tamam diyerek pencereyi kapatınız. Aşağıda soldaki menüdeki PLAY tuşuna basarak devrenin çalışmasını görebilirsiniz. 21