18 Mart 2009 Çarşamba

PIC Programlamaya Nasıl Başlamalı?




Merhaba Arkadaşlar,
Bu yazımızda PIC programlamaya başlamak isteyen arkadaşlara yardımcı olmaya çalışacağız. Öncelikle PIC nedir onla girelim. PIC Microchip firmasının üretimi olan mikrodenetleyicilerin model ismidir. PIC 18F2550, 18F4550, 16F877, PIC 16F84, PIC 16F628A gibi, bunlar birer entegre ismi. Microchip firmasının PIC mikrodenetleyicileri o kadar yaygın kullanılıyor ki peçete yerine selpak ifadesinin kullanılması gibi PIC denilince akla mikrodenetleyici geliyor. Neden yaygın kullanılıyor derseniz kolay bulunması ve internette ilgili döküman ve projelerin çok olması hemen söyleyebileceğimiz iki sebep . PIC haricinde piyasada farklı yeteneklere sahip mikrodenetleyiciler bulunabilir. Projeye, fiyatlara göre uygun mikrodenetleyici seçimi yapmak gerekir. Mikrodenetleyici seçiminde geliştirme araçlarının lisans ücretleri de dikkat edilmesi gereken bir durum. Benim görebildiğim kadarıyla PIC ile uygulama geliştirme biraz pahallı, örneğin ATMEL gibi mikrodenetleyicilerin gelişmiş ve ücretsiz derleyicileri bulunurken PIC için mevcut gelimiş derleyicilerin bırakın ücretsiz olmasını lisans ücretleri oldukça yüksek. Şu sıralar ben de geç de olsa geliştirme araçlarının ücretsiz olanlarına doğru kaymaya çalışıyorum. Ayrıca kullanmak istediğiniz PIC modeline muadil diğer firmaların daha düşük fiyatlı mikrodenetleyicileri piyasada bulunabiliyor.
Programlama cihazlarının ucuzluğu veya kolay yapılabilmesi de dikkat edilmesi gereken başka bir durum, özetle PIC ile uygulama geliştirelim ama diğer mikrodenetleyicileri de bir kenara bırakmayalım.

PIC le neler yapabiliriz?
Bu soruya tam bir cevap vermek veya PIC le yapılabilecek uygulamalara bir sınır koymak oldukça zor, elektronik tecrübeniz arttıkça verebileceğiniz cevaplar da artacaktır. Ancak basitçe; mikrodenetleyiciler bizim için karar verirler, ne zaman ne yapması gerektiğini program aracılığıyla söylersiniz ve PIC bunu sizin için yapar. Örn: PIC e ne zaman hangi ledleri yakacağını söylerseniz led panelde kayan yazı yapabilirsiniz veya tuş takımından girilen şifrenin doğruluk kontrolünü yapmasını isterseniz röle yardımıyla şifreli kapı yapabilirsiniz... Çok basit kalan, belki de komik duran iki örnek :)

Genel olarak PIC li bir sistem ne yapar?
Her şeyden önce PIC li bir sistem bir bilgisayar sistemidir, programcı tarafından yapacağı uygulamaya uygun olarak geliştirilmiş ve PIC in içine yüklenmiş bir yazılım vardır ve bu yazılım icra edilir. İçinde yazılımı olmayan bir PIC hiç bir işe yaramaz, açılmayan bir bilgisayar gibi. PIC in çalışması için yazılımın haricinde gereken 2 temel donanım şartı vardır, besleme gerilimi ve osilatör. Aslında saydığımız bu üç unsur (yazılım, besleme, osilatör) tüm bilgisayar sistemlerinin olmazsa olmazıdır.

PIC programlamaya hangi model PIC le başlayalım?
Yeni başlayacak arkadaşlar için en uygun modelin 16F628 veya 16F628A( 16F628A nın resmi için buraya tıklayınız) olduğunu düşünüyorum. Bu model PIC lerde dahili osilatör olduğu için harici osilatör bağlamak durumunda kalmayacaksınız. Bu durumda mikrodenetleyicimizi çalıştırmak için sadece VDD ucuna +5V ve VSS ucunu toprağa bağlamamız yeterli olacaktır. Yani besleme gerilimini vererek ve dahili osilatörü kullanarak bu PIC i çalıştırabiliriz.

-Harici osilatör bağlamadık, peki dahili osilatörü nasıl aktif edeceğiz? Bunu PIC nerden bilecek?
--Yazdığınız programda ilgili konfigürasyonu aktif hale getirerek PIC e dahili osilatör kullanmak istediğimizi söylüyoruz. Bu ve benzeri konfigürasyonlar program içerisinde yapılacağı gibi yazdığınız kodun PIC e aktarılmasını sağlayan yazılım aracılığıyla da yapılabilir ama birinci yöntem daha güvenlidir.

PIC 16F628 modelinde toplam 18 adet pin bulunur, bunlardan 16 tanesi giriş-çıkış pini olarak kullanılabilir kalan 2 pin ise PIC in çalıştırılmasıyla ilgilidir(Besleme pinleri). Bu 16 giriş-çıkış pinimizden 8 tanesi A portuna 8 tanesi de B portuna ait pinlerdir. Hangi pin nerdedir(kaçıncı bacak), ne işe yarar gibi soruların cevabını PIC i üreten firmanın hazırladığı katalogdan(datasheet) öğreniyoruz, katalog uzun uzadıya anlatıyor her şeyi, güzel de anlatıyor ama biz yeni başlarken pin diagramlarının olduğu sadece ilk sayfaları kullanacağız. Hatta bu pin diagramını bir defalığına yazdırıp masanızın karşısına asarsanız rahat edersiniz. Örn pin diagramı. Kataloga ulaşmanın en kolay yolu, google>16F628A yazıp "enter"lamak. Ya da burdan direkt ulaşabilirsiniz.

-Girişi-çıkış pinleriyle ne yapacağız?
--Led yakalım mesela, yanıp sönen led yapalım, bir pini giriş olarak kullanıp düğmeye basıldı mı basılmadı mı anlayıp çıkış yaptığımız başka bir pindeki ledi yakalım... fena mı? Sadece led mi yakacağız.. hayır tabii ki, yukarıda da söylediğim gibi uygulama dünyası çok geniş. Üstelik her pin aynı değil, bazı pinler daha yetenekli... Olaylarla tanıştıkça bana hak vereceksiniz :) İlk uygulama olarak led yakmak ideal, alışveriş listenize kablo, led, direnç, deney tablası, pil ve regülatör gibi malzemeleri eklemeyi unutmayın böylece PIC i programladıktan sonra deneme yapabileceğiniz bir devre kurabilirsiniz.

(bu arada mikrodenetleyici = mikroişlemci + bellek + giriş-çıkış vs çevresel birimler olduğunu bildireyim)

Fiilen PIC programlamaya başlamak için gereken asgari gereçler;
Donanım Olarak;
1) Herhangi bir model PIC Mikrodenetleyicisi
2) PIC Programlama Cihazı (PIC Programlama Devresi=PIC Programlayıcı)
3) Bilgisayar
Yazılım olarak;
4) Derleyici (Seçtiğiniz programlama diline bağlı olarak size bir derleyici(compiler) gerekir)
5) Programlayıcıyla irtibatı kuracak olan(çoğunlukla programlayıcıyla birlikte verilir) yani yazdığınız kodu entegrenize yüklemenizi sağlayan yazılım.

Burda PIC Programlayıcı maddesinden biraz bahsetmek istiyorum:
Seriportu olan bilgisayalar için -ki artık seri port günümüz masaüstü bilgisayarlarında bile pek olmuyor- PIC programlayıcı yapmak oldukça kolay veya 10 TL civarı bir fiyat karşılığında satın alınabilir. Ancak eğer bilgisayarınızda seri portunuz yoksa size bir USB PIC programlayıcı gerekir ki fiyatları 45-80 TL arasında değişen farklı modeller piyasada mevcut. Ben şimdiye kadar K128 model USB programlayıcı kullandım fiyatı bir zamanlar 70 TL idi, sonra 45 TL ye clone PIC KIT2 aldım, ikisinden de memnunum. Siz de kendinize uygun gelen bir USB PIC programlayıcı alarak bu işe başlayabilirsiniz. PIC programlamaya başlarken yaptığım en büyük harcamam bir programlayıcı almak olmuştu.

Şimdi internette pek sık duyduğumuz bazı isimleri bu kategorilere koyalım (terimlerden kafası karışan arkadaşlar için),
ICPROG: 5. maddemizle ilgili; yazdığımız kodların PIC e yükleme amaçlı kullanabileceğimiz aracı yazılımlardan bir tanesidir. PIC programlayıcınızla beraber verilen yazılımı kullanmanız önerilir.

PicBasic: 4. maddemizle ilgili, PIC programlama yapabilmek için alternatif programlama dillerinden bir tanesi, bu dille programlamak istiyorsanız PicBasic derleyicisine ihtiyacınız var demektir.

Pic C: Yine 4. maddemizle ilgili, PIC C de pic programlamada kullanılabilecek alternatif dillerden birisidir. Aslında kendisi bir dil değil kategoridir, PIC C denilince çeşitli firmalar tarafından geliştirilmiş CCS C, HI-TECH C veya Micro C gibi PIC programlama yapmamızı sağlayan ek kodlar barındıran C dilleri kast edilir. Geçtiğimiz haftalarda(Mart 09) microchip HI-TECH firmasını satın aldığını duyurdu, bu da tabii HI-TECH C yi rakip PIC C lere göre öne çıkardı. HI-TECH C nin ücretsiz versiyonu(lite) ve kısıtlamalarla ilgili sayfaya buradan gidebilirsiniz.

- C dilini (veya Visual Basic) biliyorum, pic programlamada nasıl yardımı olabilir?
--PIC programlama için kullanılan PIC C, PIC Basic gibi dillerde standart C ve Visaul Basic gibi dillerde kullandığınız komutlar kullanılır ama ek olarak PIC donanımıyla alakalı bazı komutlar da vardır. Standart dilleri kullanmış biri olarak sadece bazı yeni fonksiyonları ve biraz PIC konfigürasyon ayarları hakkında bilgi edinerek kullandığınız standart dilin PIC versiyonunda uygulama geliştirmeye başlayabilirsiniz.


Pic Assembly: Her mikrodenetleyicinin bir yazılım dili olmak zorundadır, yoksa mikrodenetleyici çalışmayan bilgisayar gibi olur. Microchip de PIC leri üretirken yazılım dili olarak PIC assembly yi üretmiştir. PIC in anadilidir, mikrodenetleyici ve kendisine has asm dili birbirine girmiş iki unsurdur. Aslına bakarsanız assembly haricindeki tüm PIC dilleri bazı yazılım şirketlerinin asm ile program yazım zorluğunu ortadan kaldırma amaçlı alternatifler olarak geliştirilmiştir. Assembly dili bize diğer dillerle karşılaştırılamayacak kadar geniş bir yetki sağlar. Çünkü sistemin kendi dilini kullanıyoruz, C veya Basic gibi bir tercüman kullanmıyoruz. Assembly kullanmanın sağladığı geniş yetkilerin yanında dezavantajları da vardır. En büyük dezavantajı: çok temel komutları kullandığınız için program geliştirme süreci yavaş işler.
Örnek vermezsem olmaz(!) Bir binayı prefabrik gibi hızlıca yapmak var tuğla tuğla yapmak var; yavaş gelişim... buna karşın duvarda bir sorun olunca ne oluyor bu duvara demek var, sorun şu tuğlada olabilir demek var; sisteme hakimiyet... Umarım anlatabilmişimdir.
Assembly programcıları da çeşitli imkanları kullanarak nispeten hızlanabilirler(makro veya altprogramcıkları saklayarak) ancak olayın genel görüntüsü bu şekildedir.

Hangi dili seçelim derseniz(yani bana sorarsanız)? Ben CCS C ile başladım, epeyce uygulama geliştirdikten sonra Assembly öğrenmeye başladım ve bir çok şeyi Assembly ile daha iyi öğrendim. Ben hemen bir şeyler yapmak istiyorum derseniz C, basic gibi yüksek seviyeli dillerden başlayabilirsiniz. Derinlemesine öğreneyim sonra uygulama geliştiririm diyorsanız-ki biraz sabır istiyor- assembly derim.

CCS C nin 30 günlük deneme sürümünü bu bağlantıyı takip ederek temin edebilirsiniz.

Pic Assembler: Pic assembly kodlarını makine koduna(hex) çeviren yazılım, compiler gibi. Compiler ve assembler in amacı aynıdır(makine kodu) ama "input" dosyaları farklıdır. Microchip'in sitesinden mpasm adında sadece assembler indirebileceğiniz gibi güçlü bir hata ayıklama yeteneğine sahip ve ücretsiz olan MPLAB yazılım geliştirme aracını da indirebilirsiniz. MPLAB en yalın haliyle asm yazımı-derlenmesi ve hata ayıklama içindir ancak farklı derleyiciler kurduğunuz taktirde (PIC C gibi mesela) bu derleyicilerle uyumlu olarak çalışabilir, hata ayıklama özelliğini kullanabilirsiniz.

Yukarıda saydığımız 5 şarta sahip olduğunuzda PIC programlamak için yapmanız gerekenler sırasıyla şöyle olacaktır.
1)
Bilgisayarımızı açar, PIC C Derleyicimizi çalıştırırız(PIC C dillerinden birini kullandığımızı varsayalım). Yapmak istediğimiz uygulamaya ve mikrodenetleyicimize göre kodumuzu yazarız.

2) Kodu derleyip, hex dosyası oluşturduktan sonra hex dosyasını PIC e yükleyecek olan ve yukarıda da aracı yazılım olarak bahsettiğimiz yazılımı çalıştırırız.

3) Mikrodenetleyicimizi PIC Programlayıcıya yerleştirdiysek yazdığımız kodun hex uzantılı dosyasını bu yazılım aracılığıyla PIC imize yükleyebiliriz ve artık PIC i programlayıcıdan söküp devremizde kullanabiliriz. Bu 3 adımda bilgisayarla ilgili olan kısmı geride bırakmış oluyoruz. Artık PIC i devremizde çalıştırabiliriz.

Ancak tüm bunları sağlamak ve hatasız uygulamalar geliştirmek yeni başlayan arkadaşlar için epeyce zor olacaktır. Bu yüzden en uygun başlama yönteminin simülasyon programlarıyla olduğunu düşünüyorum. Simülasyon programı kullandığımız durumda yukarıdaki listenin donanım bölümündeki 1)”Herhangi bir model PIC Mikrodenetleyicisi”
2)”PIC Programlayıcı” maddelerinden kurtuluyoruz ve daha da önemlisi yanlış bağlantılarla yanabilecek donanım veya çalışmayı önleyebilecek donanım hatalarından kurtuluyoruz.

Yazılım çevresinde elektronik simülasyonu yapan bir çok program var ancak PIC simülasyonu yapabilen pek yok. PIC simülasyonu yapan ve benim de kullandığım PROTEUS adında gayet güzel bir simülasyon programı var. Bu programın demo versiyonu işimizi görecektir, firma: labcenter. (PIC simülasyonunu mümkün kılan programların özelliği yazdığınız kodları bu programlar sayesinde bilgisayar ortamında PIC e yükleme ve çalıştırma imkanı vermesidir. )
Bu işlemleri fiilen yapmak istediğimizde 1. PIC i programlamak için bir takım işlemler 2. çalıştırmak için birtakım işlemler yapmak durumundasınız, ancak simülasyon programları sayesinde programlamak için PIC inize sağ tıklayıp derleme sonucu oluşan hex dosyasını kaynak olarak göstermek, çalıştırmak için de simülasyon programınızın çalıştır düğmesine basmak yeterli olacaktır.

PIC programlamak için gereken asgari gereçlerin yeni bir listesini yapmamız gerekirse;
1) Yazacağınız kodları derleyip, hex dosyasına çevirecek derleyici. (Seçeceğiniz dile göre değişir, PIC C Dili, PIC Basic dilleri için derleyiciler internette mevcut)
2) Proteus Simülasyon Programı
olacaktır.

Bu şekilde PIC programlama dünyasına hızlı giriş yapabilirsiniz, bu işlemlere illa da fiilen başlamak istiyorsanız bir kaç denemeden sonra yine simülasyon ortamına döneceksiniz çünkü yazdığınız kodları gerçek bir PIC de denemeniz için gereken işlemler sürekli yapıldığında çok can sıkıcı olur, genelde kodumuzdan emin olduğumuzda son işlem olarak gerçek PIC e yükleme yaparız, ha bir aksilik olursa en fazla bir kaç defa değiştirip yükleriz. Kod geliştirme işlemini simülasyon üzerinden ilerletiyoruz son aşamada gerçek bir PIC e yüklüyoruz (hazır olduğunu düşündüğümüzde), bu her seviyeden PIC programcısı için böyledir.

NOTLAR:
CCS C ile kodlanmış ve Proteus ile simülasyon yapılmış örnek yanıp sönen led uygulamasının dosyaları için buraya tıklayınız.
Bu devrenin proteustaki görüntüsü:





Gerçekteki görüntüsü(gerçekte 5V luk gerilimi 7805 regülatör yardımıyla elde ediyoruz, proteus simülasyonda 5V bağlanmasına gerek olmadığından yukarıdaki şemada bu eleman gösterilmedi):




Regülatör kısmında kafası karışan arkadaşlar için:

Kaynağı bağladıktan sonra çıkış 5V mu değil mi diye voltmetrenizle kontrol etmeyi unutmayınız.

Proteusta yapılmış "Yanıp Sönen Led" uygulamasını izlemek için tıklayınız (Dil olarak CCS C seçildi ve dolayısıyla CCS C Compiler kullanıldı).

Programla ilgili partik bilgilere ve dosyalara picproje.org forumlarından ulaşabilirsiniz.
http://www.picproje.org/main/modules.php?name=Forums&file=viewforum&f=44

Arkadaşlar şimdilik bu kadar, yeni başlayacak arkadaşlara yardımcı olmaya çalıştım, umarım faydalı olmuştur. İyi çalışmalar dilerim.
"

Benzer Konular



0 yorum:

Yorum Gönder

Followers

 

elektrik & elektronik. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com