PIC Serisi mikroişlemciler MICROCHIP firması tarafından geliştirilmiş ve üretim amacı çok fonksiyonlu logic uygulamalarının hızlı ve ucuz bir
Mikroişlemci ile yazılım yoluyla karşılanmasıdır.
PIC’in kelime anlamı –PERIPHERAL INTERFACE CONTROLLER– Giriş Cıkış işlemcisidir. İlk olarak 1994 yılında 16 bitlik ve 32 bitlik büyük işlemcilerin giriş ve çıkışlarındaki yükü azaltmak ve denetlemek amacıyla
çok hızlı ve ucuz bir çözüme ihtiyaç duyulduğu için geliştirilmiştir.
Çok geniş bir ürün ailesinin ilk üyesi olan PIC16C54 bu ihtiyacın ilk meyvesidir. PIC işlemcileri RISC -benzeri işlemciler olarak anılır. PIC16C54 12 Bit komut hafıza genişliği olan 8 bitlik CMOS bir işlemcidir. 18 bacaklı dip kılıfta 13 I/O bacağına sahiptir ve 20 Mhz osilator hızına kadar kullanılabilir. 33 adet komut içermektedir. 512 byte program epromu ve 25 byte RAM`i bulunmaktadır. Bu hafıza kapasitesi birçok insanı güldürmüştür sanırım ama bir risc işlemci olması birçok işin bu kapasitede uygulanmasına olanak vermektedir. Örneğin ANTRAK R94 rölesinde kullanılan role kontrol devresi bir adet PIC16C54 içermektedir. Bu devre sayesinde R94 Time Out Timer, DTMF kodlu Kontrol ve kapatma, Konuşma sonu zamanlaması gibi işlemler program belleğinde 324 byte yer kaplamakta 14 byte RAM kullanılmaktadır.
PIC serisi tüm işlemciler herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 adet kondansatör, 1 adet direnç ve bir kristal ile çalıştırılabilmektedir. Tek bacaktan 40 mA akım çekilebilmekte ve entegre toplamı olarak 150 mA akım akıtma kapasitesine sahiptir. Entegrenin 4 Mhz osilator frekansında çektiği akım çalışırken 2 mA stand-by durumunda ise 20uA kadardır. PIC 16C54’ün fiyatının 2.0 US$ civarında olduğu düşünülürse bu işlemcinin avantajı kolayca anlaşılır.
PIC 16C54 ‘un mensup olduğu işlemci ailesi 12Bit core 16C5X olarak anılır. Bu gruba temel grup adı verilir. Bu ailenin üyesi diğer işlemciler PIC16C57, PIC16C58 ve dünyanın en küçük işlemcisi olarak anilan 8 bacakli PIC12C508 ve PIC 12C509’dur.
Interrupt kapasitesi ilk işlemci ailesi olan 12Bit Core 16C5X ailesinde bulunmamaktadır. Daha sonra üretilen ve Orta sınıf olarak tanınan 14Bit Core- 16CXX ailesi birçok açıdan daha yetenekli bir grup işlemcidir.
Bu ailenin temel özelliği interrupt kapasitesi ve 14 bitlik komut işleme hafızasıdır. Bu özellikler Pic’i gerçek bir işlemci olmaya ve karmaşık işlemlerde kullanılmaya yatkın hale getirmiştir. PIC16CXX ailesi en geniş ürün yelpazesine sahip ailedir. 16CXX ailesinin en önemli özellikleri seri olarak devre üstünde dahi programlanması -ki bu özellik PIC16C5x de epey karmaşıktı , paralel programlanabiliyordu- interrupt kabul edebilmesi, 33 I/O,AD Converter, USART, I2C, SPI gibi endüstri standardı giriş çıkışları kabul edecek işlemcilere ürün yelpazesinde yer vermesi.
PIC 16CXX ailesinin amatör elektronikçiler arasında en çok tanınan ve dünyada üzerinde ençok proje üretilmiş, internetin gözdesi olan bireyi
PIC16C84 veya yeni adıyla PIC16F84 dur.
PIC 16F84 un bu kadar popüler olması onun çok iyi bir işlemci olmasından ziyade program belleğinin Eeprom – Elektrikle silinip yazılabilen bellek – olmasından kaynaklanmaktadır. Seri olarak dört adet kabloyla programlanması da diğer önemli avantajıdır. Bugüne kadar amatörce
bir işlemciyle uğraşmış herkesin en büyük sıkıntısı eprom veya eprom tabanlı işlemcileri programladıktan sonra UltraViole ışık kaynağı ile silip tekrar programlamaktır. Bu çok zahmetli ve bir amatör için ekipman gerektiren yöntem olmustur. Evde üretilmesi zor olan özel bir programlayıcı da madalyonun diğer yüzüdür.
PIC16F84 amatörler tarafından internette en bol programlayıcısı bulunan işlemcidir herhalde. Ben şu ana kadar 50 den fazla PC ve MAC tabanlı evde yapabileceğiniz programlayıcıya rastladım. Eprom silmek diye birşey zaten söz konusu değil zira eeprom belleği programlayan programlayıcı devre 1 saniye içinde aynı belleği silebilmektedir. Bu özellik size çok hızlı ve defalarca deneyerek program geliştirme avantajını getirmektedir ki bu amatör elektronikçi için bulunmaz bir nimettir. Bu denemeleri yaparken işlemciyi devrenizden sökmeniz dahi gerekmez. Bu tip programlamaya ISP –In System Programming– denmektedir. Amatör bir elektronikçi PIC16F84 ile Program geliştirmek için aşağıdaki ekipmana ihtiyaç duyacaktır:
-
PIC16F84
-
MS-DOS tabanlı PC
-
ASCII Editör (Örneğin Dos’un EDIT’I)
-
MPASM Assembler
-
Programlayıcı/silici
-
Programlayıcı için yazılım
Bu ekipmanı nereden ve nasıl temin edeceğimize kısaca bir göz atalım.
PIC16F84 veya yerine PIC 16C84’ü elektronik yedek parça satan mağazaların bazılarından temin etmek mümkün. Herhangi bir TTL lojik entegresi kadar temini kolay olmasa da gene de yaygın olarak bulunabiliyor.
ASCII Editör olarak herhangi bir ASCII editor kullanılabilir, bizim için en kolay bulunan editor DOS’un içinde gelen EDIT’tir. Bir PIC programı assemblerda "COMPILE" işlemi yapılmadan evvel editorde program olarak yazılır ve saklanır.Bu text programın sonu mutlaka.
ASM olmalıdır. Örnegin deneme.asm
MPASM Microhip tarafindan yazIlmış bir PIC assembler programıdır. Bu program tüm pic ailesini kapsar. MPASM ‘in hem Windows altında
çalışan hem de dos altında çalışan versiyonları bulunmaktadır. Bu programı Microchip sitesinden bedava alabilirsiniz.
Progr
amlama devresi bir adet DB9 dişi Konnektör ve üç adet dirençten oluşmaktadır. Bu devre çok basit olup PC ‘nin COM portunu kullanır.
Devrenin gerçekleştirilmesi aynı zamanda minimum bir PIC Sistemi yapmamızı gerektirdiğinden iki işi bir defada halletmiş olacağiz.
Şekil 1 ve Şekil 2 deki devreleri kurarak hem bir programlayıcı hem de bir PIC tabanlı Bilgisayar Sistemimiz olacak.
Bir PIC İşlemcisinin çalişması için bir adet kristal, 2 adet direnç,3 adet kondansatör ve 14 nolu bacağa +5Volt , 5 nolu bacağa toprak vermek yeterlidir.
Geri kalan bacaklar giriş ve çıkış portlarıdır.
Şekil1 de yer alan 3 adet dirençten oluşan devre com port ile pic’in ilgili bacaklarını birleştirir. Bu devre yalnızca picprog.zip deki yazılımla birlikte ve sadece PIC16C84 ve PIC 16F84’un programlanması için kullanılır.
Şekil 2 deki devre ise Minimum PIC Sistemi olarak adlandırdığımız devredir. Bu devreyi şekil 1 ile birlikte kullanarak PIC programlama işlemi için gerekli komple sistemi elde ederiz.
Programlama işlemi sonunda şekil 1 deki devre picden ayrılarak Şekil 2 deki sistem tek başına yüklenen programı çalıştırır.
Programlama yazılımına picprog.zip adlı dosyayı alarak sahip olabilirsiniz. Bu dosyanın içinde üç adet dosya sıkıştırılmıştır.
Bunlar PGM.BAT, JDM84.EXE, PIP02.EXE’dir.
Pic ile ilgili bilgiler ve MPASM için http://www.microchip.com/
|
PICBIT PLC derleyicisindeki elemanlar bir TTL veya CMOS Lojik ailesindeki lojik entegresi elemanlarından işlev olarak farklı değildir, buradaki en önemli fark birkaç ente
gre ile bir mantık sistemi kurmak yerine PICBIT bünyesindeki mantık yapı taşlarını kullanarak bir program yaratıp bunu PIC işlemci yardımıyla simüle etmektir.
PICBIT derleyicisinde bulunan LOJİK elemanlarından IN, IN NOT, OUT, OUT NOT, AND, AND NOT, OR, OR NOT, XOR, XOR NOT, NOT ve I/O
NOT ‘ı teker teker ele alalım.
IN, IN NOT, OUT ve OUT NOT Elemanları:
Şekil 1 – IN, IN NOT, OUT ve OUT NOT elemanı kullanım şekilleri
Şekil 1 de görüldüğü gibi IN elemanı bir adet giriş bacağı ve bir adette çıkış bacağı bulunan bir elemandır.IN elemanı girişindeki fonksiyonu mantık devresinin diğer elemanları için hazırlar ve birleştirir. IN elemanı PIC’e dış ortamdan giriş yapmamızı sağlar. IN elemanı girişine RA ve RB portlarından herhangi biri (Bu portlar PICBIT te PA ve PB olarak anılır) ilişkilendirilebilir, böylece PB veya PA portlarına uygulanan sinyal IN elemanı sayesinde diğer elemanlara aktarılır.
IN elemanı girişine portlardan başka MARKER dediğimiz ve M00 dan başlayıp M15 ‘e kadar devam eden 16 adet geçici saklama elemanları bağlanabilir. MARKER ‘lar bir işlem sonucunun bir porttan değilde bir lojik sisteminden geldiği durumlarda sonuçları saklamak için kullanılan
hafıza üniteleri olarak kabul edilebilirler.
IN girişine TIMER elemanı bağlanarak gecikmeler elde edilebilir. TIMER elemanı ms şeklinde çeşitli zaman değerlerini içeren ve seçildiği zaman birimi süresince aktif kalan bir zamanlayıcıdır.
Bir COUNTER elemanı çıkşını IN girişine girerek COUNTER işleminin sonucunun giriş elemanını etkilemesi sağlanır.
Bunlar dşında mnatık sistemimize bir noktada sabit bir lojik seviyesi enjekte etmek ihtiyacı duyarsak 0 veya 1 sabitlerini kulanıp IN elemanı
girişine verebiliriz.
IN NOT elemanı IN elemanı ile aynı işlevlere sahiptir fakat tek farkı girişinde bulunan sinyali evirerek çıkışına vermesidir.Bir çeşit inverter gibi
çalışmaktadır.
OUT ve OUT NOT elemanı IN ve IN NOT elemanları ile benzer fakat ters işlevlere sahiptirler.OUT elemanı tasarladığımız mantık sisteminin sonucunun dış ortama yani portlara veya markerlara yada bir counter elemanına aktarılmasına yardımcı olur.OUT elemanıda IN elemanı gibi
bir adet giriş ve bir adet çıkış bacağına sahiptir.
OUT NOT elemanı OUT ile aynı fonksiyonlara sahip inverted çıkış vermektedir.
AND, AND NOT, OR, OR NOT Elemanları : Şekil 2 – AND ,AND NOT ,OR ,OR NOT Elemanları kullanım şekilleri
AND ve OR elemanları ttl veya cmos serisi and veya or entegrelerinden fonksiyon olarak farklı değildir.İki adet girişleri bulunur ve bu girişlere
PA vaya PB portları , M00 dan M15 ‘e kadar MARKER’lar, TIMER elemanı, Counter elemanı çıkışları ile sabit lojik elde etmek için 0 veya 1 elemanı bağlanabilir.
AND NOT ve OR NOT elemanları eviren lojik kapılar gibi davranırlar ve giriş sinyalinin AND veya OR sonucunu evirerek çıkışa iletirler.
XOR ve XOR NOT Elemanları : Şekil 3 – XOR ve XOR NOT elemanı kullanım şekilleri
XOR elemanı kullanım olarak TTL veya CMOS lojik ailesindeki xor entegresiyle aynı özelliklere sahiptir. Kulanımı and ve or elemanlarıyla benzerdir.
XOR NOT girişteki sinyallerin işlem sonucunu evirerek çıkşına verir.
NOT ve I/O NOT Elemanları:
Şekil 4 – NOT ve I/O NOT Elemanları kullanım şekilleri
NOT: Elemanı IN ve OUT arasında kullanıldığında giren sinyali evirerek çıkışa vermek için kullanılır.NOT elemanı sinyalin evirilmesi gereken her noktada kullanılabilir.
I/O NOT elemanı NOT elemanı ile aynı özelliklere sahiptir .
PICBIT elemanlarından COUNTER , LATCH , REGISTER ve STEPPER gibi daha karmaşık olanlarını gelecek ay anlatmaya çalışacağım.
Bu ay birazda PICBIT kullanımı üzerine eğilelim.
– PICBIT ile çalışırken herhangi bir elemanı sol mouse tuşu ile sarı bölgeye koyabilirsiniz.
– Bir elemanı mouse ile sağ tuş yardımıyla tutup oynatabilirsiniz.
– Bir elemanı sol tuş yardimiyla seçip üzerinde değişiklilk yapabilir veya yok edebilirsiniz.
– Pop –up menulere sol tuş yardımıyla erişip sağ tuş yardımıyla
bırakabilirsiniz. – File – menüsünde SAVE sizi UYARMADAN eski dosyanızın üstüne yazar DİKKAT!!!
– TOOL Menüsü:
1- REDRAW : Ekranı yeniden çizer.
2- PACK : Elemanlar arası boşlukları yok eder.
3- PHOTO: Ekranın görüntüsünü PCX file olarak kaydeder.
4- EDITOR : List dosyası için editörü çalıştırır.
– COMPILE Menüsü:
1- Compile MPASM assemblerini çalıştırır ve hex file oluşturur. Bu file pic içine direk programlanabilir.
2- 2.menu compile seçeneği yalnızca PLC dosyasını oluşturur. Bu include tipi seçenekler için uygundur.
– HARDWARE Menüsü:
Bu menüdeki birçok seçenek bize kullanım için uygun değil, çünkü bizim kullandığımız programlayıcı PICBIT programlayıcıdan biraz basit ve farklı fakat buradaki XTAL seçeneği 4 Mhz dışındaki kristal tipleri ile çalışırken timer fonksiyonlarındaki ayarlamaları yapmak için kullanılabilir.
TIMER ile kullanılan milisaniye değerleri 4mhz kristal baz alınarak hesaplanmıştır. XTAL komutu kullnılmazsa başka tip kristallerde TIMER
ön görülen milisaniye değerlerini sağlayamaz.
– ELEMENT MENÜSÜ :
1- CHANGE : Eleman cinsini değiştirmek,
2- DELETE : Elemanı yok etmek,
3- INSERT : iki eleman arasına yeni bir eleman sokmak için ,
4- EDIT : Elemanın giriş veya çıkışlarını düzeltmek için,
5- HILITE : Aynı giriş ,çıkış özellikli elemanları işaretler,
6- REMARK : Elemanla ilgili bir açıklama yazmak için kullanılır.
Bu tip açıklamalar program daha sonra listesi incelenirken büyük
kolaylık sağlar.
Son bir nokta: mouse bir eleman üzerinde iken F1 tuşuna basarsanız eleman ile ilgili açıklama alabilirsiniz…..
PICBIT ile PLC lojik uygulamalarında set, reset, latch, counter, D-flip flop, stepper kontrol elemanı, Shift registerları göreceğiz.
SET, RESET, LATCH, D-FLIP FLOP MODÜLLERİ:
SET MODÜLÜ:
Bu modül girişine uygulanan lojik sinyal sevyesi High ise modül çıkışı SET yani HIGH kalır. Aksi halde LOW durumunu korur.
RESET MODÜLÜ:
RESET Modülü SET modülünün işlevsel tersidir. Girişine uygulanan sinyal LOW ise SET yani çıkışı HIGH olur. Girişe uygulanan sinyal HIGH ise çıkış reset yani LOW dur.
LATCH MODÜLÜ:
Latch modülü klasik bir ttl veya cmos serisi latch’den mantık olarak farklı değildir. LAT girişine HIGH bir sinyal verildiğinde LATCH transparan yani girişine uygulanan sinyal seviyesini aynen çıkışına aktarır. LAT girişi LOW olduğunda ise girişindeki sinyalin lojik durumunu korur.
INV-LATCH MODÜLÜ:
INV-LATCH Modülü ,LATCH Modülü ile fonksiyon olarak aynı görevi görmektedir.Tek fark Girişten gelen lojik sinyali çıkışta (invert) evirmesidir.
D-FLIP FLOP:
D Flip Flop modülü DFF girişine HIGH lojik seviyesi uygulandığında girişi aynen çıkışa taşımaktadır.Boylece girişte bulunan lojik seviyesi çıkışta
saklanır. D-Flip Flop lar 8 adet olup bunların ilk dört tanesi çıkışta ki sinyali aynen korur, diğer 4 adet ise çıkış sinyalini girişe göre evirerek saklar.
COUNTER, STEPPER ve SHIFT REGISTER MODÜLLERİ:
Counter Modülü:
Counter modülü iki adet giriş ve bir adet çıkıştan oluşmaktadır. CNT girişindeki sinyalin lojik olarak 0/1 şeklinde değişmesi counter yani sayacın artmasına sebep olur. Diğer giriş ise sayacın sıfırlanması içindir. Counter modülü seçilip PİCBİT sayfasına konulduğunda ortaya çıkan THUMB-WHEEL şeklindeki anahtarlar yardımıyla sayacın erişeceği maximum değer seçilir. Girişlere MARKER, PORT, TIMER ya da başka bir COUNTER’ın çıkışı verilebilir. Toplam 8 adet COUNTER modülü vardır ve bu modüller birbirinden bağımsız, aynı anda kullanılabilir.
STEPPER MODÜLÜ:
PICBIT içinde iki adet stepper modülü vardır. İlk modül stepper motor, a çıkış olarak RB0, RB1, RB2, RB3, ikinci modül ise çıkış olarak RB4, RB5, RB6, RB7 portlarını kullanmaktadır. Her Stepper kontrol modülü iki adet giriş içerir. Bunlar DIR ve STEP girişleridir. DIR girişine LOW yani 0 seviyesinde bir lojik sinyali uygulandığında stepper motor saat yönünün aksine, HIGH yani 1 seviyesinde bir lojik sinyal ise motoru saat yönünde döndürür. Tabii step girişine herhangi bir kare dalga veya değişken bir lojik sinyal uygulamazsak motorda herhangi bir hareket olmaz. STEP girişinde sinyal değişkenken DIR sinyali seviyesinin degiştirilmesi stepper motoru sağa veya sola döndürür.
SHIFT REGISTER MODÜLÜ:
Shift register modülü çıkış olarak PB Portunu yani RB0…RB7’yi kullanmaktadır. Bu modülün iki adet girişi vardır; bunlar SHIFT ve DIR girişleridir. Shift girişine girilen lojik sinyal seviyesi değiştikçe PB çıkışıda bu sinyali PB0..PB7 arasında birisinden diğerine öteler. DIR girişine uygulanan lojik sinyalin 0/1 durumu ise bu ötelemeyi sağa veya sola yönlendirir. Bu modül çalışma prensibi olarak herhangi bir TTL veya CMOS shift registerdan farklı değildir.
PIC 16F84 PROGRAMLAYICI
Resmin üzerine tıklayarak büyük görebilirsiniz. Programlama yazılımı olarak Tord Andersson’un yazdığı win3.1/95/98 üzerinde çalışan picprog programını kullanacağız. Programı picprog.zip içinde bulacaksınız. Bu program windows ile tam uyumlu olduğundan herhangibir com port sorunu bulunmamaktadır. Programı çalıştırmadan önce porgramlayıcıyı com porta takıp voltaj vermelisiniz. Pic’i programlayıcıya taktıktan sonra sırasıyla önce com porta takıp daha sonra programlayıcıya voltaj verip en sonunda programı çalıştırmak en Programı çalıştırdığınız da karşınıza aşağıdaki gibi bir ekran gelir.
Program başlığında pic 16c84 dese de 16f84’ler sorunsuz programlanabilmektedir. Üst menüdeki File seçeneği programlanacak dosyayı diskten yüklemeye, Device seçeneği ise pic boş mu? Kontrolu, silme, pic’i okuma gibi işlemleri içerir. Setup menüsü ise aşağıdaki gibi bir com port seçme ekranı içerir. Buradan programlayıcının bağlı olduğu com port seçilir.
Programlayıcı üzerinde voltaj yoksa veya seçilen com port yanlış ise programlama, okuma veya silme işlemine teşebbüs ettiğinizde program bunu size hata mesajı ile belirtir. Altta solda bulunan Fuses seçenekleri pic’i programlarken seçeceğiniz osilatör tipi, watchdog timer, power on timer ve programınızın pic’den başkalarınca okunmasını önleyen Code protect seçenekleridir. Device menüsündeki seçeneklere Fuses üzerindeki tuşlarla da ulaşabilirsiniz. |