İçindekiler
1. Giriş...........................................................................4
2. Jenerik Alanlar...........................................................5
A. Jenerik Şemsiye Alanlarda Durum.................................7
B. Mekatronik ve Jenerik Alanlar Yol Haritası.......................14
3. Robotik ve Otomasyon Teknolojileri...........................18
3.1. Amaç............................................................18
3.2. Robotik Alanının Tanımı.......................................18
3.3. Türkiye İçin Önemi............................................18
3.4. Kazanılması Gereken Yetkinlikler...........................19
3.5. Yetkinliğin Türkiye’ye Getirileri............................194
MEMS, NEMS ve Duyargalar...........................................21

Read more text
Dökümanlar
PIC Donanım ve Yazılım Tasarımı ( Ders ) PDF Yazdır ePosta
Zafer Erim tarafından yazıldı   
Çarşamba, 11 Ekim 2006 06:22

1. Ders PIC DONANIM VE YAZILIM TASARIMI

1.1. GİRİŞ

PIC’ ler RAM, EPROM, EEPROM, PIA gibi mikroişlemci sistemlerinde bulunması gereken temel elemanları tek bir çatı altında toplayan entegrelerdir. Bütün bu elemanların tek bir entegre altında toplanması ile mikroişlemci tabanlı sistemli tabanların boyutları küçülmüş, sistem maliyetlerinde kayda değer bir azalma sağlanmış ve en önemlisi bu tip sistemlerin tasarlanması daha kolay bir hale getirilmiştir. CPU, RAM, EPROM, PIA elemanlarının birbirleri arasındaki bağlantıyı sağlayacak adres Bus, Data Bus ve Kontrol Bus sistem kartı üzerinde bulunmayacaktır. Çünkü bunların tamamı PIC üretici firma tarafından PIC entegresinin içine yerleştirilmiştir. Yukarıda sayılan önemli özelliklerinden dolayı PIC entegreleri son zamanlarda oldukça revaçta olan elektronik elemanlardır.
Bu bölümde anlatılacak olan MICROCHIP firmasına ait olan 16FXX serisi PIC’ ler şu özelliklere sahiptirler. PIC içinde yapılan programı işleyen işlemci RISC mimarisine benzer bir mimari ile donatılmıştır.
RISC mimarisi mikroişlemci tasarımında kullanılan ve temelde iki kısma ayrılan
mimari tipinden biridir. Bunlar RISC ve CISC mimarileridir. RISC mimarisinde
mikroişlemci komut seti üzerinde bulunan komutların sayısı azalmakta ve bu komutların
hepsi tek bir saat darbesinde ( CYCLE ) tamamlanması sağlanmıştır.(Dallanma
komutları hariç, bu komutlar iki saat darbesinde tanımlanabilmektedir.) Açıktır ki komut
sayısının azalması ile mikroişlemcinin işlem kabiliyetinde bir azalma meydana gelecektir.
Bu sorun, temel işlemlerin tek bir komut ile halledilmesi yerine bazı komutların ardışık
olarak kullanılması ile giderilmektedir. Komut setinin daraltılması ile öğretilecek komut
sayısı azalırken mikroişlemcinin programlanması biraz daha zor hale gelmektedir. Ancak
deneyimli bir programcı için RISC mimarisine sahip mikroişlemcinin programlanması
hiçbir sorun oluşturmayacaktır.

1.2. PIC’İN GENEL ÖZELLİKLERİ

Programlama sırasında yazdığımız komutların her biri PIC üzerinde 14 bitlik bir yer kaplamaktadır. Bu 14 bitin ilk 6 biti komutu tanıtmakta geri kalan 8 bit ise kullanılan veriyi taşımaktadır. Komut taşınan kısım 6 bit olduğundan PIC’ de en fazla 64 komut bulunacağı açıktır. Örneğin 16F877 PIC entegresinde 35 adet komut bulunmaktadır.

Bu entegre 20 MHz saat frekansında çalışmakta ve her bir komutu 200 ns gibi kısa bir sürede işleyebilmektedir. Üzerinde 4K EPROM program belleğine, 35 adet özel donanım register’i, 192 adet genel amaçlı registerine sahiptir. Bu entegreler teorik olarak 1.000.000.defa programlanabilmekte ve üzerinde bulunan programlan 40 yıldan daha fazla bir süre kayıpsız olarak saklayabilmektedirler. PlC’ lerin diğer mikroişlemcilere olan bir diğer üstünlükleri de entegre programlanırken entegre üzerine bir koruma kilidi konulabilme özelliğidir. (CODE PROTECTION). Bu sayede tasarlanan devre bir başka kişi tarafından öyle basit bir şekilde taklit edilemeyecektir. Belki devre aynen taklit edilecek ancak PIC içinde program kopyalanamayacağından taklit edilen devre çalışmayacaktır. Burada şu uyarıyı yapmakta fayda var. Biz kendi programımızı denerken PIC PROGRAMLAYICI da CP (CODE PROTECTION) özelliğini kapalı tutmalıyız Aksi takdirde programladığımız PIC istediğimiz biçimde çalışmaz ise PIC’i atmak zorunda kalabiliriz.

1.3. PIC NE KADAR GÜÇ HARCIYOR?

PlC’ler yapılarının CMOS olmasından dolayı oldukça az güç harcamaktadırlar. Uygulamalarda kullanılan voltaj aralığı 2-6 Volt arasında değişmektedir. Kendi güçlerinin küçük olmasına karşın PlC'ler direkt LED sürme kabiliyetine sahiptir. Entegre bacaklarından dışarı akım verilerek LED sürülecek olursa çekilen akım 20 mA iken, entegre bacakları toprağa çekilerek LED sürülürse çekilen akım 25mA olacaktır.

1.4. PIC KOMUT YAPISI

PIC programlamasında kullanılan komutların isimleri ve özellikleri aşağıda anlatılmıştır. Üretici firma tarafından komutlara verilen isimlerde bazı harfler özel anlamlar taşımaktadırlar. Bu harflerin anlamlarının bilinmesi ve basit birkaç İngilizce terimin öğrenilmesi ile bu komutlar kolayca akılda tutabilirler.

Komutlarda geçen harfler ve anlamları:

W=W registeri (akümülatör registeri)
F= Herhangi bir register
L= Literal (sabit)


Şimdi birkaç örnek üzerinde bu harflerin komutlarındaki kullanılışını inceleyelim.

• MOVLW 0x50

W registerine 0x50 sayısını yaz. Bu komutta büyük ve kalın harflerle yazılan kısmın anlamı şöyle açıklanabilir. Önce komutun çekirdeğine bakılır. Komut MOV, yani taşıma işlemi içermektedir. Önce L harfi geldiğine göre taşınacak kısım bir sabittir. Daha sonra W geldiğine göre taşınacak yer W registeridir. Böylece komut genel açıklaması şöyle yapılır. Komutun yanında verilen sabit sayı W registerine konulacaktır.

• MOVWF toplam

Komut çekirdeği yine MOV’dur. Yani bir değer atama işlemi yapılacaktır. Komutta bulunan diğer harflere bakılınca önce W daha sonra F harfleri görülür. Bunun anlamı şudur: W registerinin içeriğini yanda belirtilen registere (toplam ) koy. W F= Toplam

• CLRF toplam

Komut çekirdeği bir CLR yani silme işlemi içermektedir. Komut devamında bir F harfi görülmektedir. Bunun anlamı yanında belirtilen registerin (toplam registeri ) içeriğini sil.

• SUBLW 0x05

Komut çekirdeği SUB yani bir çıkartma işlemi içermektedir. Diğer harfler sırasıyla L ve W dir. Komut açıklaması şöyle yapılır. Komut yanında belirtilen sayıdan (L harfi önce yazılmıştır) W registerini çıkart.

1.5. PIC PROGRAMLAMADA KAYNAK KODUN YAPISI

PIC programlamada kaynak kod yazılırken derleyicinin bize sunduğu bazı kolaylıklardan faydalanabiliriz. PIC’in sahip olduğu özel donanım registerleri ile genel amaçlı registerler normalde registerin adresini gösteren bir sayı ile belirlenirler. (W akümülatörü hariç).
Kodun içerisinde bir sürü karışık sayı yazmak yerine bu registerlere birer sembol isim verilerek kod içinde bu isimler kullanılabilir. Gerçekte derleme işlemi esnasında tanımladığım sembol isimler yerine gerçek sayısal değerler konmakta ve böylece *.HEX kodu üretilmektedir. Yazılan *.ASM kaynak dosyasında ise bizim tanımladığımız sembol isimler görülmektedir.
Sembol isimler kullanarak program daha anlamlı ve daha anlaşılıır bir hale gelmektedir.


1.6. SEMBOL İSİMLER NASIL TANIMLANIR?

Sembol isimler program yazımı sırasında “EQU” deyimi ile tanımlanmaktadır. Örneğin 16F877 PIC entegresinde flagların bulunduğu özel amaçlı donanım registeri PIC’ in 3 no’lu adresinde bulunmaktadır. Flagların bulunduğu registeri her kullanışımızda bu 3 değerini kullanmak zorundayız. Bütün bu register numaralarını ezberlemek yerine equ deyimi ile bu registere bir isim verilebilir. Bunu bu şekilde yapabiliriz.

STATUS EQU 0x03

Bundan sonraki program kısmında bu flagları kontrol etmek için yalnızca status ismini verdiğimiz registeri kontrol ederiz.

Örnek :

Program sayıcı registerini PCL olarak isimlendirelim.

PCL EQU 0x02

Yazılan bu equ deyimleri alt alta yazılarak bütün genel ve özel amaçlı registerler tanımlanırlar.

Tablo 4.1 de görülmektedir.

Tablo 4.1 Özel registerlerin PIC’e tanıtılması

PCL EQU 0x02
STATUS EQU 0x03
PORTA EQU 0x05
PORTB EQU 0x06
TRISA EQU 0x85
TRISB EQU 0x86

Bu şekilde registerler isimlendirilerek program daha akılcı bir hale getirilebilir.
NOT: EQU deyimi ile tanımlanmış bir register isminde büyük ve küçük harfler nasıl tanımlanmış ise tüm program boyunca aynı şekilde kullanılmalıdır.

Örnek :

TOPLAM equ 0x20 yazarak bir registeri tanımlayalım. Program sırasında bu tanımlanan registeri “toplam” şeklinde kullanamayız. Çünkü tanımlama sırasında büyük harfler ile tanımlama yapılmışken kod içinde küçük harfler ile “toplam” registerini kullanamayız.

Tablo 4.2’ de kısaca açıklanan donanım registerlerinin isimleri istenirse programcı tarafından başka isimler altında da kullanılabilir. Ancak bundan sonraki kısımlarda bu özel amaçlı donanım registerleri yukarıda tanımlandığı gibi (orijinal isimleri ile ) kullanılacaktır.

Tabloya dikkat edilirse bazı registerlerin tekrarlanmış olduğu görülmektedir. Bu ikincil registerlerin adreslerine bakılırsa bunların yüksek değerli oldukları görülür. PIC registerlerinin adreslerini iki sayfa halinde tutmaktadır. Bunlar sayfa 0 sayfa l şeklinde tanımlanmaktadır. Sayfa 0’ da bulunan registerlerin adresleri 0x80 değerinde daha düşüktür. Sayfa l’de bulunan registerlerin adresleri 0x80 ve daha üzeri olmaktadır.(Sayfa=Bank)

TABLO 4.2. Bazı PIC Hardware (SFR) Registerleri

TMR0 0x01 PIC zamanlayıcı interrupt registeri
PCL 0x02 Program sayıcı registeri
STATUS 0x03 Program durum registeri (flag registeri)
FSR 0x04
PORTA 0x05 PortA
PORTB 0x06 PortB
PORTC 0x07 PortC
PORTD 0x08 PortD
PORTE 0x09 PortE
PCLATH 0x0A
INTCON 0x0B İnterrupt Kontrol Registeri
OPTION 0x81
PCL 0x82 Program sayıcı
STATUS 0x83 Durum registeri
FSR 0x84
TRISA 0x85 PortA bitlerini giriş - çıkış tanımlama registeri
TRISB 0x86 PortB bitlerini giriş - çıkış tanımlama registeri
TRISC 0x87 PortC bitlerini giriş - çıkış tanımlama registeri
TRISD 0x88 PortD bitlerini giriş - çıkış tanımlama registeri
TRISE 0x89 PortE bitlerini giriş - çıkış tanımlama registeri
PCLATH 0x8A
INTCON 0x8B İnterrupt Kontrol Registeri
EEDATA 1x0C EEPROM’a yazılacak bilginin konulacağı register
EEADR 1x0D EEDATA’nın yazılacağı yeri tanımlayan register
EECON1 0x8C EEPROM Kontrol registeri
EECON2 0x8D EEPROM Kontrol registeri

1.7. REGİSTER İŞLEMLERİNDE SAYFA DEĞİŞİMİ

Programlama esnasında genel olarak sayfa 0’da bulunan registerler kullanılmaktadır. Ancak sayfa l’de bulunan registerlere erişim istendiğinde önce PIC içindeki aktif sayfayı değiştirmek gerekmektedir. 16F877 entegresi için bu işlem sadece STATUS registerinin 5. bitini set etmek yeterlidir. Bu bit set edilerek sayfa l’e geçilir. Sayfa l registerleri ile işimiz bittiğinde STATUS registerinin 5. bitini reset ederek yeniden sayfa 0’a dönebiliriz. Şimdi bunu bir örnek üzerinde inceleyelim.
Örnekte A portunu giriş olarak tanımlayan bir program parçası vardır. A portunun bitlerini tek tek bit bazında Giriş ya da Çıkış olarak tanımlayabiliriz. Bunun için sayfa l’de bulunan TRISA registeri kullanılmaktadır.

BSF STATUS,5 STATUS’un 5. bitini set et yani sayfal’e geç
CLRF TRISA A portunun bütün bitlerini giriş yap
BCF STATUS,5 STATUS’ un 5. bitini reset et yani sayfa 0’ a dön.

 

NOT : Alıntıdır



Comments
Add New Search RSS
Anonymous (212.175.112.xxx) 2008-05-29 02:02:49


16f877a
ozkan (88.231.228.xxx) 2008-06-07 10:30:21

tamam güzelde bu komutlar tam değil
bana tamamını gönderebilir misin?
-
zafer (88.245.13.xxx) 2008-06-07 12:20:19

Dökümanda temel komutlar yer alıyor arkadaşım ilerleyen zamanlarda kurs
dökümanlarımıda yayınlıcam ama serverda problemler. En yakın sürede
döküman eklemeye devam edeceğim
Write comment
Name:
Email:
 
Title:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
Please input the anti-spam code that you can read in the image.

3.23 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

Son Güncelleme ( Pazar, 27 Nisan 2008 00:14 )