PIC Nedir ?: PERIPHERAL INTERFACE CONTROLLER Genel Bilgi

Yeni Sayfa 2

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: 

  1. PIC16F84

  2. MS-DOS tabanlı PC

  3. ASCII Editör (Örneğin Dos’un EDIT’I)

  4. MPASM Assembler

  5. Programlayıcı/silici

  6. 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.gif 

Ş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. 
 

şekil2.gif 
 

Ş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/ 

 

Minimum PIC sistemi olarak adlandırdığımız donanımı ve programlama için gerekli olan direnç grubunu bir Proto Board veya delikli pertinaks üzerine rahatça kurabilirsiniz. Burda dikkat edilecek tek husus minimum Pic sistemi dediğimiz şema ile programlayıcı  şemasının istendiğinde birbirinden ayrılabilir olabilmesidir. Program  pic’e yüklendikten sonra RB6, RB7, MCLR ve GND bacakları programlayıcıdan ayrılmazsa pic sistemi yüklenen programı çalıştırmayacaktır. Donanımda dikkat edilecek bir başka konu ise pic ve PC sisteminde enerji varken kesinlikle RS-232 konnektorünün çekilmemesidir, aksi halde PC nizin RS232 Portu kullanılmaz hale gelir. 
 
Programlama yazılımı JDM84 isimli driver dosyası, PIP02 isimli terminal dosyası ve bunları çalıştırmak için pgm.bat isimli dosyadan oluşur. Programlama işlemine başlamadan önce hem PC hem Pic siteminin enerjisi kesilir, RS232 konnektörü ilgili porta takılır ve önce pic sistemine daha sonra ise PC ye enerji verilir. Bu noktada pic’i programlayacağımız için programlayıcı ve  Minimum pic sistemi birbirine ilgili bacaklarından baglantılıdır. Pgm.bat yazıp enter’a bastığımızda ortaya çıkan ekran program terminalidir. Kullanımı basit Pull Down menülerden ibaret olan  bu program konusunda fazla birşey söylemeye gerek yok sanırım. File menusu ile programlayacağımız Hex file seçeriz. Device menüsü ile de programlayacağımız pic’in tipini seçeriz. Bu noktada tüm pic ailesi listelenecektir ama bizim basit programlama modülümüz sadece PIC16C84 ve PIC16F84 programlamaya olanak tanır.  

Programlayıcı RS232 port olarak COM1 portunu kullanır  eğer bunu değiştirmek isterseniz herhangi bir ASCII editörle (örneğin DOS un EDIT’i) pgm.bat  dosyasında Jdm84 com1 yerine jdm84 com2 yazmalısınız. 

Kurduğunuz pic sistemini ve programlayıcının çalışmasını deneyebilmeniz için test.hex adlı dosyayı kullanabilirsiniz. Bu dosyayı test.zip içinde bulacaksınız. test.hex PIC16C84 için yazılmıştır 16F84 de çalışabilir fakat denemedim. test.hex  basit bir led flaşör programıdır.sizin kurduğunuz pic sistemindeki pic’ in RB0 bacağına 270 ohmluk bir direnç ve buna seri bir adet led bağlayarak flaşörü çalıştırabilrsiniz.Led’in katodu GND yada şasede 
olmalıdır. Basit bir şekilde: 

Eğer herşey normalse Pic sistemine enerji verildiğinde led 0.5 saniye aralıkla yanıp sönmeye başlar. Bu size programlayıcı ve Pic sisteminizin sorunsuz çalıştığını kanıtlar, Bu noktadan sonra her uygulamayı sorunsuzca programlayıp çalıştırabilirsiniz . 

Eğer sistem çalışmazsa hemen Murphy kurallarına teslim olmayın, bağlantılarınızı kontrol edin, programlama işleminden sonra programlayıcıyı sistemden ayırdığınızdan emin olun, daha sonra sisteme enerji verin. 

Yukarıda anlatmaya çalıştığım aşamalar ilk etapta zor gibi gelebilir fakat birkaç defa tekrarlandığında rutin işlemler halini alır. Bir proje geliştirirken bu işi onlarca defa yapmanız gerekecek. 

Pic 16C84 ile ilgili daha fazla bilgi vermeyi amaçlamıştım ama bunu PDF formatındaki datasheet’inden
sizlerin daha kolay okuyabileceğinizi tahmin ediyorum. 16C84.pdf  isimli dosyayı  adobe acrobat reader ile okuyabilirsiniz. Bu dosya size 16C84 ile ilgili tüm bilgiyi sağlayacaktır. Adobe acrobat reader ise http://www.adobe.com/ adresinden temin edilebilir. 

Amacım bu yazı dizisiyle amatörlere Pic işlemcisi ile lojik devrelere alternatif olabilecek bir yöntem sunmaktı, şu ana kadar bir Pic16c84 içine bir programı aktarmayı ve  aktarılan programı çalıştırmayı öğrendik , bundan sonra pic kullanarak lojik devreleri simüle etmeyi bir PLC (Programmable Logic Controller) makro programı yardımıyla yapacağız.Bu sayede tek bir PIC içinde and, or, xor, not, nor, nand, latch, timer, counter, drum sequencer gibi lojik gruplarını birbirleriyle ilişkilendirip karmaşık (8-10 adet lojik entegreye karşılık gelecek)lojik tasarımları yapabileceğiz. Bunu yaparken oldukça zor olan Assembler kullanmayıp Merdıven Mantığı (LADDER  LOGIC) olarak bilinen PLC dilini kullanacağız.

Artık bir PIC16C84 sistemi, bu sistemi pogramlamak için bir programlayıcı devresi ve yazılımı, sistemi test etmek için basit bir test programı bu ana kadar elde ettiklerimizdi. 

Bu noktadan sonra artık gerçek anlamda programlamaya girebiliriz. Pic16c84 için program yazarken PLC (Programmable Logic Controller) simulasyonundan yararlanacağız. PLC daha cok otomasyonda kullanılan ve sıralı işlemlerin lojik aileleri ile biraraya getirilerek yapıldığı bir sistemdir. Bu sistem daha çok endüstriyel tesis otomasyonu için geliştirilmiş olup ilk yıllarında röleler ve mekanik zamanlama elemanları kullanılarak yapılırdı. Daha sonra işin içine mikroişlemciler girdi, hayat bu noktadan sonra daha kolaylaştı. Günümüzde PLC olanaklarını kullanmayan endüstriyel tesis yoktur. 

PLC ile pic birleştiği zaman ortaya esnek ve ucuz bir yapı çıkmaktadır. PLC yapısında AND, OR, XOR, TIMER, NOT, IN, OUT, LATCH, IN, OUT gibi lojik gruplarını kullanırız. Bu grupları farklı kombinasyonlarda birleştirerek Portlardan girdiğimiz TTL seviyesindeki sinyalleri kombinasyonun öngördüğü işlemlere tabi tutup çıkış olarak sectiğimiz Port’tan dışarı alırız. 

Buna bir ornek vermek gerekirse test porgramımızı ele alalım. Bir led ‘i port RB0 ‘a bağlayıp 0.5 saniye ON 0.5 saniye OFF şeklinde yakıp 
söndürmüştük. Bu işlemi PLC sistemi olarak tasarlarsak –1 Adet TIMER- elemanına ve –1 Adet çıkış elemanına ihtiyaç duyarız.timer elemanı 0.5 saniye  ile açıp kapanmalı sonucuda çıkış elemanına iletmelidir. Çıkış elemanı ilgili Porttur, bizim programımızda bu RB0 idi. 

Bu programı yaparken grafik tabanlı bir PLC programlama yazılımından faydalanacağız. Bu yazılımı picbit_s.zip dosyasında bulabilirsiniz. 
Bu dosyayı picbit adı altında açacağınız bir directory’e  kaydederseniz sorunsuz çalışır.  Bu program dos altında, vga ekranlı, 386 ve üstü işlemcili herhangi bir PC de çalışır. 

PICBIT grafik editorü ile yazacağımız PLC programını gene aynı programdaki MPASM ile compile edip  elde ettiğimiz. hex sonlu dosyayı programlayıcımız ve ilgili yazılımıyla PIC16C84 içine programlayabiliriz daha sonra bu programı minimum pic devresiyle çalıştırırız. 

Şimdi yukarda saydıklarımıza bir örnek olarak PICBIT ‘i test programımızı tekrar yazmakta kullanalım. 

Amaç: 0.5 saniye aralıkla yanıp sönen port RB0’a bağlı bir adet led ile flaşör yapmak. 

PICBIT programını dos ortamında PICBIT yazarak çalıştırdığımızda karşımıza çıkan ekran ortasına mouse ile gidip sol tuş ile tıkladığınızda 
programlama grafik editor ekranı karşımıza gelir. Bu ekran üzerine istediğimiz elemanı (örneğin timer, out, in gibi) koyarız. Led Flaşör programı elemanları aşağıdaki gibi yer alır. Bir adet TIMER ve bir adet OUT elemanı işlemi bitirir. 

program çıktısı 
Led flaşör grafik PLC programı yukarda görüldüğü gibi iki adet elemandan oluşmaktadır. IN elemanı Timer T10 elemanının bir parçasıdır. 
T10 üstündeki 512,00 rakamı 512ms karşılığıdır ve bir listeden sabit değerler arasından uygun olanı seçilir. 

OUT elemanı ise TIMER çıkışı ile  Port RB0 arasındaki baglantıyı düzenleyen program parçasıdır. 
 
 

PLC programının text çıktısı ise aşağıdaki gibidir: 

      ld      Timer_2,2        ;[D:1] 4 
      out     Port_B,0         ;[E:1] 5 
 
    ;
 
 

Görüldüğü gibi PLC tekniği ile program yapmak assemblerdan çok daha kolaydır. 

Gelecek ay PICBIT yazılımını ve PLC elemanlarını yakından tanıyacağız. 

Merak edenlere yukarıdaki iki satırlık programın assembler listesini aşağıda veriyorum. 
 


MPASM 01.50 Released             PIC4.ASM   6-23-1998  14:51:58         PAGE  1 
 

LOC  OBJECT CODE     LINE SOURCE TEXT 
  VALUE 

                    00001 ;       produced by PICBIT 
                    00002         include "plc_2.inc" 
                    00001 ;modified from 5X to 16C84 
2007 3FFD           00002  __FUSES 0x3FFD 
                    00003  
                    00344         LIST 
                    00345  
                    00346 ;Place PLC specific register names here 
                    00347 ;C84 Equates 
  00000005          00348 Port_A  equ     5h 
  00000006          00349 Port_B  equ     6h 
  00000001          00350 Timer_1 equ     01h 
  00000002          00351 PCL     equ     02h 
                    00352  
                    00353         CBLOCK 0x0C 
  0000000C          00354 step1    ;Schrittmotor Phasenzeiger Motor-1 
  0000000D          00355 step2    ;Schrittmotor Phasenzeiger Motor-2 
  0000000E          00356 steptmp  ;Stepper Temp-Register 
  0000000F          00357 Timer_2 
                    00358         ENDC 
                    00359  
                    00360         CBLOCK 0x10 
  00000010          00361 Creg_l 
                    00362         ENDC 
                    00363  
                    00364         CBLOCK 0x18 
  00000018          00365 Creg_h 
                    00366         ENDC 
                    00367  
                    00368         CBLOCK 0x20 
  00000020          00369 _DFF 
                    00370         ENDC 
                    00371  
                    00372         CBLOCK 0X28 
  00000028          00373 Aux_1, Aux_2 
  0000002A          00374 Cflag, Ct 
  0000002C          00375 Temp_1, Temp_2, unused1, unused2 
                    00376         ENDC 
        
;            00377 
 
                    00378 ; 
                    00379 ;Init 
                    00380 ; 
0000 280A           00381 Reset   goto    init 
                    00382  
0001                00383 stepbits 
0001 0782           00384         addwf   PCL,f 
0002 34AA 3482 3496 00385         DT      0AAh, 082h, 096h, 014h, 055h, 041h, 069h, 028h 
     3414 3455 3441  
     3469 3428  
                    00386  
000A 3000           00387 init    movlw   0               ;Initialise all RAM bits to 'safe' values 
000B 0086           00388         movwf   Port_B          ; 
000C 0081           00389         movwf   Timer_1 
 

MPASM 01.50 Released             PIC4.ASM   6-23-1998  14:51:58         PAGE  2 
 

LOC  OBJECT CODE     LINE SOURCE TEXT 
  VALUE 

000D 008F           00390         movwf   Timer_2 
000E 008C           00391         movwf   step1 
000F 008D           00392         movwf   step2 
0010 0090           00393         movwf   Creg_l 
0011 0091           00394         movwf   Creg_l+1 
0012 0092           00395         movwf   Creg_l+2 
0013 0093           00396         movwf   Creg_l+3 
0014 0094           00397         movwf   Creg_l+4 
0015 0095           00398         movwf   Creg_l+5 
0016 0096           00399         movwf   Creg_l+6 
0017 0097           00400         movwf   Creg_l+7 
0018 0098           00401         movwf   Creg_h 
0019 0099           00402         movwf   Creg_h+1 
001A 009A           00403         movwf   Creg_h+2 
001B 009B           00404         movwf   Creg_h+3 
001C 009C           00405         movwf   Creg_h+4 
001D 009D           00406         movwf   Creg_h+5 
001E 009E           00407         movwf   Creg_h+6 
001F 009F           00408         movwf   Creg_h+7 
0020 00AA           00409         movwf   Cflag 
0021 00AB           00410         movwf   Ct 
0022 00A8           00411         movwf   Aux_1 
0023 00A9           00412         movwf   Aux_2 
0024 00AC           00413         movwf   Temp_1 
0025 00AD           00414         movwf   Temp_2 
0026 00A0           00415         movwf   _DFF 
                    00416  
0027 1683           00417 Scan    bsf     3,5 
0028 301F           00418         movlw   1fh             ;Main scan loop 
0029 0085           00419         movwf   Port_A          ;RA0-RA4 = inputs 
002A 3000           00420         movlw   0 
002B 0086           00421         movwf   Port_B          ;RB0-RB7 = outputs 
002C 3007           00422         movlw   07              ;Enable RTCC, count up on CLKOUT 
002D 0081           00423         movwf   0x01            ;OPTION 
002E 1283           00424         bcf     3,5 
                    00425                                 ;Increment Timer_2 on Timer_1 overflow 
002F 1B81           00426         btfsc   1,7             ;   IF RTCC = 1xxx xxxxb THEN 
0030 172D           00427         bsf     Temp_2,6        ;      Set bit 6 in Temp_2 (overflow flag) 
                    00428                                 ;   ENDIF 
0031 1B81           00429         btfsc   1,7             ;   IF RTCC = 0xxx xxxxb THEN 
0032 2837           00430         goto    Nzero 
0033 1F2D           00431         btfss   Temp_2,6        ;      IF bit 6 in Temp_2 = 1 THEN 
0034 2837           00432         goto    Nzero 
0035 0A8F           00433         incf    Timer_2,f       ;         Increment Timer_2 
0036 132D           00434         bcf     Temp_2,6        ;         Clear bit 6 in Temp_2 
                    00435                                 ;      ENDIF 
0037                00436 Nzero                           ;   ENDIF 
0037 16AD           00437         bsf     Temp_2,5        ;Used to set shift/rotate direction (right) 
0038 122D           00438         bcf     Temp_2,4        ;Used to set shift/rotate direction (left) 
                    00439  
                    00003 ; ============================ 
                    00004 ; === UserCode starts here === 
                    00005 ; ============================ 

MPASM 01.50 Released             PIC4.ASM   6-23-1998  14:51:58         PAGE  3 
 

LOC  OBJECT CODE     LINE SOURCE TEXT 
  VALUE 

                    00006         ld      Timer_2,2        ;[D:1] 4 
0039 3000             &nbs
p; M         movlw   0
 
003A 190F               M         btfsc   Timer_2,2 
003B 3001               M         movlw   1 
                    00007         out     Port_B,0         ;[E:1] 5 
003C 00AC               M         movwf   Temp_1 
003D 182C               M         btfsc   Temp_1,0 
003E 1406               M         bsf     Port_B,0 
003F 1C2C               M         btfss   Temp_1,0 
0040 1006               M         bcf     Port_B,0 
                    00008 ; 
                    00009         endp 
0041 0064               M         clrwdt 
0042 2827               M         goto    Scan 
                        M         end 
 

MPASM 01.50 Released             PIC4.ASM   6-23-1998  14:51:58         PAGE  4 
 

SYMBOL TABLE 
  LABEL                             VALUE  

Aux_1                             00000028 
Aux_2                             00000029 
Cflag                             0000002A 
Creg_h                            00000018 
Creg_l                            00000010 
Ct                                0000002B 
Nzero                             00000037 
PCL                               00000002 
Port_A                            00000005 
Port_B                            00000006 
Reset                             00000000 
Scan                              00000027 
Temp_1                            0000002C 
Temp_2                            0000002D 
Timer_1                           00000001 
Timer_2                           0000000F 
_DFF                              00000020 
__16C84                           00000001 
and                                
and_not                            
ctr                   &nbs
p;           
 
dff                                
endp                               
idff                               
init                              0000000A 
inv                                
inv_lat                            
inv_out                            
latch                              
ld                                 
ld_not                             
or                                 
or_not                             
out                                
out_not                            
rsff_r                             
rsff_s                             
shift                              
step1                             0000000C 
step2                             0000000D 
stepbits                          00000001 
stepp_1                            
stepp_2                            
steptmp                           0000000E 
unused1                           0000002E 
unused2                           0000002F 
xor                                
xor_not                            

MPASM 01.50 Released             PIC4.ASM   6-23-1998  14:51:58         PAGE  5 
 

MEMORY USAGE MAP ('X' = Used,  '-' = Unused) 
 

0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 
0040 : XXX------------- ---------------- ---------------- ---------------- 
2000 : -------X-------- ---------------- ---------------- ---------------- 

All other memory blocks unused. 

Program Memory Words Used:    67 
Program Memory Words Free:   957 
 

Errors   :     0 
Warnings :     0 reported,     0 suppressed 
Messages :     0 reported,     0 suppressed 

 

 

 

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 – 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Ş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Ş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
                                                Ş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
mantıklı kullanımdır.    

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.

Posted in Uncategorised.

Bir cevap yazın