|
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:
-
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.
Programlama 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/
|
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.
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 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
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ç entegre 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 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. |
|