PIC Programlamaya yeni başlıyorum yol gösterebilir misiniz?

Başlatan Kaya Onur, 27 Ocak 2011, 20:42:21

Kaya Onur

Selam arkadaşlar,
Başka bir forumdan bir arkadaşın tavsiyesi ile Erol Bey'in PIC programlama derslerine başladım.
Bu aslında Uzun bir zamandır ilgilenmek istediğim bir konuydu fakat doğru kaynağı bulamama endişesi ile hep rafa kalktı...

Artık bu forumu da görünce "Başliyim bir şu işe" dedim sonunda :)
Programlama ile ilgili profesyonel olarak çalışmışlığım var fakat PIC ve dijital elektronik konusunda çok yeni ve bilgisizim. Bildiklerim de genelde kulaktan dolma bilgiler.

Bir süre dolaştım forumda ama sorularıma yanıt bulmakta biraz zorlanıyorum. Sanırım sizin yol göstermenize ihtiyacım var.

Anladığım kadarı ile herşeyden önce bir programlama kartına ve bir derleyiciye ihtiyacım var. Programlama kartı olarak Karaköy'de Bio Pic adıyla satılan bir kart buldum. Bu kart işimi görür mü? İlerde daha vasıflı PIC'ler kullanmak istediğim zaman yeni bir kart almam gerekir mi? Bu kart beraberinde bir CD ile geliyor. Satıcı arkadaşımın söylediğine göre bir HEX (yanlış yazmış olabilirim) dosyam varsa bunu PIC içine yazabilirmişim. Fakat bu HEX dosyasını oluşturmak, kısacası PIC içinde çalışacak programı hazırlamak için gerekenler araçlar CD de yokmuş...

Derleyici için forumda Download kısmına baktım ama mesajlar içinde nereye bakmam gerektiğini kestiremedim. Assembly bilgim az. Erol Bey'in derslerini uygulayabilmek için BASIC kullanmayı düşünüyorum ama C ve Assembly derleyicileri de gösterebilir misiniz?

Başka nelere ihtiyacım var? (Sabır ve çalışma dışında)

Yanlışlarım varsa lütfen düzeltin.

Herkese tekrar selamlar.

prof_81

Öncelikle hangi dilde kod yazmanız gerektiğine karar vermeniz gerekir. Aynı anda bir çok dil ile uğraşmanız fikrimce kafanızı karıştıracaktır. Bu seçimi yaptıktan sonra derleyici kısmına geçmelisiniz.

Kaya Onur

Erol Bey'in derslerini uygulayabilmek için BASIC kullanmayı düşünüyorum. MPLAB programını buldum biraz önce BASIC dili için bu programı kullanabilir miyim?

kudretuzuner

Merhaba
"Programlama ile ilgili profesyonel olarak çalışmışlığım var fakat PIC ve dijital elektronik konusunda çok yeni ve bilgisizim."Bu cümleden yola çıkarak size sormak istediğim ilk soru hangi dilde profesyonel olarak yazıyorsunuz?olacak.Eğer VB.Net kullanıyorsanız Erol beyin PIC basıc dersleri size kısa zamanda çok yol kat ettirir.Ben de VB Net ile amatör olarak uğraşırken PIC'i tanımam bana ikinci bir uğraş alanı verdi.Ben de ilk başlayacağım zaman nereden ve nasıl diye çok araştırdım.Öğrendiğim ilk şey PIC ile profesyonelce uğraşacaksanız .asm dilini kavramanızı tavsiye edeceğim.Toplam 35 komut ve de nasıl kullanıldıklarını öğrenmeniz çok zor değil.Daha sonra İleri seviye çalışmaları PIC basıc ile tasarlayabilirsiniz.Özetle ilk olarak ileri versiyon bir proteus indirin.Bu size sanal ortamda çalışmanıza ve de yazacağınız programların çalışıp çalışmadığını gösterecektir.
Kaynak olarak aşağıdaki linklerden yararlanabilirsiniz.İlk başladığımda kaynak olarak tesadüfen bulduğum
Alfa yayınlarından NURSEL  AK hocanın Herkes için PIC Programlama adlı kitap bana .asm'nin mantığını kavrattı.
http://store.melabs.com/prod/software/PBP.html
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002
Amatör

Kaya Onur

Teşekkürler cevap için. C ağırlıklı çalıştım fakat hiçbir zaman C'nin o "şifreli" yazılımını (hayranlık uyandırsa da) sevemedim... Daha önceden kendi yazdığınız bir algoritmayı birkaç ay sonra gelip okuduğunuz zaman "Bu ne ya!" demek pek eğlenceli olmuyor. Neyse...

Verdiğiniz linklerin biri MPLAB. Bu IDE ile BASIC kullanamıyor muyuz? Erol Bey'in dersleri BASIC dilinde. Bunları derlemek içi kullanabileceğim program sadece PICBASIC PRO mudur? Fiyatı biraz ürküttü doğrusu.

Dil olarak seçiminiz Assembly sanırım. Siz hangi program kartını kullanıyorsunuz? Bio Pic'i duydunuz mu?

malpaslan1979

1-Pickit2 programlama cihazı işinizi fazlasıyla görecektir dostum. Sitemizde de yapabileceğiniz veya satınalabileceğiniz farklı varyasyonları var. ebayda araştırırsanız çok kaliteli klonları var
2-Değerli dostum pbp pic basic pro için microcode studio ide kullanılır.
3-pbp pic basic pronun ilaçlı kürekli sağlam farklı sürümlerini sitemizde yada örneğin sonsivri.com sitesinde bulabilirsiniz birçok amatörün sırf pic basic öğrenmek için lisanslı yazılım aldığını zannetmiyorum.
4-değerli dostum kitap alınız araştırınız. karşılaştığım kaba tabiriyle en dandik kitaplar bile sizin bu sorduğuz soruları en baştan cevaplamaya çalışıyorlar. örneğin altaş yayınlarının da bu konuda çok güzel bir picbasic kitabı var sizin cevabını aradığınız soruların yanıtlarını orada bulabilirsiniz.

eseneren

- Profosyonelce yazılmıs bir program okunabılırdır.
C nin okunabiliriligi o kadar sifreli degildir.

- Programmer olarak ben iki tane kullandım su an pickit2 kullanıyorum cok memnunum
ozellıkle devre uzerınde programlanmasına dıkkat et, diger turlu zif sokette programla cıkart tak sıkıntı ımıs.

Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

Kaya Onur

Alıntı yapılan: malpaslan1979 - 28 Ocak 2011, 03:34:02
1-Pickit2 programlama cihazı işinizi fazlasıyla görecektir dostum. Sitemizde de yapabileceğiniz veya satınalabileceğiniz farklı varyasyonları var. ebayda araştırırsanız çok kaliteli klonları var
2-Değerli dostum pbp pic basic pro için microcode studio ide kullanılır.
3-pbp pic basic pronun ilaçlı kürekli sağlam farklı sürümlerini sitemizde yada örneğin sonsivri.com sitesinde bulabilirsiniz birçok amatörün sırf pic basic öğrenmek için lisanslı yazılım aldığını zannetmiyorum.
4-değerli dostum kitap alınız araştırınız. karşılaştığım kaba tabiriyle en dandik kitaplar bile sizin bu sorduğuz soruları en baştan cevaplamaya çalışıyorlar. örneğin altaş yayınlarının da bu konuda çok güzel bir picbasic kitabı var sizin cevabını aradığınız soruların yanıtlarını orada bulabilirsiniz.

malpaslan1979 anlayacağım dilde cevap vermişsiniz. Teşekkür ederim.


@eseneren."Devre üzerinde programlanmasına dikkat et" ne demek anlayamadım. PIC'in çalışacağı devre üzerinden çıkartılmadan programlanabilmesini mi kastediyorsunuz? Bu durumda program kartı ile uygulama devresi arasında bir bağlantı olması gerekir değil mi? Nasıl oluyor bu?

prof_81

Basic dilini kullanacaksanız microcode studio+pbp programı ikilisini kullanabilirsiniz. Ayrıca proton basic de kullanabilirsin.

Microcode studio hakkında forumdaki link https://www.picproje.org/index.php?topic=47.0 buradan ayrıntılara ulaşabilirsin. Kolay gelsin.

ete

Kaya Onur,

Önce aramıza hoş geldin diyeyim. İşin başında olmandan dolayı bazı konularda bilgi vermeyi uygun gördüm.
Pic programlanabilen bir mikro denetleyici. Ham bir entegre anlayacağın. Onu isteğine uygun olarak programladığın zaman istediklerini kaabiliyeti doğrultusunda yapabilecek bir entegre. Programlama denilince akla bir sürü şey gelmekle birlikte Pic lerin ana dilleri ASM (Assembly dili) dir. ASM ile yazılan bir program derlenerek HEX formatına dönüştürülmekte olup pic in anladığı asıl format bu HEX formatıdır. Sonuçta yazılan program mutlaka Hex formatına dönüştürülüp Pic'e yazılmalıdır.
ASM nin anlaşılması ve yazılması zor olduğu için genellikle daha kolay anlaşılabilir yada kullanılabilir diller ASM yerine kullanılmaktadır. Bunlar Basic , C dili , Jal gibi dillerdir. Basic konusunda 2 ayrı hatta 3 ayrı derleyici güncel olarak kullanılmaktadır. Bunlardan birincisi Pic Basic Pro (Benim Dersleri hazırlarken esas aldığım derleyici) ikincisi Proton Basic ve bir başkası mesela Sword Fish olabilir.
PBP en yalın diğerlerine göre daha az özellikli bir dildir.  Ama isterseniz diğerlerinde yapılan işlerin tamamını sizde biraz zorlanarak yapabilirsiniz . Proton epeyce gelişmiş bir Basic derleyicisidir. Aslında PBP ile komutları bir birine çok yakındır ve Protonda Komut fazlalığı vardır.  Derslerden yola çıakrak bir şeyler öğrenmek istersen bence PBP ile başlayıp sonra gerekirse Proton'a geçiş yapabilirsin.
Basic dillerinin dışında C dilleri mevcut bunlarda bir kaç farklı dil şeklinde (CCS , H-Tech gibi) karşımıza çıkmaktadır.  C dili kaabiliyetlerinin çokluğu ile bilinirler. Ancak sizinde belirttiğiniz gibi belirli bir protokol çerçevesinde C dilinde program yazılabiliyor. Benzer nedenlerden dolayı bende süper olmasada bilmeme rağmen kullanmıyorum.  Mademki C diline aşinasınız biraz basic öğrendikten sonra istediğinzi zaman C dilinde de program yazabilirsiniz tabiiki isterseniz.

Gelelim işin yazma ve derleme kısmına. Basic dilinde program yazabilmeniz için bir editör programına ihtiyaç vardır. MCS (Micro Code Studio) adı ile bilinen bu editör programı ücretsiz olarak aşağıdaki linkten indirilebilir.
http://www.mecanique.co.uk/software/mcsinstall.exe
MCS yalnızca programı yazmanız için size yardımcı olur. İçinde basic ile ilgili help menüsüde mevcuttur.
Program genelde PBP yada BAS uzantısı ile kayıt edilir. Yazdığınız programların derlenip HEX formatına çevrilebilmesi için ayrıca bir de PBP derleyicisine ihtiyacınız vardır. Bu program ücretlidir ama net'de ilaçlanmış versiyonlarını bulmak mümkün oluyor.
Kullanımda olan son versiyon 2.60 versiyonu olup şu linkteki alternatiflerden birinden indirilebilir. Çalışan link varsa tabi.
http://www.sonsivri.com/forum/index.php?topic=25291.0
aynı yeri biraz kurcalarsan bir önceki versiyon olan 2.50 ile ilgili linkide bulur oradan belkide o versiyonu indirebilirsin.

Bir derleyici bulmayı başarırsan yapman gereken şey onu C ana klasöründe bir yere kayıt etmek yada kurmak olacaktır.
Sonra MCS de View menüsünde yer alan Program & Compiler options seçeneğini seçip kurduğun adresi orada göstermen gerekiyor. Kısaca MCS derleme yaparken kullancağı PBP yu hangi adreste bulacağını bu seçenekte görecektir.

MCS de program yazdıktan sonra Compiler (derle) seçeneği yada butonuna tıklarsan program hex formatına aynı klasör içinde çevrilecek yada varsa hata ekranın altında solda hata mesaj veya mesajları belirecektir. Bu hataları giderdikten sonra yeniden derleyebilirsin.
Sonuçta Compiled SUccessfully ikazını görürsen işlem tamam demektir.

Son olarak yazılmış programların nasıl deneneceğine dair bir iki şey yazayım.
Birinci metod tabiiki kurduğun devreyi simule etmek olacaktır. Bunun için arkadaşlarında belirttiği gibi Proteus yada isis (aynı program farklı isimlendiriliyor) programı bu iş için biçilmiş kaftandır. Ekranda devreni oluşturur ve işlemciye yazdığın programın hex halini verirsin. Aşağı sol köşede yer alan ok tuşuna  (Play) tıkladığın zaman programın çalışacaktır. Tabiiki nasıl bir sonuç bekliyor isen sonucu görebilecek birimleride devreye ilave etmen gerekir. Sonucu LED üzerinde göreceksen devrende led olamlı yada LCD de görecek isen devrende bir LCD olmalıdır.

Diğer bir yolda devreyi fiziksel olarak bire bir kurmaktır. Bunun için breadboard denilen deney boardları bulunmaktadır. Üzerinde bir sürü delikler olan bir elemandır bu. Malzemeleri yerleştirip bağlantılarını yapar ve voltajı vererek sonucu görürsün. Bu işi yapabilmen için Pic'e hex dosyasını yazman gerekecek. Bunun için en iyi programlayıcı Microchip firmasının geliştirdiği PicKit2 programlama devresidir. Klon tabir edilen kopyaları bir çok kişi tarafından yapılıp kullanıldığı gibi ayrıca piyasada da satılmaktadır. Senin işini fazlası ile görebilecek bir programlayıcıdır.
Sitemizde nasıl yapıldığına dair bir kaç konu bulabilirsin. Devre şemaları  PCB ler verilmiş olup geriye yapılması kalır. Hazırda alabilirsin.
Programlayıcıların genelde bir arayüz programı vardır. Bu programı çalıştırmadan önce programlayıcıyı PC ye USB portu üzerinden bağlarsın. Sonra arayüz programını çalıştırıp hex dosyasını yüklersin. Sonra yaz (write) butonuna tıklayınca program pice yazılır. Hepsi bu kadar sonra gidip pici kullanırısın.

Madem yenisin bir iki şey daha belirteyim. Picleri genelde 5V ile çalıştırırız. Bu nedenle devrende mutlaka 7805 gibi bir 5V regülesi kullan.
Picleri yerlerine takarken ters takmamaya çalış. Pic in besleme bacaklarına mutlaka 100nf kondansatör bağla.
Bütün picler bir osilatörün ğrettiği clock palsleri ile çalışır. Kiminde dahili osilatörler bulunur ve seçim programdan yapılır. Bu tür picler kristal yada benzeri bir osliatör elemanı istemezler. Üstelik kristal bacakları kullanılmadığı için bu bacakları normal input output bacağı olarak kullanabilirsin.
Ama unutma bir pic in çalışması için mutlaka ya bir kristal ya bir rezonatör (kristal+kondansatör) kullanılmalı yada pic de dahili osilatör özelliği var ise programdan bu özellik aktif edilmelidir.
Diğer bir konu da MCLR denilen reset bacağıdır. Normal kullanımda bu bacak  HIGH'a çekilir. LOW da olursa pic çalışmaz. yani reset konumunda kalır. Bazı pic lerde bu bacağında kullanımı iptal edilebilir ve bu bacak yalnızca digital giriş bacağı (çıkış yapılamaz) olarak kullanılabilir. Bu iş de programdan FUSE denilen sigorta ayarlarından yapılır. BU nedenle Picde aksine bir seçim yok ise MCLR bacağına mutlaka  1K-10K arası bir direnç ile Pullup yapılmalıdır.
Bu kadar bilgi şimdilik epeyce yol almanı sağlayacaktır. Ekstra bir şey çıkarsa sorarsın.

Ete

Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

eseneren

Ete hocanın agzına saglık üstüne laf soylenmez lakin suna cevap vermek ısterım.
Breadboardda devre kurdum lcd butonlar osıloator vs her sey var programı yazmak ıcın zıf sokete soktun programla cıkart dene aaa portu ayarlamamısım. sok yenıden zıfe tak vs yerıne pıc breadbordun ustunde ıken devrede kurulu 5 kablo cıkartıyorsun bır koseye genelde header denen aparat ıle pickit2 yı takıyor pc den yaz dıyorsun hıc ellemeden program yazılıyor ve devren sankı programmera baglı degılmıs gıbı calısıyor sen baktın begenmedın dvreye fızıksel olarak dokunmadan pc den programı degıstırıp yenıden yaz dıyorsun hooopp yenı program calısıyor. daha detay ıcın microchip sitesinde pickit2 diye kurcalarsın
Saygılar
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

ferdem


Kaya Onur

Erol Bey ne diyeceğimi bilemiyorum. Dersleri hazırlayıp sunmak yetmezmiş gibi bir de iki sayfa yazı yazmışsınız. Biraz mahcup oldum doğrusu. Çok teşekkür ederim. Daha fazla soru sormadan önce yazdıklarınızı bir uygulamaya geçeyim ben...

@eseneren. PicKit2'yi hazır almayı düşünüyorum. Anlattığınız şekilde bağlantı yapabileceğim header'i ile birlikte bulabileceğim bir yer söylemeniz mümkün mü özel mesaj yoluyla?

prof_81, ferdem teşekkürler bilgiler için.

Herkese hoşbulduk :)

eseneren

Header neredeyse bütün elektronikcilerde vardır.
İki tane resim koydum gördügün gibi 6 tane pinden oluşan birşey ötesi değil kablo ile de yapılabilir.
http://img52.imageshack.us/i/dsc03378jk.jpg/
http://img841.imageshack.us/i/dsc03389yv.jpg/
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

Kaya Onur

Biraz önce PICBASIC PRO 2.6 ve MicroCode Studio'yu kurdum.

2. dersteki Proje 2.b nin kodunu kopyaladım kafat compile tuşuna basınca assembler aramaya başladı.

MicroCode Studio, PBP compiler'ı kendi buldu fakat View menüsünden Compile and Program options'dan Assembler sekmesinde "use MPASM" seçeneğini kaldırmam gerekti.

Bu şekilde compile tuşuna basınca MPASM'ı aramadan işlemi bitirdi. PBP'nun PM assembler'ını buldu sanırım.

Sanırım oldu :) Bu şekilde mi devam edeyim yoksa MPLAB IDE'yi de indirip MPASM'ı mı kullanayım?

Sırada proteus var..
Çok çalışmam lazım çoook :)