3. MİKRODENETLEYİCİLER - MİKROKONTROLÖRLER - PIC
3.1. GİRİŞ
Bir mikroişlemcili sistemi meydana getiren temel bileşenlerden mikroişlemci, bellek ve G/Ç birimlerinin, bazı özellikleri kırpılarak (azaltılarak) tek bir entegre içerisinde üretilmiş biçimine mikrodenetleyici (microcontroller) denir. Denetim teknolojisi gerektiren uygulamalarda kullanılmak üzere tasarlanmış olan mikrodenetleyiciler, mikroişlemcilere göre çok daha basit ve ucuzdur. Endüstrinin her kolunda kullanılan mikrodenetleyiciler; otomobillerde, kameralarda, cep telefonlarında, fotokopi ve çamaşır makinelerinde, televizyonlarda, oyuncak vb cihazlarda sıklıkla kullanılmaktadır.
PIC’ in kelime anlamı PERIPHERAL INTERFACE CONTROLLER giriş-çı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.
3. 2. PIC MİKRODENETLEYİCİ AİLESİNE GENEL BAKIŞ
3. 2. 1 - PIC MİKROKONTROLERLERİNİN TERCİH SEBEBEPLERİ
a) Lojik uygulamalarının hızlı olması
b) Fiyatının oldukça ucuz olması
c) 8 bitlik mikrokontroller olması ve bellek ve veri için ayrı yerleşik yolların kullanılması
d) Veri ve belleğe hızlı olarak erişimin sağlanması
e) PIC’ e göre diğer mikrokontrolcülerde veri ve programı taşıyan bir tek yol bulunması, dolayısıyla PIC’ in bu özelliği ile diğer mikrokontrolörlerden iki kat daha hızlı olması.
f) Herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 kondansatör ve bir direnç ile çalışabilmeleri.
g) Yüksek frekanslarda çalışabilme özelliği
h) Standby (uyku) durumunda çok düşük akım çekmesi.
i) İntterrupt kapasitesi ve 14 bit komut işleme hafızası.
j) Kod sıkıştırma özelliği ile aynı anda birçok işlem gerçekleştirebilmesi PIC mikrokontrolörlleri çeşitli özelliklerine göre PIC16C6X, 16C7X, 16C5X gibi gruplara ayrılırlar.
k) RISC mimarisine sahip olması;
3. 2. 2 - PIC MİKROKONTROLÖRLERİNİN ÖZELLİKLERİ
a) Güvenirlik: 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 mikrokontrollö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.
b) 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.
c) 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.
d) 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ı).
e) 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.
f) 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.
g) Ç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.
i) 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.
j) 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.
k) 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.
l) 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.
m) Flash olma özelliği: Bu özellik PIC’in yeniden programlanabilir olması durumunu ifade etmektedir. Yani PIC üzerine yazılan program geliştirme amacı ile silinebilir ve yeni bir program yüklenebilir.
3. 2. 3 - PIC’ İN KULLANIMI İÇİN GEREKLİ AŞAMALAR
a) 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.
b) 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.
c) 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.
d) 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.
e) 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.
f) 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.
g) Kaynak Dosyası : Hem asembler’ in 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.
i) Nesne dosyası (object file) : Assembler tarafından üretilen bu dosya; programcı, similatö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.
3. 2. 4. Mikrodenetleyicilerin Sağladığı Üstünlükler
- Mikroişlemcili sistemin tasarımı ve kullanımı mikrodenetleyicili sisteme göre daha karmaşık ve masraflıdır.
- Mikrodenetleyicili bir sistemin çalışması için elemanın kendisi ve bir osilatör kaynağının olması yeterlidir.
- Mikrodenetleyicilerin küçük ve ucuz olması, bunların tüm elektronik kontrol devrelerinde kullanılmasını sağlamaktadır.
3. 2. 5. Mikrodenetleyici Çeşitleri
Günümüzde mikrodenetleyiciler, basit ve ucuz üretim maaliyetleri dolayısıyla bir çok firma tarafından üretilmektedir. Bunlardan en önemlilerine; Intel firması tarafından üretilen 8051 serisi, Motorola tarafından üretilen 68HC11 serisi ve Microchip tarafından üretilen ve kısaca PIC denilen 16X/18X serisi örnek olarak verilebilir.
Microprocessor veya mikrodenetleyiciler kendi içlerindeki dahili veri saklama alanları olan registerleri arasındaki veri alış verişini farklı sayıdaki bit'lerle yaparlar. Örneğin 8088 mikro işlemcisi chip içerisindeki veri alış verişini 16-bit ile yaparken, Pentium işlemcileri 32-bit'lik verilerle iletişim kurarlar. Bir CPU veya MCU'nun dahili veri yolu uzunluğuna kelime boyu denir.
Microchip PIC'leri 12/14/16 bit'lik kelime boylarında üretmektedir ve buna göre aşağıdaki aile isimlerini vermektedir.
PIC16C5XXailesi 12-bit kelime boyu,
PIC16CXXX ailesi 14-bit kelime boyu,
PIC17CXXX ailesi 16-bit kelime boyu,
PIC12CXXX ailesi 12-bit/14-bit kelime
boyuna sahiptir.
Bir CPU veya MCU'nun chip dışındaki harici ünitelerle veri alışverişini kaç bit ile yapıyorsa buna veri yolu bit sayısı denir. PIC'ler farklı kelime boylarında üretilmelerine rağmen harici veri yolu tüm PIC ailesinde 8-bit'tir. Yani bir PIC, I/O portu aracılığı ile çevresel ünitelerle veri alışverişi yaparken 8-bit'lik veri yolu kullanır.
3. 2. 6. PIC’ lerde Dikkat Edilmesi Gereken Özellikler
Mikrodenetleyiciler ile tasarım yapmadan önce tasarlanan sisteme uygun bir denetleyici seçmek için o denetleyicinin taşıdığı özelliklerin bilinmesi gereklidir. Mikrodenetleyicinin hangi özelliklere sahip olduğu kataloglarından anlaşılabilir. Aşağıda sıralanan özellikler bunlardan bazılarıdır.
- Programlanabilir dijital paralel giriş/çıkış
- Programlanabilir analog giriş/çıkış
- Seri giriş/çıkış (senkron, asenkron ve cihaz yönetimi)
- Motor veya servo kontrol için pals sinyali çıkışı
- Harici giriş vasıtasıyla kesme
- Harici bellek arabirimi
- Harici veri yolu arabirimi
- Dahili bellek tipi seçenekleri (ROM, EPROM, PROM, EEPROM)
- Dahili RAM seçeneği
- Kayan nokta hesaplaması
Buna ilaveten, bazı PIC mikrodenetleyicilerde aşağıdaki ek özellikleri görebiliriz:
- RISC ( azaltılmış komut takımı ) komut takımı ve sadece 35 makine dili komutu
- Zamanlama devresi
- FLASH program belleği
- Analog-sayısal çevirici
- Analog karşılaştırıcı devresi
- Ek zaman devreleri
- PWM devresi
- Dış ve iç kesme (interrupt) devreleri
- I2C ve SPI bağlantıları
3. 2. 7. PIC Programlamak İçin Gerekli Donanımlar
- PC bilgisayar
- Bir metin editörünün kullanılmasını bilmek
- PIC assembler programı
- PIC programlayıcı donanımı
- PIC programlayıcı yazılımı
- Programlanmış PIC’in çalışmasını görmek için PIC deneme kartı
Assembly program kodlarını kolayca yazmak, doğru ve hızlı bir şekilde PIC’ in program belleğine göndermek için, bilgisayara ihtiyaç vardır. Bir metin editörü kullanarak yazılan program kodları derlendikten sonra PIC’e gönderilmesi gerekir. Program kodlarının PIC’e yazdırma işlemi paralel veya seri porta bağlanan PIC programlama kartı ile yapılır. Bu işleri yapabilmek için gereken donanımlar; görsel bir işletim sistemi (Windows, Linux), basit bir editör (Edit, Notpad, Word gibi) 1GHz CPU, 256 MB RAM, 40 GB sabit disk ve CDROM sürücüsü olmalıdır. Bu donanımlar 2006 yılı şartlarına göre yazılmıştır.
3. 3. Mikrodenetleyici YapıLARI ve Çevre ElemanlarI
3. 3. 1. PIC MİKROKONTROLÖRLERİNİN İÇ YAPISI
CPU bölgesinin kalbi ALU dur. (Aritmetic Logic Unit-Aritmetik mantık birimi) ALU, W (Working-Çalışan) adında bir yazmaç içerir. PIC, diğer mikroişlemcilerden, aritmetik ve mantık işlemleri için bir tek ana yazmaca sahip oluşuyla farklılaşır. W yazmacı 8 bit genişliğindedir ve CPU’da ki herhangi bir veriyi transfer etmek üzere kullanılır.
CPU alanında ayrıca iki katagoriye ayırabileceğimiz Veri Yazmaç dosyaları (Data Regıster Files) bulunur. Bu veri yazmaç dosyalarından biri, I/O ve kontrol işlemlerinde kullanılırken, diğeri RAM olarak kullanılır.
PIC’ ler de Harward Mimarisi kullanılır. Harward mimarisi mikrokontrolcülerde veri akış miktarını hızlandırmak ve yazılım güvenliğini arttırmak amacıyla kullanılır. Ayrı bus’ ların kullanımıyla veri ve program belleğinde hızlı bir şekilde erişim sağlanır.
PIC mikrokontrolör’ lerini donanımsal olarak incelerken PIC 16C84 veya yeni adıyla PIC 16F84 üzerinde durarak bu PIC’ i temel alıp donanım incelenecektir. Bellek ve bazı küçük farklılıklar dışında burada anlatılanlar bütün PIC’ ler için geçerlidir.
3. 3. 2. PIC 16F84 MİKROKONTROLLÖR SİSTEMİNİN YAPISI
Bu sistemin tam olarak blok diyagramını aşağıda görmekteyiz. Birçok ana parçasını yukarıda anlattığımız bu düzenin çalışmasına genel olarak bakalım. Bu arada yukarıda bahsedilmemiş olan parçaları da kısaca tanımış olalım.
A ve B portları mikrokontrollörümüzün dış dünya ile olan bağını kuran uçlardır. Burada A portu A0-A4 adıyla 5 uç ve B portu B0-B7 adıyla 8 uçtan oluşan toplam 13 uç vardır ve bunlar hem giriş hem de çıkış olarak kullanılabilirler ki; bu uçlardan bazılarına ayrıca özel görev verilebilir. (Bu görevleri ilerleyen konularda göreceğiz.)
Bu kullanımda TRISA ve TRISB registerlerinin ayarlanması gerekmektedir. Bu konuyu ileride port yapıları bahsinde tekrar inceleyeceğiz. Sistemin çalışmaya başlaması için altta görülen besleme ve MCLR uçlarına uygun sinyallerin gelmesi gerekmektedir. Burada uygun değerler varken bunların bağlı olduğu timer, osilatör ve reset sistemi gerekli hizmeti vermeye başlar ve program counter program hafızasının başlangıç adresini gösterir. Böylece ilk adresteki komut (Burası mutlaka “KOMUT” içermek zorundadır) intruction registere (Komut registeri : Bir komut işlemci tarafından işlenirken komut bilgisini üzerinde tutan registerdir.) aktarılır. Instruction decoder ve kontrol sistemi, instruction registerdeki komutu çözümler ve bu komutun icra edilmesi için gerekli kontrol sinyallerini sırasıyla üretmeye başlar. Bu arada program counter, bu kontrol sinyallerinden bir tanesiyle bir sayı artar. Eğer komut alt program içeriyorsa 8 seviyeli stack, o andaki program counterdeki adresi tutma görevini yapar böylece pc artık yeni bir adrese atlayabilir. Eğer bir aritmetik ya da lojik işlem yapılacaksa, işleme girecek datalardan birisi dahili data bus üzerinden ve mux üzerinden ALU’ya ulaşır. Diğer data ise, W üzerinde tutulur ve gerekli işlem yapıldıktan sonra sonuç yine W registerine aktarılır. İşlem sonucu ile ilgili bayrak işaretleri ise status registere alınır. Eğer, yapılan işlem file registere yazma ya da okuma komutları içeriyorsa fsr (File status register: Dolaylı yada direkt adresleme işlemlerini ayarlayan registerdir.) registerininde katkısıyla uygun adrese ulaşma işlemi sağlanır ve kontrol kısmından gelen sinyalle register yazma yada okunma konumuna alınır. Bu arada eğer yazma işlemi yapılacaksa, data bus üzerinde olan bilgi bu register tarafından algılanarak bilgi registere yazılmış olur. Eğer, ilgili registerin okunması söz konusu ise adres ve kontrol bilgileri registere ulaştıktan sonra registerin içeriği data busa aktarılır.
3. 3. 3. I/O PortlarI
PIC16F84 mikrodenetleyicisinin 13 adet giriş ve çıkış portu vardır. Bunlardan 5 tanesi A portu (RA0-RA4) 8 tanesi B portu (RB0-RB7)’dur. 13 portun her biri giriş veye çıkış olarak kullanılabilir.
3. 3. 4. Program Belleği
PIC16F84’ün 1 Kbyte’lık program belleği vardır. Her bir bellek hücresi 14 bit uzunluğundadır. Program belleği elektriksel olarak yazılıp silinebilir ama program çalışırken sadece okunabilir. Çalışması istenen program bu bellek içerisine yüklenir. Program belleği 0X000 ile 0x3FF adreslerini kapsar.
3. 3. 5. Ram Belleği
PIC16F84’ün 0x00~0X4F adres aralığında ayrılmış olan RAM belleği vardır. Bu bellek içerisindeki dosya kümesi (file registerler) içerisine yerleştirilen veriler PIC işlemcisinin çalışmasını yönlendirir. File registerlerin bellek uzunluğu 8 bittir. File register adı verilen özel bellek alanlarının dışında kalan diğer bellek alanları program içerisindeki değişkenler için kullanılır.