ASM ile PIC32 programlayan var mı? Yada örnek var mı?

Başlatan RaMu, 10 Kasım 2012, 04:14:36

RaMu

  Merhaba, ben eem öğrencisiyim, 2 senedir pic programlamayla uğraşıyorum, sadece assembly kullandım, 16f877(A) ve DSPIC30F2010 ile lcd sürme, glcd, harici kesme kullanarak timer ile frekansmetre, rtc ds1302-ds1307, FAT16 dosya sistemi ile sd kart okuma (halen geliştiriyorum),  ds13b02 sıcaklık entegresi kullanımı vs. programlar yazdım, 16f877 için relocatable kod geliştiriyorum, (çalışmalarımın bazılarını kontrolkalemi.com da yayınladım orada karaapak nick ini kullanıyorum) yani pic hakkında biraz bilgim var şimdi PIC32 kullanmak istiyorum epey araştırdım sanki microchip pic32 için asm kullanmamızı istemiyormuş gibi geldi bana neredeyse hiç örnek yok, mplabda pic32 için 3 tane örnek var onlar nette dolaşıyor o kadar, komutlarını bile mips in sitesinden indiriyorsunuz datasheet te instruction set bölümünde sadece mips in adresi var (aslında haksız sayılmazlar 300 sayfa) . Neyse ben pic32 için en asm örnekleri arıyorum, değişken tanımlamayı beceremedim, ancak """  .data > degısken1: .word 0x0002  """ şeklinde degısken1 e sabit 2 değeri veren ve bu şekilde programda kullanmanıza izin veren birşey buldum, derdim değişken tanımlamasını öğrenmek, port giriş çıkış kurulumunu yapıp bir tane led yak söndür uygulaması yapabilmek, sonrası zaten gelir, bu konuda bilgisi olan arkadaşlardan yardım talep ediyorum, epey bir döküman indirdim yinede döküman tavsiyelerinede açığım, dökümanın mahiyetini belirtmeniz çok faydalı olur, zahmet edip konuyu okuyan arkadaşlar dahil yardımcı olacak herkese şimdiden teşekkürlerimi sunarım, iyi çalışmalar.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Pyrodigy

ASM ile dspic yada 32 bitlik PIC programlamak demek pirinç tanelerinden tespih yapmaya benzer:)
Bende ASM kullanıyorum, derhal C öğrenmeni tavsiye ederim. Kendimede tavsiye ediyorum ama zaman yok :(
Persistance is the name of the game in this business....

ULAGA

Bırak, bu saatten sonra ASM cebinde dursun.
ASM sayesinde bütün donanım inceliklerini öğrenmiş oldun.
Bu saatten sonra C'ye başla ve projelerini C dili ile geliştir.
Bundan zararlı çıkmazsın, buna emin ol.
Yoksa bu şekilde vakit harcamış olursun.

94220039

Alıntı yapılan: Pyrodigy - 10 Kasım 2012, 10:34:01
ASM ile dspic yada 32 bitlik PIC programlamak demek pirinç tanelerinden tespih yapmaya benzer:)
Bende ASM kullanıyorum, derhal C öğrenmeni tavsiye ederim. Kendimede tavsiye ediyorum ama zaman yok :(

aynen katılıyorum.

RaMu

   Arkadaşlar ilgi gösterip tavsiyede bulunmuşsunuz çok teşekkür ederim, ben asm vs c tartışmasını bitirdim, pic32 yi asm ile programlayacağım bu kesin kararımdır, konu asm vs c savaşına dönmez ve bilen birileri çıkıp örnek verebilir veya bildiği kaynakları gösterebilirse benim için faydalı olur, benim için asm araç değil amaçtır, gerekirse c yi araç olarak kullanmak üzere öğrenirim yani asm ile pic32 yi programlamama katkısı olacaksa öğrenirim ki olacağını sanmıyorum, bu arada pic32 nin mplabdaki c kütüphanesini inceliyorum faydası var ama bana bir led yak söndür uygulaması gösteren olsa keşke diye bekliyorum gerisi kolay.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

z

C de çok yalın halde ledi yakıp söndüren program parçasını yaz yazda hazırını bul.
Daha sonra programın asm çıktısını incele. Debug ile asm kodları adım adım işlet register içeriklerini gözetle.

Bu şekilde 1-2 basit program parçacığını incelersen asm ye giriş yapabilirsin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Pyrodigy

#6
ASM-C ye göre daha iyidir yada tam tersi demek istemedim. Sadece ASM ile yüksek mimarili bir MCU programlamanın çok sıkıntılı olduğunu söylemeye çalıştım.
Buda neden 32 bit mimari ile örnek kod yada uygulama bulamadığın ile bağlantılı aslında. Şöylede düşünebilirsin; microchip veya farklı bir üretici uygulama notlarında veya örnek kodlarında neden ASM değilde C kullanıyor? Sorunun cevabı aslında nden kaynak bulamadığın gerçeğini açıklıyor...
Ayrıca Taşınabilirlikte sözkonusu olduğunda sıkıntı yaşarsın, her üreticinin kendi resgisterleri olduğu gibi komutlarıda farklı olabilir....
Bu arada sakın seni vazgeçirmeye çalıştığımı düşünme, eğer gerçekten azmedip 32 bitlik mimariyi ASM ile yazarsan, emin ol gözü kapalı C diliyle kod yazandan daha itibarlı olursun...Bende zamanında düşündüm ama o komutları görünce hemen vazgeçtim.
Persistance is the name of the game in this business....

RaMu

  Sayın z evet bahsettiğiniz yöntem benimde kullanmayı düşündüğüm yollardan biri, teyid edilmesi iyi oldu, aynı zamanda c+asm karışık yazımlarada örnek bulursam bakacağım, bu şekilde birşeyler öğrenebilirim. Yolgösterici tavsiyenizden ötürü teşekkür ederim.
  Sayın Pyrodigy size hakveriyorum, aslında zor gibi gözüksede asm ile yazmak bana daha kolay geliyor, DSPIC30F dede 150 komut vardı PIC32 den geri kalır yanı yok denebilir, ama işi kavrayınca asm ile kod yazması çokta sıkıntı olmuyor, heleki bu komutlar 16f serisinde birçok adımda yaptığınız işlemleri size tek adımda yapma imkanı verince çok daha zevkli oluyor, ben dspic30f i asm ile programlamaktan epey zevk aldım, pic32 dede aynısı olacağı kanaatindeyim.
  Aslında ben pic32 ile ilgili asm örneği ararken birileri zaten bu işi yapıyor buna eminim, nette dspic ile ilgili asm örneği pek bulunmazken, benim elimde kendi yazdığım programlar var, belki bendede hata var bu programları paylaşmak lazım gelebilir, ben bu konıuda henüz bir isteğe rastlamadığım için dspic kodlarımı paylaşma ihtiyacı hissetmedim, belki birileride pic32 asm kodlarını paylaşma ihtiyacı hissetmiyor olabilir diye düşünüyor ve o kimselerin bu arayışı görmelerini arzu ediyorum.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

RaMu

  Mimarinin farklı olduğunu elbette biliyorum, yalnız mimarilerin birbirine karşı üstünlükleri hakkında araştırma yapmadım. İleride işletim sistemi yazmak ve daha fazlası gibi amaçlarım var, bu ve benzeri amaçlarımı paylaşmak istemedim, daha asm ile kod yazacağım deyince ne işin var demeye geliyor konu, bunları söylesem başıma neler gelir diye düşünüyorum paylaşmaktan vazgeçiyorum. Niyetim kısa vadeli ticari amaçlı projeler yapmak olmadığından c ile kod yazıp arkaplanı düşünmemek gibi bir lüksüm yok, sizinde değindiğiniz gibi aslında mimarileride öğrenmem gerektiğini düşünüyorum, bunların yanında ben asm ile kod yazmaktan zevk alıyorum, c ile kod yazmak benim için anlamsız, bu örneği vermiştim biryerde günlerce oturup resim yapan bir adama ne uğraşıyorsun kardeşim al sana fotoğraf makinası hemde 15 megapiksel panoromik bu senden kat kat iyi iş çıkarır hemde anında, bırak resim yapmayı diyemezsiniz, yani kulvarlar farklı bu konuyu tartışmak istemediğimi belirttim, c ile program yazmak benim amacıma uygun değil.
   Benzerlikler kullanımda var, yok denemez, dspicte w0-15 md. değişkenleri vardı pic 32 dede r0,v0,s0 vb. değşkenler var, komutların adı değişiyor birde 16 bit yerine 32 bit daha öğrendikçe birçok ortak nokta çıkacaktır, PIC32 nin tamamen faklı olduğu konu ancak mimarisi olabilir, buda silbaştan programlama öğreniyormuşuz gibi bir sonuç ortaya çıkarmaz. Timer sa timer, mssp ise mssp modül kullanımı modüllerle ilgili registerların bulunması bunlarda değişen bir mantık göremedim henüz, yani mimari farkının asm ile programlama yapmakta olumsuz sonuç doğuracağı fikri nereden geliyor anlam veremedim.
  Bu arada sayın z nin söylediği gibi c kodunu disassembler ile inceliyorum faydası oluyor, henüz incelediğim kodu asmde gerçeklemedim bugün denerim herhalde, daha önce birkaç örneğe bakıp toplama-çıkarma-çarpma-bölme komutlarını kullanan kod denemesinde bulundum, şimdi bir led yaksöndür yaparsam yolum aydınlanacak.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

iyildirim

dsPIC lerin DSP-DSC olmasından dolayı en azından DSP kullanılabilecek yerlerde belli kod bloklarını asm ile yazmak dsPIC lerde mantıklı.

PIC32 lerde DSP özelliği de olmadığından asm kullanımı bence gereklilikten ziyade ancak kişisel tercihden dolayıdır.

Öte yandan amaca uygun işlemci seçerek olabildiğince donanıma yüklenmek asm veya C tercihinden bence daha önemli. Amaca uygun işlemci de amaca göre ve zaman içerisinde değişebileceğinden, farklı işlemcilere adaptasyonun daha kolay olmasıdan dolayı C kullanmak bence de daha makul bir tercih.

Ayrıca C kullanmak da kodun belli yerlerini asm ile yazmanızı engellemiyor zaten. Startup kodlarını veya bir kere üzerinden geçilen kodları asm ile yazmanın getireceği pek bir avantaj olduğunu düşünmüyorum. Ama saniye de xxxxxx kere çağrılan kesmenin altını asm kullanarak daha uygun yazabiliyorsanız neden olmasın.

Neyse, benimde önerebileceğim @Z nin dediği gibi disasm üzerinden debug gibi yöntemler. Ancak burada da debuggerlar ki soft sim de ICD3 de dahil startup veya kütüphane kodlarını veya bölme float vs call edilen kodların göstermiyor.
dsPIC lerde özellikle matris, vektör işlemleri gibi asm kodları açıktaydı ve asm kodlarını özelleştirme, kaliteli asm kodunu referans alma gibi işler daha kolaydı ama PIC32 ler de dsPIC ler de olduğu gibi lib kodları ortalarda bulunmuyor. PIC32 kütüphanelerinin performanslı oldukça iyi. Ve kaliteli PIC32 asm kodu nasıl yazılır örneği olarak kullanmak için disasm yanında bir decompiler kullanmak da düşünülebilir.

Alıntı yapılan: gerbay - 11 Kasım 2012, 01:23:42
eğer böyleyse siz o projelerinizi erteleseniz iyi olur.. c olmadan pure asm ile o projelerinizi işe yarar şekilde yapamazsınız

Zamanında tanıdığım demiyeyim de arkadaşın arkadaşı şeklinde uzaktan bildiğim biri asm ile ticari paket yazıyormuş diye duymuştum.
O sıralarda ben Btrieve bile kullanmıyordum çünkü henüz yoktu. Btree indexlemeyi bitirmiş diye arkadaştan duyduğumda ben artık btrieve' i bırakmış MSSQL kullanıyordum..

z

ASM ile uğraşmak isteyenlere bulaşmayalım. (Her milletten birilerinin muhakkak asm ile uğraşması lazım.)

Asm konusunda ciddiysen komut listesini üşenmeden ezberlemeye başla. Malesef bunları ezberlemeden asm kullandığına deyecek kod yazamazsın.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

RaMu

Alıntı yapılan: gerbay - 11 Kasım 2012, 01:23:42
eğer böyleyse siz o projelerinizi erteleseniz iyi olur.. c olmadan pure asm ile o projelerinizi işe yarar şekilde yapamazsınız
"o projeleri ertelerseniz iyi olur" o projelerden kastınız hangisi, ilk mesajımda yazdığımı söylediğim programlar mı? işletim sistemi ve daha fazlası mı?
Ticari amaçlı kütüphane yazan değil ama ticari amaçla asm ile program yazan birebir tanıdığım kimseler var. Bende 16f877 için relocatable kod geliştirmeye çalışıyorum şimdilik deneme aşamasında ama ilgilenen olursa gözatsın: bu relocatable kod kullanımına dair basit bir örnek http://www.dosya.tc/server23/kfcu5l/1ABSOLUTE-RELOCATABLEORNEKRaMu.rar.html  ,  buda 2*16 lcd yi ve ds1307 (I2C) entegresini kullanmak için (ds1307 halen geliştirme aşamasında) hazırladığım çalışma  http://s2.dosya.tc/server21/4sVHut/I2C_LCD-RELOVERDEN4.rar.html  Burada sayım müjdat117 relocatable kodla uğraşıyordu sanırım onun çalışmaları beni etkilemişti.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html


z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

RaMu

Bir sebebi yok aslında, picle başladım öyle devam ediyor, ikisi arasında bir karşılaştırma yapmadım hiç. Gönderdiğiniz linkte ikiside risc tabanlı demiş, c (veya yüksek seviyeli diller) de yazılan kodların mibs den arm a migrate işlemi yapılabilir gibi bir anlam çıkardım. C kodu içerisinde yazılan asm kısımların tej-krar yazılması veya çıkarılması gerekeceğine vurgu yapılmış.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html