14 Mart 2014 Cuma

ELEKTRONİK ÖĞRENCİLERİ İÇİN MİKRO İŞLLEMCİLER VE PİC DERSİ


MİKROİŞLEMCİLER(MİCROPROCESSOR)
Günümüzde kullandığımız bilgisayarların özelliklerinden bahsederken özellikle işlemcisinden bahsedilir ve bunların çalışma frekansları o bilgisayarın hızını belirlemede ön önemli kıstas olduğu açıktır. Şu an kullanılan, Intel firmasının ürettiği 80286, 80386, 80486 ve nihayetinde Pentium serisi birer mikroişlemcilerdir. (Microprocessor). İşlemciler kendi başlarına pek işe yaramazlar ve bellek, giriş-çıkış ünitelerine ihtiyaç duyarlar.Eğer bu üç yapıyı ( CPU, RAM ve I/O ) bir araya getirip bir kılıf içine aldığımızda ortaya çıkan yapıya
mikro denetleyici (microcontroller) denir.
Bilgisayar teknolojisi gerektiren uygulamalarda kullanılmak üzere tasarlanmış olan mikro denetleyiciler, mikroişlemcilere göre basit ve ucuzdur. Artık günümüzde birçok ürünün içinde mikro denetleyiciler yer almaktadır. Mesela yeni çıkan klimaları ve buzdolaplarını yakından inceleyin. Mutlaka sıvı kristal bir gösterge ekranına sahiptir ve tuşlarla bu makineleri kontrol etmekteyiz. Bu kontrol etme olayını bize mikro denetleyiciler sağlar. Veya arabamızda özellikle yeni olanlarında mutlaka bir tane mikro denetleyici vardır. Bu mikro denetleyici merkezi kilit sistemini ve gösterge panelini ve/veya klimayı kontrol eder ve bunlar hakkındaki bilgileri bize ekranda veya göstergelerle bize anlatır. örnekleri arttırmak mümkün. ışte bu tür kontrol ve hesaplama olayları için mikro denetleyicileri kullanabiliriz. ıstersek bir robot bile yapabiliriz.
Günümüzde birçok mikrodenetleyici üreticisi mevcuttur ve bunlar ihtiyaç duyulan işleme göre farklı mikro denetleyiciler üretmektedirler. Ama basite indiğimizde mikro denetleyici mimarisinde çok az bir değişim vardır ve bu mikro denetleyiciler yapı itibariyle hemen hemen aynıdır.
Bir projeye başlamadan önce mikro denetleyiciyi seçerken, uygulamada kullanacağımız mikro denetleyicinin ne tür özelliklerinin olması gerektiği iyice kavranmalıdır. Bu tür özellikler,
1. Kesme sayısı
2. I/O port sayısı
3. Programlanabilir dijital paralel giriş / çıkış
4. Programlanabilir analog giriş / çıkış
5. Dahili belek tipi ve kapasitesi
6. Kayan nokta hesaplaması
Bu özellikleri arttırmak mümkün. Ben sadece temel özellikleri saydım.
Bir mikrodenetleyici genel olarak aşağıdaki birimlerden oluşur:
1. CPU (Merkezi işlem ünitesi - central processing unit)
2. RAM (Rastgele erişimli bellek-Random Access Memory)
3. EPROM/PROM/ROM (Silinir, yazılır sadece okunur bellek-Erasable Programmable Read Only Memory)
4. I/O (Girdi/çıktı - input/output) - seri ve paralel
5. Timers (Zamanlayıcılar)
6. Interrupt controller (Kesmeler)
Mikro denetleyiciler özel amaçlı bilgisayarlardır ve programlandıkları şeyi en iyi şekilde yaparlar.Genel olarak özellikleri ise;
1. Mikro denetleyiciler sadece bir iş için programlanmışlardır ve sadece ve sadece bu programı işlerler ve kullandıkları program çipin içinde veya program hafızası denilen yerde saklı tutulur.
2. Mikro denetleyiciler sadece 50 mW civarında güç harcarlar.
3. Mikro denetleyicilere sadece girdi yapılmaz aynı zamanda çıktı da alınabilir. LED göstergelerle, sıvı kristal göstergelerle, ikaz sesleriyle vb..
4. Mikro denetleyiciler ucuzdur. Bir çok parçadan oluşan kompleks bir devreyi kolayca küçük boyutlara ve maliyete indirmenizi sağlar.

PIC, adını İngilizce'deki Peripheral Interface Controller cümlesindeki kelimelerin baş harflerinden almış olan bir mikrodenetleyicidir. Eğer bu cümleyi Türkçe'ye çevirirsek, çevresel üniteleri denetleyici arabirim gibi bir anlam çıkacaktır.PIC gerçekten de çevresel üniteler adı verilen lamba,motor,role,ısı ve Işık sensörü gibi I/O elemanların denetimini çok hızlı olarak yapabilecek şekilde dizayn edilmiş bir chip'tir.
RICS mimarisi adı verilen bir yöntem kullanılarak üretildiklerinden bir PIC'i programlamak için kullanılacak olan komutlar oldukça basit ve sayı olarak da azdır. 1980'lerin başından itibaren uygulanan bir tasarım yöntemi olan RISC (Reduced Instruction Set Computer) mimarisindeki temel düşünce, daha basit ve daha az komut kullanılmasıdır. örneğin PIC16F84 mikrodenetleyicisi toplam 35 komut kullanılarak programlanabilmektedir.
Bir mikrodenetleyici ile çalışmaya başlayanlar için en uygun seçenek PIC16F84 denetleyicisidir. çünkü Flash belleğe sahip olan PIC16F84'i programlayıp ve deneylerde kullandıktan sonra, silip yeniden program yazmak PIC ile yeni çalışmaya başlayanlar için büyük kolaylıktır. Böylece işe yeni başlayanlar yaptıkları programlama hataları nedeniyle chip'i atmak zorunda kalmayacaklardır. Gerçi EPROM program belleği olan chip'lere de yeniden yazmak mümkündür ama, bu durumda bir EPROM silici cihazına ihtiyaç vardır. Bir silici cihaz bulunsa bile proramı bellekten silmek için en azından 10 - 15 dk. Beklemek zorunda kalınacaktır. ışte PIC16F84'ün bu özelliği mikrodenetleyici kullanmaya yeni başlayanlar için ideal bir seçenektir.
PIC16F84'ü kullanmanın bir diğer avantajı da, programlama donanımının çok ucuz ve kullanışlı olması ve hatta çoğu meraklı elektronik kullanıcı tarafından bile üretilebilmesidir.
Şimdi de isterseniz PIC16F84 mikro denetleyicinin özelliklerine değinelim.
Yüksek Performanslı RISC CPU özellikleri:
  • Öğrenmek için yalnızca 35 tek kelime komutları
  • İki dönüşümlü program komutları haricindeki bütün komutlar tek dönüşümde (400 ns @ 10 MHz)
  • İşletim hızı DC-10 MHz saat girişi. DC-400 ns komut dönüşümü
  • 14 bitlik geniş komutlar
  • 8 bitlik geniş veriyolu
  • 1K*14 EEPROM program hafızası
  • 36*8 genel amaçlı register (SRAM)
  • 64*8 chip üstünde EEPROM data hafızası
  • 15 özel fonksiyonlu donanım registeri · Direkt,endirekt ve bağımlı adresleme modları
  • Dört kesinti kaynağı
  • Harici RB0/INT pini
  • TMRO zamanlayıcı taşması
  • PORTB <7:4> değişim kesintisi
  • Data EEPROM yazma taşması
  • 1.000.000 EEPROM data hafızası ERASE/WRITE döngüleri
  • EEPROM hafıza geçerliliği 40 yıldan fazla
  • 13 I/O pini ile bağımsız komut kontrolu
  • Direkt LED sürücüsü için yüksek akımda indirme/çıkarma
  • Her pin için max. 25 mA'lik indirme
  • Her pin için max. 20 mA'lik bindirme
  • TMRO: 8 bitlik programlanabilir ön derecelendirici ile 8 bitlik zamanlayıcı/sayac
Özel Mikrokontrolör özellikleri:
  • Power-on Reset (POR)
  • Power-up Timer (PWRT)
  • Oscillator Start-up Timer (OST)
  • Güvenli işlemler için chip üstünde olan RC osilatör ile Watchdog Timer (WDT)
  • Kod koruması
  • Güç korumalı SLEEP modu
  • Seçilebilir osilatör seçenekleri
  • Seri sistem içi programlama (iki pin yolu ile)
CMOS Teknolojisi:
  • Düşük güç,yüksek hız CMOS EEPROM teknolojisi
  • Bütünüyle statik dizayn
  • Geniş aralıklı işletme voltajı:
  • Ticari : 2.0V-6.0V
  • Endüstriyel : 2.0V-6.0V
  • Düşük güç tüketimi
    < 2mA tipik @ 5V,4MHz
    60 mA tipik @ 2V,32 kHz
    26 mA tipik standby akımı @ 2V
PIC, assembler dili adı verilen ve toplam 35 komuttan oluşan programlama diliyle programlanır. Bu komuları yazmak için basit bir editör kullanabiliriz. Bu Windows'da notpad, DOS'da edit programları olabilir. Asıl önemli olan yazdığımız bu komutları makine diline çevirmektir. Text dosyası biçiminde kaydedilmiş olan assembly dili komutlarını makine diline çeviren MPASM'nin hem DOS altında hemde windows altında çalışan versiyonu bulunmaktadır. Bu program http://www.microchip.com adresinden download edilebilir. Bizim kullanacağımız MPLAB programında hem metin editörü hem de MPASM assembler programı tümleşik olarak bulunur.
İsterseniz şimdi PIC e assembler komularını görmeye başlıyalım. Başlamadan önce şunu belirtmekte fayda var. PIC kullanılan saat (clock) frekansını dörde bölüp, bu sürede komutu işler. Yani PIC'e saat darbelerini üreten Kristal veya herhangibir zamanlayıcı 4 MHz frekanslı darbeler üretiyorsa, PIC herbir komutu 1 usn (mikrosaniye) de işliyor demektir. Genelde PIC16F84 için 4 MHz lik kristaller kullanılır. Bu kısa bilgiyi verdikten sonra assembly komutlarını anlatmaya başlayabiliriz.
MPASM assembler programının yazılan komutları doğru olarak algılayıp, PIC'in anlayabileceği hex kodlarına dönüştürebilmesi için şu bilgiler program içine özel formatta yazılması gerekir;
  • Komutyların hangi PIC16XX için yazıldığı,
  • Programın bellekteki hangi adresten başlayacağı,
  • Komutların ve etiketlerin neler olduğu,
  • Programın bitiş yeri.
Şimdide kodları tek tek inceleyelim,
Kullanılan Kısaltmalar:
Kısaltma
Anlamı
Örnek
n
Sabit değer
h'20', d'10', b'00001100' gibi...
f
Bizim oluşturduğumuz saklayıcı

d
yön (direction), değeri 0 (w) veya 1 (f)olabilir.
ADDWF durum1,f ; W ile durum1'i AND işlemine tut, değeri f olduğu için durum1 saklayıcısına yaz.
S.R.E.B
Status Registerinde Etkilenen Bayraklar

C
Taşma,ödünç biti. En sondaki 7. bitde taşma olduğunda 1 olur.

DC
Taşma, ödünç biti. 3. bitde taşma olduğunda 1 olur.

Z
Zero(Sıfır) biti. Bir aritmetik veya mantıksal komutun sonucu 0 (sıfır) olduğunda=1 olur.

TO ve PD
Bu bitler status reg. anlatılırken işlenecek.


PIC Programlama Komutları...


Komut
S.R.E.B
Anlamı
ADDLW n
C,DC,Z
W' ya n değeri eklenir. Sonuç W'ye yazılır.
ADDWF f,d
C,CD,Z
W içeriğine f saklayıcısını ekler ve sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.
Örnek: ADDWF DAT_IN,W
ANDLW n
Z
n değeri W yazmacıyla AND'lenir Ve sonuç W yazmacına yazılır.
Örnek: ANDLW B'00000011'en alttaki iki bit hariç bütün bitleri kapatır.
ANDWF f,d
Z
W ve f dosyasını AND işlemine tabi tutar ve sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.
Örnek: ANDWF TEMP W TEMP dosyasının içeriğini yalnız bırakarak AND fonksiyonunun sonucunu W yazmacına yerleştirir.
BCF f,b
yok
F adresinde bulunan dosya yazmacındaki b bitini 0 yap.
Örnek: BCF STATUS , ZERO
BSF f,b
yok
F adresinde bulunan dosya yazmacındaki b bitini 1 yap.
Örnek: BSF PORTA , BITO
BTSFC f,b
yok
F adresindeki yazmaçla b bit'ini test et ve eğer 0'sa bir sonraki komuta atla . 1'se izleyen komuta geç.
Örnek: BTFSC PORTB , SWITCH1
BTFSS f,b
yok
F adresindeki yazmaçta b bit'ini test et ve eğer 1'se bir sonraki komuta atla. Eğer 0'sa onu izleyen komuta geç.
Örnek: BTFSS STATUS , CARRY
CALL k
yok
k etiketli bir alt rutine bir çağrı yapılmıştır. W yazmacının içeriği gerektiğinde bir alt rutin içinde kullanılmak üzere transfer edilecektir.
Örnek: CALL TEMP_CONVERT.
CLRF f
Z
f adresindeki içeriği yazmacın sıfırlanacak şekilde temizle veya reset et
CLRW
Z
W yazmacının içeriğini sıfırlayacak şekilde temizle veya reset et
CLRWDT
TO,PD
Watchdog zamanlayıcı yazmacı sıfıra ayarlanmıştır.
COMF f,d
Z
F dosyasının içeriğini tersine alır ve sonucunu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.
DECF f,d
Z
F dosyasından 1 çıkarır ve sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.
DECFSZ f,d
yok
F dosyasını içeriğini bir azalt ve sonuç sıfırsa izleyen komutu atla,sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.
GOTO k
yok
Program k etiket / adresine sıçrar.
INCF f,d
Z
F dosyasının içeriğini 1 artırır ve sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.
INCFSZ f,d
yok
F dosyasının içeriğini 1 artır ve sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.,sonuç sıfırsa bir sonraki komutu atla.

IORLW n
Z
N değeri W yazmacıyla OR'lanır Ve sonuç w yazmacıyla yazılır.
Örnek:" IORLW h'C4' "
IORWF f,d
Z
W yazmacının içeriği ve f dosyasını OR işlemine tabi tutar ve sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.
Örnek: "IORWF COUNT, F" fonksiyonunun sonucunu COUNT dosyasına yerleştirir.
MOVLW n
yok
N değeri W'ya taşınır.
Örnek: MOVLW 36II
MOVF f,d
Z
F dosyasının içeriğini taşır/kopyalar ve sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.
MOVWF f
yok
W yazmacının içeriğini f adresindeki yazmaca kopyala.
Örnek: MOVWF TEMP
NOP
yok
Hiçbir şey yapma
Örnek: NOP ; 1saat çevrimi harcar
RETFIE
yok
Bir kesmeden geri döner.
RETLW n
yok
W yazmacında bir n değeriyle alt rutinden geri dön.
Örnek: RTLW 20H; W yazmacında 20H ile +1 adresini çağırmaya geri döner.
Örnek: RETLW 20H; alt rutinin çağrıldığı adres +1 adresine W yazmacında 20H değerini taşıyarak geri döner
RETURN
yok
W yazmacının içeriğini olduğu gibi bırakarak bir alt rutinden geri döner.
RLF f,d
C
Tüm bit'leri birer sola kaydır veya taşı. Bit 7 taşıma bit'i de ve taşıma bit'i 0 bit'i olacaktır. Sonuç hedef d'ye yerleştirilir.
RRF f,d
C
Tüm bitleri birer sağa kaydır veya taşı.0 bit'i taşıma bit'i taşıma
SLEEP
TO,PD
PIC uyuma veya bekleme durumuna getirilmiştir. Yazmaç içerikleri dondurulmuştur ve PIC işletim akımının bir kısmını çeker. Uyuma durumundan çalışma durumuna geçerken 16C5x ailesi reset vektörüne atlar. 16Cxx ailesiyse izleyen kod hattında devam eder.
SUBLW n
C,DC,Z
W değeri n'den çıkarılır ve sonuç W' ya yerleştirilir.
SUBWF f,d
C,DC,Z
F dosyasından W yazmacı içeriğini çıkarır ve sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.
SWAPF f,d
yok
f saklayıcısının içerisindeki ilk dört bit ile son dört biti yer değiştirir. d'nin değerine göre sonuç W veya f saklayıcılarına yazılır.
XORLW deger
Z
W içeriğini deger ile birlikte XOR işlemine tabi tut. sonuç w ye yazılır.
XORWF f,d
Z
W içeriği ve f dosyasını XOR işlemine tabi tutar Ve sonucu hedef d'nin değerine bağlı olarak W veya f saklayıcısına yerleştirilir.


Hiç yorum yok:

Yorum Gönder