PIC nedir ? ne işe yarar ?

Güncelleme 16/08/2024

Peripheral Interface Controller (Çevresel Ünite Denetleme Arabirimi)

Piyasada bir çok mikro denetleyici üreten firma bulunmaktadır. Bunlar içinde neden Microchip firmasının ürettiği PIC‘lerin seçildiği sorusu akla gelebilir. Bunun en temel sebebi Microchip firmasının web sayfaları üzerinden sağladığı teknik destektir. Tüm mikrodenetleyicilere ilişkin ayrıntılı bilgiler ve farklı mikrodenetleyiciler ile yapılmış, farklı uygulama örnekleri firma tarafından ücretsiz olarak dağıtılmaktadır . Hepsinden önemlisi, firma devamlı geliştirmekte olduğu MPLAB adlı simülasyon programını da ücretsiz olarak dağıtmaktadır. Böylece PIC programlamak isteyen bir kişi, assembly editor, derleyici, simülatör ve programlayıcı ihtiyaçlarının hepsini tek bir program ile ve ücretsiz olarak gidermiş olmaktadır . Sadece Assembly değil Basic (Pic Basic Pro) ve C (Hitech PicC, CCS C) ve Pascal dilleri ile de derlenebilirler . Firmanın sağladığı bu desteğe bağlı olarak gelişen bir başka avantaj ise, bu konu ile ilgili kaynağın çok olmasıdır. Ayrıca PIC’ler az sayıda komut içeren komut kümelerine sahiptirler ve kolayca programlanabilirler. PIC’ler karmaşık olmayan osilatör, reset, besleme devreleri ile sağlıklı olarak çalışabilirler. Elbette en büyük avantajlarından birisi de ekonomik olarak oldukça uygun fiyatlara edinilebilmeleridir.

PIC AİLESİ

Başlangıç Tarihi,Üretim Yeri
1923 CHICAGO, ILLLNOIS, U.S
1987 CHANDLER , ARIZONA, U.S

►PIC10 ve PIC12 Ailesi, 8-bit veriyolu, 12-bit yazılım mimarisi
►PIC 16 Ailesi, 14-bit yazılım mimarisi, gelişmiş iletişim ve ADC özellikleri, PIC16F628, çok popüler olan PIC16F84’ün yerini almıştır)
►PIC18 Ailesi 16-bit yazılım mimarisi, 16-bit veriyolu
►PIC24 Ailesi, 24-bit yazılım mimarisi
►dsPIC : PIC24 tabanlı, artı DSP ( sayısal sinyal işleme ) fonksiyonları
►PIC32-bit Ailesi, 32-bit veriyolu
►PIC32MX Ailesi : MIPS Mimarisi tabanlı, 32- bit veriyolu

PIC MİKRO DENETLEYİCİ AİLESİNİN GELİŞİMİ

1987 yılında EPROM bellek yapılarıyla üretilen PIC mikrolara, 1989‘da ek özellikler eklenerek ve EEPROM belleği ile piyasaya 16C5X sunuldu. PIC12XXX Ailesi ise bu çiplerin 8 bacaklı benzerleriydi.

1992 yılında PIC16CXXX piyasaya sunuldu. Özellikleri : Gelişmiş kesme işlemi, 10 bit Analod Dijital Çeviriciler, 16 bit sayıcılar gibi çevre ilbirimlerine sahipti.
KESME İŞLEMİ : İşlem süreci devam ederken bir başka işlem başladığında devam ettiği işlemi bir yerde bırakıp yeni işleme koyuluyor.

Kesmeler : RB0/INT harici kesmesi, Zamanlayıcı 0 taşması, Zamanlayıcı 1 taşması, Zamanlayıcı 2 eşleşmesi, RB <4:7> durum değişikliği kesmesi, CCP modülü kesmesi, Karşılaştırcı kesmesi, Veri EEPROM kesmesi, USART alıcı kesmesi USART gönderici kesmesi

1996 yılında gerçek 16 bit çekirdeğe sahip MCU ( Mikro Controller Unit) PIC17CXXXpiyasaya sunuldu. Özellikleri : 16 bit işlem kodu (Opcode), 16 seviyeli çağrı yığını (Call Stack) yapısı, geliştirilmiş programlama kapasitesine sahipti.

2000 yılında PIC18 mimarisi, PIC17 serisinden daha fazla popüler oldu. Özellikleri : Değiştirilen çağrı yığını yapısı, 31 seviyeye çıkarılan ve yazıp okunulabilen çağrı yığını, indekslenmiş adres modu (PlusW), 12 bite genişletilen FSR yazmaçları yani RAM’a dayanıklı erişim yazmaçları gibi özelliklere sahipti. Bunlara rağmen hala I/O yazmaçları 8 bitten oluşuyordu.

2001 yılında dsPIC piyasaya sunuldu. Özellikleri : I/O yazmaçları 16 bit, RAM yığınına erişim için fiziksel adres anahtarlaması gerektirmemesi, RAM!a tam dolaylı erişim özelliği çok önemlidir, Program Uzayı Görüntüleme sayesinde program hafızasına doğrudan erişim, Kesme Vektör tabloları ile kesme tanımlamaları, yüksek hızda sinyal işleme gibi özellikler içermektedir.

Şubat 2007 yılında endüstri standartı olan MIPS32 M4K çekirdeği üzeriine inşa edilen 32 bit mikro denetleyici ailesi PIC32MX piyasaya sunuldu. Özellikleri : Yüksek çalışma hızı 80 MIPS (80MHz), yüksek flash hafıza 512 Kb, 32 bit işlemci önceki işlemcilere farklı olarak Von Neuman mimarisi ile üretilmiştir. Bacak (Pin) yapıları, 64 ve 100 pindir. PIC24(PIC’+FxxGA0xx) ile benzer özellikte ve ortak yazılım kütüphanesi, yazılım dilleri,programlayıcı donanımları kullanmaktadır.

2013 PIC Ailesinin en gelişmiş mikro denetleyicisi olan PIC32MX ailesi, 32 bit çekirdek zamanlayıcısı, 4 GB Sanal Bellek alanı, 4 bağımsız kanaldan oluşan doğrudan bellek erişimi yöneticisi (DMA), Vektörel kesme yöneticisi, 8 ve 16 bit Paralel port arayüzü, gerçek zaman saati ve takvimi, 5 adet 16 bit, 2 adet 32 bit zamanlayıcısı (Timer), USB ve Seri portları, 16 kanal 10 bit ADC gibi gelişmiş özelliklere sahiptir.

PIC MİKROKONTROLERLERİN TERCİH SEBEBLERİ

  • Lojik uygulamalarının hızlı olması
  • Fiyatının oldukça ucuz olması
  • 8 bitlik mikrokontroller olması ve bellek ve veri için ayrı yerleşik bus’ ların kullanılması
  • Veri ve belleğe hızlı olarak erişimin sağlanması
  • PIC’ e göre diğer mikrokontrolörlerde veri ve programı taşıyan bir tek bus bulunması, dolayısıyla PIC’ in bu özelliği ile diğer mikrokontrolörlerden iki kat daha hızlı olması.
  • Herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 kondansatör ve bir direnç ile çalışabilmeleri.
  • Yüksek frekanslarda çalışabilme özelliği
  • Standby durumunda çok düşük akım çekmesi.
  • İntterrupt kapasitesi ve 14 bit komut işleme hafızası.
  • Kod sıkıştırma özelliği ile aynı anda birçok işlem gerçekleştirebilmesi PIC mikrokontrolörleri çeşitli özelliklerine göre PIC16C6X, 16C7X, 16C5X ,16F8X, 16F87X gibi gruplara ayrılırlar.

PIC MİKROKONTROLERLERİN KULLANIMI İÇİN GEREKLİ AŞAMALAR

I/O (Giriş / Çıkış) : Mikrokontrolcünün dış dünya ile ilişkisini sağlayan, girdi ve çıktı şeklinde ayarlanabilen bir bağlantı pinidir. I/O çoğunlukla mikrokontrolcünün iletişim kurmasına, kontrol etmesine veya bilgi okumasına izin verir.

Yazılım : Mikrokontrolcünün çalışmasını ve işletilmesini sağlayan bilgidir. Başarılı bir uygulama için yazılım hatasız (bug) olmalıdır. Yazılım C, Pascal veya Assembler gibi çeşitli dillerde veya ikilik(binary) olarak yazılabilir. Donanım : Mikrokontrolcü, bellek, arabirim bileşenleri, güç kaynakları, sinyal düzenleyici devreler ve bunları çalıştırmak ve arabirim görevini üstlenmek için bu cihazlara bağlanan tüm bileşenlerdir.

Simülatör : PC üzerinde çalışan ve mikrokontrolcünün içindeki işlemleri simüle eden MPSIM gibi bir yazılım paketidir. Hangi olayların ne zaman meydana geldiği biliniyorsa bir simülatör kullanmak tasarımları test etmek için kolay bir yol olacaktır. Öte yandan simülatör, programları tümüyle veya adım adım izleyerek bug’lardan arındırma fırsatı sunar. Şu anda en gelişmiş simülatör programı Microchip firmasının geliştirdiği MPLAB programıdır.

ICE : PIC MASTER olarak da adlandırılır. (In- Circuit Emulator / İç devre takipçisi) PC  ve Mikrokontrolcünün yer alacağı soket arasına bağlanmış yararlı bir gereçtir. Bu gereç yazılım, PC de çalışırken devre kartı üzerinde bir mikrokontrolcü gibi davranır. ICE, bir programa girilmesini, mikro içinde neler olduğunu ve dış dünyayla nasıl iletişim kurulduğunun izlenilmesini mümkün kılar.

Programcı : Yazılımın mikrokontrolcü belleğinde programlamasını ve  böylece ICE’ nin yardımı olmadan çalışmasını sağlayan bir birimdir. Çoğunlukla seri port ‘a (örneğin PICSTART, PROMASTER) bağlanan bu birimler çok çeşitli biçim, ebat ve fiyatlara sahiptir.

Kaynak Dosyası : Hem asembler’ ın hem de tasarımcının anlayabileceği dilde yazılmış bir programdır. Kaynak dosya mikrokontrolör’ ün anlayabilmesi için önceden assemble edilmiş olmalıdır.

Assembler : Kaynak dosyayı bir nesne dosyaya dönüştüren yazılım paketidir. Hata araştırma bu paketin yerleşik bir özelliğidir. Bu özellik assemble edilme sürecinde hatalar çıktıkça programı bug’lardan arındırırken kullanılır. MPASM, tüm PIC ailesini elinde tutan Microchip’ in son assemble edicisidir.
Nesne dosyası (object file) : Assembler tarafından üretilen bu dosya; programcı, simülatör veya ICE’ nin anlayabilecekleri ve böylelikle dosyanın işlevlerinin çalışmasını sağlayabilecekleri bir dosyadır. Dosya uzantısı assemble edicinin emirlerine bağlı olarak , .OBJ veya .HEX olur.

PIC MİKROKONTROLLERLERİNİN ÖZELLİKLERİ

Güvenlik : PIC komutları bellekte çok az yer kaplarlar. Dolayısıyla bu komutlar 12 veya 14 bitlik bir program bellek sözcüğüne sığarlar. Harward mimarisi teknolojisi kullanılmayan mikrokontrolörler de yazılım programının veri kısmına atlama yaparak bu verilerin komut gibi çalıştırılmasını sağlamaktadır. Bu da büyük hatalara yol açmaktadır. PIC’ ler de bu durum engellenmiştir.

Hız : PIC oldukça hızlı bir mikrokontrolör’ dür. Her bir komut döngüsü 1µsn’ dir. Örneğin 5 milyon komutluk bir programın 20Mhz’ lik bir kristalle işletilmesi yalnız 1sn sürer. Bu süre 386SX33 hızının yaklaşık 2 katıdır. Ayrıca RISC mimarisi işlemcisi olmasının hıza etkisi oldukça büyüktür.

Komut seti : PIC’ in 16C5X ailesinde bir yazılım yapmak için 33 komuta ihtiyaç duyarken 16CXX araçları için bu sayı 35′ tir. PIC tarafından kullanılan komutların hepsi yazmaç (register) temellidir. Komutlar 16C5X ailesinde 12 bit, 16CXX ailesindeyse 14 bit uzunluğundadır. PIC’ te CALL, GOTO ve bit test eden BTFSS ve INCFSZ gibi komutlar dışında diğer komutlar 1 saykıl çeker. Belirtilen komutlar ise 2 saykıl çeker.

Statik İşlem : PIC tamamıyla statik bir işlemcidir. Yani saat durdurulduğunda da tüm yazmaç içeriği korunur. Pratikte bunu tam olarak gerçekleştirebilmek mümkün değildir. PIC mikrosu programı işletilmediği zaman uyuma (sleep) moduna geçirilerek micronun çok düşük akım çekmesi sağlanır. PIC uyuma moduna geçirildiğinde , saat durur ve PIC uyuma işleminden önce hangi durumda olduğunu çeşitli bayraklarla ifade eder. (elde bayrağı, 0 (zero) bayrağı … vb.) PIC uyuma modunda 1µA’den küçük değerlerde akım çeker. (Standby akımı).

Sürme özelliği (Sürücü kapasitesi): PIC yüksek bir çıktı kapasitesine sahiptir. Tek bacaktan 40mA akım çekebilmekte ve entegre toplamı olarak 150mA akım akıtma kapasitesine sahiptir. Entegrenin 4mHz osilatör frekansında çektiği akım çalışırken 2mA, stand-by durumunda ise 2µA kadardır.
Seçenekler : PIC ailesinde her türlü ihtiyaçların karşılanacağı çeşitli hız, sıcaklık, kılıf, I/O hatları, zamanlama (Timer) fonksiyonları, seri iletişim portları, A/D ve bellek kapasite seçenekleri bulunur.

Çok yönlülük: PIC çok yönlü bir mikrodur ve ürünün içinde, yer darlığı durumunda birkaç mantık kapısının yerini değiştirmek için düşük maliyetli bir çözüm bulunur.

Güvenlik : PIC endüstride en üstünler arasında yer alan bir kod koruma özelliğine sahiptir. Koruma bitinin proglamlanmasından itibaren, program belleğinin içeriği, program kodunun yeniden yapılandırılmasına olanak verecek şekilde okunmaz.

Geliştirme:PIC program geliştirme amacıyla proglamlanabilip tekrar silinebilme özelliğine sahiptir. (EPROM, EEPROM) Aynı zamanda seri üretim amacıyla bir kere programlanabilir (OTP) özelliğine sahiptir.
Liste dosyası : Assembler tarafından yaratılan ve kaynak dosyadaki tüm komutları hexadecimal sistemdeki değerleri ve tasarımcının yazmış olduğu yorumlarıyla birlikte içeren bir dosyadır. Bir programı bug’lar dan arındırırken araştırılacak en yararlı dosya budur. Çünkü bu dosyayı izleyerek yazılımlarda neler olup bittiğini anlama şansı kaynak dosyasından daha fazladır. Dosya uzantısı .LST dir.

Diğer dosyalar: Hata dosyası ( Error file: uzantısı .ERR) hataların bir listesini içerir ancak bunların kaynağı hakkında hiç bir bilgi vermez. Uzantısı .COD olan dosyalar emülatör tarafından kullanılırlar.

Bug’lar :Tasarımcının farkında olmadan yaptığı hatalardır. Bu hatalar, basit yazılım hatalarından, yazılım dilinin yanlış kullanımına kadar uzanır. Hataların çoğu derleyici tarafından bulunur ve bir .LST dosyasında görüntülenir. Kalan hataları bulmak ve düzeltmek te geliştiriciye düşer.

Microchip ( Pic ) Mikrodenetleyici Ailesi

Pic12CXXX/12FXXX Ailesi :

Bu aile RISC mimarisine sahip 8 pinli DIP veya yüzey montajlı paketlerinde imal edilen mikrodenetleyicilerden oluşmaktadır.12 ve 14 bit uzunlukta komut setine sahip değişik entegreler mevcuttur.2.5V luk gerilimde çalışabilme özellikleri ,kesme özellikleri,A/D çevirici özellikleri flash,ROM,veya OTP özellikleri, EEPROM veri belleği özelliklerinden dolayı düşük maliyetleriyle küçük uygulamalarda sıkça kullanılan mikrodenetleyicilerdir.

PIC16C5X Ailesi :

Microchip ailesinin en hesaplı mikrodeneyicileri bu ailendir.12 bitlik komut setine sahiptir.Oldukça kısıtlı özellikleri olan bu mikrodenetcilerin en büyük özellikleri ucuz olmaları ve 2v kadar düşük gerilimlerde çalışabilmeleridir.Ayrıca bu ailenin 16HVCXX mikrodenetcileri direkt 15v ile de çalışabilmektedir.

PIC16CXXX /PIC16FXXX Ailesi :

Microchip mikrodenetleyiciler içinde en yaygın olarak kullanılan mikrodeneyicilerdir.Seri haberleşme,A/D çevrim,analog karşılaştırıcı,zamanlayıcılar gibi alanlarda kullanılır.18 ayaktan 68 ayaklıya kadar birçok değişik kılıfta ve farklı özelliklerde mikrodenetleyici bu gruba dahildir. PIC 16f628 PIC 16f628a  – PIC 16f84 PIC 16f877PIC 16f877a

PIC17CXXX Ailesi :

Microchip firması ilk 16 bit komut setine sahip 8 bit’lik mikrodenetleyicisidir.Bu pic sadece OTP ve ROM bellekli olarak üretilmiştir.Pic18xxx üretimiyle popülerliğini yitirmiştir.

PIC18FXXX Ailesi :

fig1 1

16 bitlik komut seti ,yüksek çalışma hızı,A/D çevrim,zamanlayıcılar,32 kesmeye imkan vermesi ,RS232 arabirimi,seri ve paralel haberleşme protokolleri ile bu aile Microchip pic serisi içinde en güçlü mikrodeneyici ailesidir.64k’ya kadar büyük program belleğiyle ve 1K byte’lık Ram belleğiyle çok gelişmiş uygulamalara imkan verir.

PIC16F BLOK DİYAGRAM

PIC NEDİR

PIC İç Yapısı

fig1 31

PIC16F877 denetleyicisi 20Mhz uygulama frekansında çalışmaktadır. Yani bu da demektir ki içerisindeki CPU hızı 20Mhz’dir. 8K Program belleği, 368 byte veri belleği (RAM bellek) ve 256 byte EEPROM belleği mevcuttur. Port A,B,C,D,E olmak üzere 5 farklı portu ve toplam 40 adet pini vardır. 14 adet Interrupt, 2 adet PWM modülü, 3 adet Timer bulunmaktadır. Ayrıca seri iletişim olarak USART parelel iletişim olarak da PSP protokollerini desteklemektedir. Son olarak da içerisinde 10 bit çözünürlükte 8 kanallı ADC modül içermektedir. Tüm bu yapıyı yukarıda bulunan PIC16F877’nin iç yapısını gösteren  şemada net bir şekilde görebilirsiniz.

PIC Kılıf Tipi

Diğer tüm PIC denetleyicilerinde olduğu gibi PIC16F877 denetleyicisinin de farklı çeşit package (kılıf) şekli mevcuttur. DIP, QFN44, QFN ve PLCC olarak 4 tip kılıfla satışa sunulmaktadır.

png2

PIC Programlama

PIC mikrodenetleyicileri diğer mikrodenetleyicilerde olduğu gibi Assembly dili ile programlanabilmektedir. Assembly dili makine diline en yakın dildir. Bu sayede mikrodenetleyi register seviyesinde programlayıp iç donanımına tamamen hakim olunabilir. Ancak assembly dili ile program yazmak oldukça zahmetli ve uzun zaman alan bir iştir. C dili orta seviye bir programlama dilidir. Gömülü sitemlerin %95’inde C dili kullanılmaktadır. C dili ile programlar assemblye göre oldukça hızlı yazılmaktatır. Performans olarak da C dili büyük kayıplara sebep olmamaktadır.
fig2 7
Yukarıdaki resim ile C dili ve Assembly dili arasındaki kod satır sayısı farkını görebilirsiniz. Basit bir işlem olan a*b işlemi için assembly dilinde kod yazmak oldukça vakit alıcıdır. Ben tüm projelerimde C dili kullanıyorum.

PIC Programın Yüklenmesi

İster C dili ile yazılmış olsun ister Assembly dili ile yazılan tüm programlar compiler programı tarafından Hex dosyasına çevrilir ardından Hex dosyaları da Binary formatında mikrodenetleyiciye yüklenir.

fig2 5
C dili ile yazılan programlar ise önce assembly formata çevrilir ardından hex formatına ve son olarak da binary haliyle mikrodenetleyiciye yüklenir.
fig2 6

Bir yanıt yazın