dsPIC için neden C ?

Başlatan kaypic38, 26 Ocak 2012, 23:40:56

kaypic38

@XX_CİHAN_XX,
Hocam Standart ANSI C kitabı dedinizde yaptığım araştırmalarda bulabildiğim yani kitap halinde getittirebileceğim tek yayın serdar çiçek ccs c açıkcaası ccs c  şöyle kotö ANSI C böyle iyi deyip duruyorlar belliki ANSI C daha iyi nerden bulabilirim bu dil hakkında kitap ?
Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...

Tagli

#46
Pek alıp incelemişliğim yok ama piyasadaki en popüler C kitaplarından biri Deitel'inki.
http://www.idefix.com/kitap/c-ve-c-harvey-m-deitel/tanim.asp?sid=V4AJKSCQEC5C8NJ8T0Y7

İngilizce konusunda sorunun yoksa, çevirisini değil İngilizce versiyonunu almanı öneririm. Burada bahsedilmesi pek uygun olmayacak kaynaklardan sanal olarak da temin edilebilir. Genelde bu durumda İngilizce'lerini bulmak daha kolay oluyor.
Gökçe Tağlıoğlu

kaypic38

Tagli hocam bu kitap normal C anlatıyor bence PIC programcısı için hiç faydalı değil çünkü PIC mantığı ile birlikte anlatılmıyordur büyük ihtimal... Malesef dediğiniz gibi ingilizce sorunum var sırf Elektronikte kendimi geliştirmek için yazın ingilizce kursuna gideceğim ingilizce eksiği yüzünden düzgün data sheet bile okuyamıyorum fakat şu an türkçe kaynaklara ihtiyacım var.
Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...

XX_CİHAN_XX

Şuan için PIC C yi unutmalısın. Bu konuda sağlam adımlarla ilerlemek ve kaliteli kodlar yazmak istiyorsan önce Tagli' nin da anlatmaya çalıştığı gibi Standart C dilini çok iyi bir şekilde öğrenmelisin.

İşte sana bir sürü türkçe kaynak.
http://rapidshare.com/files/53355257/C_Dili.rar.html

Kolay gelsin.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

M_B

Merhaba kaypic38,
Taglı hocanın onermiş oldugu (ve bir çok kişinin onerdiği kitap ) standart C yi anlatıyor.
C de program yazmak için önce C nin yapısını ogrenmeniz lazım. onerilen kitaplarda belli bir bolume gelene kadar pic ten alakasız C ye calısmanız gerekiyor. Belli bir seviyeden sonnra ikisini aynı anda goturebilirsiniz.
en azından C de fonksiyon bolumune kadar çalışmanız lazım daha sonra bir cok örnekleri incelediğinizde bazı şeyler daha iyi oturacaktır.


Altaki iki kaynak fazlasıyla işinize yarar.
kolay gelsin.


https://www.picproje.org/index.php/topic,35720.0.html
http://www.kadifeli.com/fedon/stdcprtr.php      Cok guzel bir C kaynak kitabı.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

JKramer

Alıntı yapılan: ahfxg - 29 Ocak 2012, 02:45:37
O halde bana tüm işlemciler için gerekli .h structer kodlarını hazırlayıverin çok zor değilse?
Alıntı yapılan: JKramer - 25 Ağustos 2011, 14:54:58
https://www.picproje.org/index.php/topic,34076.msg238850.html#msg238850
Kesinlikle katılıyorum. Öyle bir hava oluşturuluyor ki, sanki bu derleyici insanların kafasına silah dayayıp zorla "output_b ya da input_c 'yi kullanacaksın, başka yolu yok" diyor. İster derleyicinin bu tip gömülü fonksiyonlarını kullanırsınız ister doğrudan register'ların isimlerini kullanırsınız. Ben output_b yazdığımda derleyici arka planda ne yapıyor bilmiyorum ki diyenler de bir zahmet .lst dosyasına bakıversin.

Şimdi de "ben bütün register'ları tek tek tanımlamak zorunda mıyım?" diyenler olacaktır, onları da kırmayalım: CCS ide'sini açın. Tools-->Device editor e tıklayıp register dosyası oluşturmak istediğiniz mikrodenetleyiciyi seçin. Sağ tarafta "make include file" seçeneğini tıklayın. Burada istediğiniz tercihleri (structure ya da her bir bit'i ayrı ayrı tanımlama gibi) yaptıktan sonra oluşturulacak dosya yolunu belirleyip "Generate" e tıklayın. (sadece komut satırlı olanı kullanıyorsanız evinizde ide'yi kurup bir kereliğine register dosyalarını alabilirsiniz.)

Derleyici bir araçtır, aracı nasıl kullandığınız sizi ilgilendirir. Eğer sizin; kullandığınız mikrodenetleyicideki birimlerin nasıl çalıştığını, ayarlarının nasıl yapıldığını öğrenmeye niyetiniz yoksa ha derleyiciyle gelen kütüphaneleri kullanmışsınız ha nette başkaları tarafından yazılmış kütüphaneleri kopyalamışsınız, bir fark yok.
Sırf bunun için 400-500 $ fazladan verecekseniz ben 10 dakikamı ayırıp size header dosyalarını çıkartayım; maksat para ülke içinde kalsın :).

ahfxg

Ben derleyici aldığımda bunu bile yapmak istemem, datasheette ne yazılıyorsa onun olmasını isterim de neyse. Bunu atlattık diyelim, dünyada sadece 1 tane mi işlemci var? Microchip'in ürettiği C derleyicisi varken neden başka şirketlerin ürettiklerini kullanayım ki?
Erkeklerin dünyasına başkaldıran bayan mühendis..

tyildizak

Alıntı yapılan: JKramer - 29 Ocak 2012, 13:54:55
Sırf bunun için 400-500 $ fazladan verecekseniz ben 10 dakikamı ayırıp size header dosyalarını çıkartayım; maksat para ülke içinde kalsın :).


+1 :)

fahri-

Alıntı yapılan: ahfxg - 29 Ocak 2012, 14:25:04
Microchip'in ürettiği C derleyicisi varken neden başka şirketlerin ürettiklerini kullanayım ki?
Bu cümleniz çok doğru gibi görünse de pratikte bu böyle değil. Kendi derleyicisi en iyi olsaydı microchip hi-tech i satın almazdı.

kaypic38

Hepinizden ALLAH razı olsun değerli hocalarım ( Türk filmi kıvamında oldu :) ) bu siteyi gerçekten seviyorum çok duyarlı bilgili insanlar var hocam son bir soru sormak istiyorum standart C için verdiğiniz kaynaklar çok güzel peki o aşamadan sonra ANSI C için Türkçe (kitap halinde olursa daha iyi olur) tavsiye edebileceğiniz şöyle güzel bir kaynak var mı ?
Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...

ilhan_mkp

konunun üzerinden biraz zaman geçmiş ama ustaların yorumlarını toparlayacak olursak.
programcılık yapacağım diyorsan ansi c öğrenmelisin peki ya neden? sorusunu biraz açmak gerek
datasheetleri iyi yorumlayıp program yazmakta bir yerde yetersiz kalıyor.
kodun başka bir işlemciye taşınması ihtiyacı çok karşılaşılan bir durum.
kodunu taşıyamadığın bir c derleyicisinin basicten hiçbir farkı yok desek yeridir.
birde kendine özel komutları olan bir c kullandın özel komutlarıda kullandın taşıman gerkti.
bence taşıyamadığın c basic'tir daha türkçesi basittir.

ciddi anlamda kod yazacağım diyorsan derleyicileri basit bir ayrıntı olarak ele almalısın.

öylesine kod yazacağım dersen mikroişlemci dünyası çok ama çok seçenekli bir kaç kod örneği basic ile
basic'te pbp ve proton'dan ibaret değil bunu unutmamakta fayda var.

mesela basictede fonksiyon yazarsın bascomun samplelerinden bir örnek

$regfile = "m48def.dat"                                     ' we use the M48
$crystal = 8000000
$baud = 19200

$hwstack = 32
$swstack = 16
$framesize = 24


'A user function must be declare before it can be used.
'A function must return a type
Declare Function Myfunction(byval I As Integer , S As String) As Integer
'The byval paramter will pass the parameter by value so the original value
'will not be changed by the function

Dim K As Integer
Dim Z As String * 10
Dim T As Integer
'assign the values
K = 5
Z = "123"

T = Myfunction(k , Z)
Print T
End


Function Myfunction(byval I As Integer , S As String) As Integer
  'you can use local variables in subs and functions
  Local P As Integer

  P = I

  'because I is passed by value, altering will not change the original
  'variable named k
  I = 10

  P = Val(s) + I

  'finally assign result
  'Note that the same data type must be used !
  'So when declared as an Integer function, the result can only be
  'assigned with an Integer in this case.
  Myfunction = P
End Function


basic içine asm yazabilirsin hatta kendi çapında rtosta hoş olabilir.
rtos örnek linki  http://www.mcselec.com/index.php?option=com_content&task=view&id=70&Itemid=57

birparçada koda eklenmiş asm

For Current_task = 1 To Nbr_tasks 'Cycle through robin around fashion
If Task_status(current_task) <> 0 Then 'Waiting for something ?
Goto Scheduler_next 'YES, waiting for something
Else 'Prepare Return = resume address
Work_byte = Task_resume_2(current_task) 'Look sharp, reverse order
$asm
lds r16,{work_byte}
push r16
$end Asm
Work_byte = Task_resume_1(current_task) 'Look sharp, reverse order
$asm
lds r16,{work_byte}
push r16
$end Asm
End If 'Simmple
Return



şimdi bu örnekleri neden verdim başka bir işlemciye taşıyamadığın her işi basiclede yaparsın hatta c kullanıyorum dünya kullanıyo rehavetine kapıldığında aynı işi basic ile yapan birinden daha başarısız işler çıkrtmanda olasılık.

ne dedik algoritma kurmakta çok önemliydi kuralım
ben basic kullanıyorum
sen c kullanıp kodunu taşıyamıyorsan benden bir farkın yoktur ve programcı değilim  ;D