<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Picproje E-Dergi &#187; Kutay</title>
	<atom:link href="http://dergi.picproje.org/author/kutay/feed" rel="self" type="application/rss+xml" />
	<link>http://dergi.picproje.org</link>
	<description>Pic proje e-dergi elektronik programlama ve fazlası</description>
	<lastBuildDate>Sun, 02 Aug 2009 17:49:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DSPIC30Fxxx Serisine Giriş ( C30 ile Nokia Grafik LCD uygulaması)</title>
		<link>http://dergi.picproje.org/dspic30fxxx-serisine-giris-c30-ile-nokia-grafik-lcd-uygulamasi</link>
		<comments>http://dergi.picproje.org/dspic30fxxx-serisine-giris-c30-ile-nokia-grafik-lcd-uygulamasi#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:16:34 +0000</pubDate>
		<dc:creator>Kutay</dc:creator>
				<category><![CDATA[PicProje E-Dergi 2]]></category>
		<category><![CDATA[dspic30f türkçe]]></category>
		<category><![CDATA[grafik lcd dspic]]></category>
		<category><![CDATA[nokia3310 lcd]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=266</guid>
		<description><![CDATA[Merhaba arkadaşlar, size özellikle Microchip 16bit işlemcilerin özelliklerini, Microchip C30 hakkında bilgi vermeye çalışacağım ve sonuç olarak Nokia 3310 grafik lcd üzerinde basit bir uygulama yapacağız . Umarım faydalı olur.

Microchip firması 8 bit işlemcilerinin başarılı performansı ve sunduğu kolaylıklarla, 8 bit işlemci piyasasını büyük ölçüde elinde tutuyor ve büyük bir müşteri topluluğu veya başka bir [...]]]></description>
			<content:encoded><![CDATA[<p>Merhaba arkadaşlar, size özellikle Microchip 16bit işlemcilerin özelliklerini, Microchip C30 hakkında bilgi vermeye çalışacağım ve sonuç olarak Nokia 3310 grafik lcd üzerinde basit bir uygulama yapacağız . Umarım faydalı olur.<br />
<span id="more-266"></span></p>
<p>Microchip firması 8 bit işlemcilerinin başarılı performansı ve sunduğu kolaylıklarla, 8 bit işlemci piyasasını büyük ölçüde elinde tutuyor ve büyük bir müşteri topluluğu veya başka bir deyişle işlemcilerine aşına donanım ve embedded software tasarımcılar topluluğu kazandı. Şimdi 16bit konusunda da iddialı. ( Bildiğiniz gibi 32bit işlemci satışlarına başladı).</p>
<p>Önce ne zaman 16 bit işlemciye gereksinim duyarız sorusuna cevap arayalım?</p>
<p>Bazı uygulamalar vardır ki, 8 bit işlemci kullanmak üreticiler ve tasarımcılar için özellikle aşağıdaki sebeplerden dolayı kayıptır.</p>
<ul>
<li>Performans</li>
<li>Hız</li>
<li>Fiyat</li>
<li>Emniyet</li>
<li>Hacim</li>
<li>En önemlisi zaman vb. sebepler.</li>
</ul>
<p>Bu durumda istediğimiz donanım ve yazılım gereksinimlerimizi verebilecek işlemci arayışına girdiğimizde, 8 bit işlemcilerine aşina olduğumuz Microchip firmasının 16 bit işlemcilerinden  PIC24, DSPIC30 veya DSPIC33 serisinden seçebiliriz. Bu serilerde kendi aralarında performans ve kabiliyetlerine göre ayrılırlar.</p>
<p><img class="alignnone size-full wp-image-268" title="DSPIC30Fxxx" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/DSPIC30Fxxx.jpg" alt="DSPIC30Fxxx" width="350" height="350" /></p>
<p><strong>PIC24FJ serisi : </strong>PIC16 ve PIC18 serisi gibi sadece mikrokontroller’dir. Ama hız, performans gibi konularda büyük fark vardır. Uygulamarda standart mikro kontroller olarak kullanılır. DSP (Digital Signal Processing – Dijital Sinyal İşleme) özelliğine sahip değildir.</p>
<p><strong>PIC24HJ serisi :</strong> PIC24FJ serisi gibi fakat DMA(Dynamic Memory Access – Dinamik Hafıza erişimi ) desteği ile hızı 40MIPS (Million Instruction Per Second – Saniyede (40) Milyon komut çalıştırabilirlik)’e çıkabilmektedir. Yine DSP donanımı ve komutları (instruction) içermez.</p>
<p><strong>PIC30F serisi: </strong>PIC24 serisini özellik olarak kapsar ve artı olarak Microchip’in ilk DSP hesaplamalarını yapabilen 16bit işlemcidir. Bu nedenle PIC24 serisine göre donanımsal ve programsal olarak artı eklentileri vardır.</p>
<p><strong>PIC33FJ serisi: </strong>DSP özelliklerine sahiptir ve DMA desteği ile DSPIC30 serisine göre çok daha hızlıdır. (40MIPS) Microchip 16bitlerde en gelişmiş ve kapsamlı mikro kontrollerdir. 118 interrupt kaynağına kadar çıkabilen bir interrupt donanıma sahiptir. Timer sayısı, ADC sayısı ve bit çözünürlüğü(12bit) vb. gibi bir çok özellik arttırılmıştır.</p>
<p><img class="alignnone size-full wp-image-269" title="DSPIC30Fxxx2" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/DSPIC30Fxxx2.jpg" alt="DSPIC30Fxxx2" width="600" height="277" /></p>
<p>Şimdi 16 bit işlemcilerin genel olarak özelliklerden kısaca bahsedelim.</p>
<p>* 16 adet 16bitlik working  (W0 –W15) registere sahiptir. W0, default working registerdir. Bu 16 working yapısı ile kısmen  ARM işlemcilere benzer. (Ama bildiğiniz gibi ARM mcu(microcontroller unit) 32 bit’lik registerlere sahiptir). ARM işlemcilerdeki gibi bazı working registerler özel amaçlı olarak kullanılırlar. (Stack pointer, frame pointer, shadow registerler ve DSP registerleri gibi). Bu working registerler , genel amaçlı data ,adres registeri ve indexer başka bir deyişle pointer olarak kullanılabilirler.</p>
<p>* 2 tane 40 bitlik işlem yapabilen DSP akümülatöre sahiptirler. (30F ve 33F serisi).<br />
* 17 bitlik iki registeri bir komutta çarpabilme kapasitesine sahiptir.<br />
* 32 bitlik işlemleri gerçekleştiren komutlara sahiptir.<br />
* 24 serisi için asm30’da 76 komut vardır<br />
* 30/33 serisi için asm30’da 84 komut (76 komut + 8 (Dsp komutları))<br />
* Çoğu işlemi tek cycle’da yapar (aşağıdakiler hariç)</p>
<p>Program akış komutları (goto, branch,call gibi)<br />
Double word işlemler yani 32bit işlemler<br />
Program memory’ye erişim<br />
Bölme işlemini gerçeşleştiren komutlar (işaretli ve işaretsiz bölme gerçekleştirebiliyor)</p>
<p>* Gelişmiş PWM control ve portlarına sahip, SMPS (Switch Mode Power Supply), DC/DC konvertör veya motor sürücü (driver) işlemler için kullanılabilir.</p>
<p>*  Dahili osilatör desteği  ile ; 31kHz &#8211; 8MHz arası veya 4x PLL ile 32MHz kadar çıkabilir<br />
*  Run(çalış), Idle(askıda kal,bekle), Sleep(uyku modu) var<br />
*  C’ye benzetilmiş Assembly komutları sayesinde mükemmel C optimizasyonu sahip </p>
<p>( For, do-while, while, X kez sağa &#8211; sola kaydır, X kez topla – çıkar gibi işlemri tek cycle’da yapabiliyor, bu işlemler için özel registerlere sahip(komut kullanıldığında donanım otomatik olarak bu registerleri kullanıyor))</p>
<p>*  Hardware ve software trap(kapan,tuzak)’lara sahiptir. (Yani donanım veya software hatasında bu trap’lara ait interrupt adresleri(en öncelikli(priority) interrupt adresleridir) var, address counter doğrudan bu adreslere gider.)</p>
<p>* 15 mertebeli interrupt önceliği (priority)  vardır. Her interrupt’a bir öncelik atanabilir.<br />
* PIC33F serisinde 118’e kadar çıkan interrupt kaynağı vardır.<br />
* Stack sayısı arttırabilir veya azaltılabilir, taşma olduğunda (overflow veya underflow) flag’i set edilir.</p>
<p>* PIC33F ve PIC24H serisi 2 osc cycle’da bir komut çalıştırır.</p>
<p>* PIC30F ve PIC24F serisinde 1 komut 4 osilatör saykılı ile gerçekleşir (16 ve 18 serisindeki gibi)</p>
<p>Microchip 16 bit serinde rahatlıkla asm30 ile program yazılabilir, hatta 8 bitlerden (mpasm) daha kolay ve esnek diyebilirim. Fakat Microchip PIC18 serisinden sonra C optimizasyonuna önem vermiştir yani işlemci donanımlarını C programlama diline uyumlu hale getirmektedir. 16bit işlemcilerinde de açık bir şekilde asm30 komutlarında görülmektedir. Bu nedenle C30’da program yazmakla asm30 yazmak arasında çok derleme farkı olmaz. (Tabii ki programcının tecrübesi hesaba katılmazsa)  Örneğin asm30 REPEAT adlı bir komuta sahiptir. Bu komut aynı C dilindeki while (koşul){ } yapısına benzer. Bu komutla birlikte “Repeat Loop Count “ adında bir 14bitlik register kullanılır.</p>
<p>repeat  #sayı	; (sayı+1) kadar kendinden sonraki komutu yani burada NOP’u çalıştırır.<br />
nop</p>
<p>Bu arada register 14bitlik olduğu için “sayı” en fazla 14 bit olabilir.</p>
<p>Örnek :</p>
<pre class="brush: cpp;">
repeat  #99		; 99+1=100
ADD  #10,w0	; 100 kez w0’a 10 eklenir
</pre>
<p>Bu komut delay ve özellikle dsp komutlarında çok faydalıdır. (ve matematiksel işlemlerde, x kez topla- çarp-çıkart-böl gibi)</p>
<p>Diğer bir C ‘ye benzeyen yapı ise “do loop registerleri” dir. Aynı C’deki do-while mantığı gibi çalışır. DOSTART (Loop’un başlıyacağı başlangıç adresi) ve DOEND (do loop’un sonlanacığı adres) adında iki registere sahiptir. Bu  iki adres arasındaki komutlar çalıştırılır,</p>
<p>Örnek: Aşağıda lit14 (14 bit literal(sabit sayı)) yerine do-while koşulu gelir, mesela 10 yazarsak (10+1=11 loop sağlarız)</p>
<pre class="brush: cpp;">
DO #lit14,Etiket  	; DOSTART registerine bu adres girilir
….
….                       	; bu aradaki komutlar (lit14+1) kadar çalıştırılır
Etiket			; DOEND registerine bu adres yazılır
</pre>
<p>Microchip 16Bit serisi aslında kısmen ARM işlemci donanımına benzetilmiştir. Çünkü aynı arm core’lardaki gibi 16 working register vardır. Ve aynı şekilde veri, adres ve index’er olarak kullanılabilirler.</p>
<p>Komut setinin diğer avantajlarından bazıları :<br />
- Doğrudan çarpma komutlarına sahiptir<br />
- İşaretli,işaretsiz ve kesirli sayıları çarpabilme<br />
- Barrel Shifter içerir (tek cycle’da 16 bit’e kadar sağa ve sola shift edebilme)</p>
<p>- Bölme komutuna sahiptir. İşaretli ve işaretsiz 16/16 ve 32/16 bitlik bölme işlemlerini gerçekleştirir.</p>
<p>- 4x, 8x,16x  kadar PLL  Vco içerir. (30MIPS olanlar 120 Mhz  , 20MIPS olanlar 80Mhz’e kadar  osilatör frekansına sahip olabililer)</p>
<p>- Bazı timerlar birleştirilerek 32bit timer gibi kullanılabilirler</p>
<p>Daha detaylı bilgi için <a title="dsPIC30F Family Reference Manual " href="http://ww1.microchip.com/downloads/en/DeviceDoc/70046E.pdf" target="_blank">dsPIC30F Family Reference Manual</a> ‘elinden faydalanabilirsiniz .</p>
<p>Şimdi Microchip C30 ile program nasıl yazılır ondan bahsedeceğim. Microchip C30 ansi C formatına uyumlu olduğu için program yazmak zor değildir. (%95 ansi C uyumludur diyebiliriz) İşin biraz  zor tarafı ise Microchip 16bit işlemcilerini donanımsal olarak tanımak gerekir. Fakat donanımın uzmanı olmak gerekmez. Sadece işlemcinin registerlerini, registerlerinin içerdiği bitleri tanımak ve yaptığı görevleri bilmek gerekir. Geri kalan donanımla ilgili fonksiyonları C derleyicisi halletmektedir. Tabii ki bu asm30’da program yazmak isteyenler için yeterli değildir. Aşağıda C30’da en çok kullanılan özelliklerden kısaca bahsedeceğim çünkü 8bit işlemcilerde kullandığımız ifadelerden farklı değil ve daha sonra C30 bir programın akış şemasını çıkaracağız. Soru cevap şeklinde anlatım daha açıklayıcı olur diye düşünüyorum.</p>
<p><img class="alignnone size-full wp-image-270" title="register tipi bit sayisi siyisal aralik" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/register-tipi-bit-sayisi-siyisal-aralik.png" alt="register tipi bit sayisi siyisal aralik" width="631" height="240" /></p>
<p><strong>unsigned int test;</strong> // test registeri 16bitliktir ve 0 – 65535 Aralığında kullanılabilir</p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/dspic30fxxx-serisine-giris-c30-ile-nokia-grafik-lcd-uygulamasi/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
