<?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</title>
	<atom:link href="http://dergi.picproje.org/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>PicProje E-Dergi Sayı-2</title>
		<link>http://dergi.picproje.org/picproje-e-dergi-sayi-2</link>
		<comments>http://dergi.picproje.org/picproje-e-dergi-sayi-2#comments</comments>
		<pubDate>Fri, 31 Jul 2009 22:41:44 +0000</pubDate>
		<dc:creator>gevv</dc:creator>
				<category><![CDATA[Picproje E-Dergi Haberler]]></category>
		<category><![CDATA[ccs c]]></category>
		<category><![CDATA[dspic30f nokia]]></category>
		<category><![CDATA[frekansmetre]]></category>
		<category><![CDATA[hız kontrol]]></category>
		<category><![CDATA[pic32 türkçe]]></category>
		<category><![CDATA[picpeoje edergi 2]]></category>
		<category><![CDATA[rf haberleşme]]></category>
		<category><![CDATA[vhdl cpu]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=278</guid>
		<description><![CDATA[Nihayet Picproje Edergi 2 tamamlandı bir birinden güzel konular ele alındı bu sayıda programlama ve mikro denetleyiciler öne çıktı. Emeği geçen herkese çok teşekkürler bu zamanda büyük bir çaba gösterek onca işin arasında destek oldular

9 Yazı bulunuyor aşağıda yazı başlıklarına tıklayarak ilgili yazıya ulaşabilirsiniz isterseniz  &#8220;PicProje E-Dergi 2&#8221; kategorisinden bu sayının tüm yazılarına ulaşabilirsiniz
1: DSPIC30Fxxx [...]]]></description>
			<content:encoded><![CDATA[<p>Nihayet Picproje Edergi 2 tamamlandı bir birinden güzel konular ele alındı bu sayıda programlama ve mikro denetleyiciler öne çıktı. Emeği geçen herkese çok teşekkürler bu zamanda büyük bir çaba gösterek onca işin arasında destek oldular<br />
<span id="more-278"></span></p>
<p>9 Yazı bulunuyor aşağıda yazı başlıklarına tıklayarak ilgili yazıya ulaşabilirsiniz isterseniz  &#8220;<a title="picproje edergi 2" href="http://dergi.picproje.org/category/picproje-e-dergi-2" target="_blank">PicProje E-Dergi 2</a>&#8221; kategorisinden bu sayının tüm yazılarına ulaşabilirsiniz</p>
<p><strong>1: <a title="DSPIC30Fxxx Serisine Giriş ( C30 ile Nokia Grafik LCD uygulaması)" href="http://dergi.picproje.org/dspic30fxxx-serisine-giris-c30-ile-nokia-grafik-lcd-uygulamasi" target="_blank">DSPIC30Fxxx Serisine Giriş ( C30 ile Nokia Grafik LCD uygulaması)</a> &#8211; (Yazar: <span style="color: #0000ff;">Kutay</span>)<br />
</strong> <strong>2: <a title="433MHz RF Haberleşme Sistemleri" href="http://dergi.picproje.org/433mhz-rf-haberlesme-sistemleri" target="_blank">433MHz RF Haberleşme Sistemleri</a> (Yazar: <span style="color: #0000ff;">Cihan YILDIRIM</span>)<br />
</strong> <strong>3: <a title="Hız Kontrol Üniteleri Sürücüler ve Motorlar" href="http://dergi.picproje.org/hiz-kontrol-uniteleri-suruculer-ve-motorlar" target="_blank">Hız Kontrol Üniteleri Sürücüler ve Motorlar</a> (Yazar: <span style="color: #0000ff;">Aykut YILMAZ</span>)<br />
</strong> <strong>4: <a title="VHDL ile 8 Bit CPU Tasarımı" href="http://dergi.picproje.org/vhdl-ile-8-bit-cpu-tasarimi" target="_blank">VHDL ile 8 Bit CPU Tasarımı</a> ( Yazar: <span style="color: #0000ff;">Fxdev</span>)<br />
</strong> <strong>5: <a title="PIC18F452 CCS C Analog Saat Glcd-320×240" href="http://dergi.picproje.org/pic18f452-ccs-c-analog-saat-glcd-320x240" target="_blank">PIC18F452 CCS C Analog Saat Glcd-320×240</a> (Yazar: <span style="color: #0000ff;">ahmet2004</span>)<br />
</strong> <strong>6: <a title="PIC 18F2520 ile 4.5 MHz Frekansmetre Yapıyoruz" href="http://dergi.picproje.org/pic-18f2520-ile-4-5-mhz-frekansmetre-yapiyoruz" target="_blank">PIC 18F2520 ile 4.5 MHz Frekansmetre Yapıyoruz</a> (Yazar: <span style="color: #0000ff;">Fatih Erdem</span>)<br />
</strong> <strong>7: <a title="MMC – SD kart uygulaması" href="http://dergi.picproje.org/mmc-sd-kart-uygulamasi" target="_blank">MMC – SD kart uygulaması</a> ( Yazar: <span style="color: #0000ff;">arslan74</span>)<br />
</strong> <strong>8: <a title="Microchip PIC32 Genel Bilgiler Örnek Uygulamalar" href="http://dergi.picproje.org/microchip-pic32-genel-bilgiler-ornek-uygulamalar" target="_blank">Microchip PIC32 Genel Bilgiler Örnek Uygulamalar</a> (Yazar: <span style="color: #0000ff;">crazy2015</span>)<br />
</strong> <strong>9: <a title="Pic ile PS/2 Klavye Kullanımı" href="http://dergi.picproje.org/pic-ile-ps2-klavye-kullanimi" target="_blank">Pic ile PS/2 Klavye Kullanımı</a> (Yazar <span style="color: #0000ff;">Fxdev</span>)</strong></p>
<p><img class="alignnone size-full wp-image-280" title="picproje edergi 2" src="http://dergi.picproje.org/wp-content/dosyalar/2009/08/picproje-edergi-2.jpg" alt="picproje edergi 2" width="695" height="986" /></p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/picproje-e-dergi-sayi-2/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Microchip PIC32 Genel Bilgiler Örnek Uygulamalar</title>
		<link>http://dergi.picproje.org/microchip-pic32-genel-bilgiler-ornek-uygulamalar</link>
		<comments>http://dergi.picproje.org/microchip-pic32-genel-bilgiler-ornek-uygulamalar#comments</comments>
		<pubDate>Fri, 31 Jul 2009 22:14:13 +0000</pubDate>
		<dc:creator>crazy2015</dc:creator>
				<category><![CDATA[PicProje E-Dergi 2]]></category>
		<category><![CDATA[FreeRTOS]]></category>
		<category><![CDATA[PIC32]]></category>
		<category><![CDATA[pic32mx460f512l]]></category>
		<category><![CDATA[StickOS BASIC]]></category>
		<category><![CDATA[UBW32 kit]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=208</guid>
		<description><![CDATA[Pic32 Genel PIC32MX460F512L  Microchip&#8217;in 32 bit işlemci ön açıklaması ve bu işlemci kullanılarak yapılmış uygulamalar.

ÖZELİKLER:
Yüksek Performans 80 MHz MIPS-32-bit Flash Mikroişlemci Tabanlı 100-Pinli Genel Maksatlı ve USB Yüksek performanslı 32-bit RISC CPU:
• MIPS32 ® M4K ™ 32-bit Core 5-durumlu iş hattı
• 80 MHz Maksimum Frekans
• 1,56 DMIPS / MHz (Dhrystone 2.1) Performans için 0 durumu beklemeli [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Pic32 Genel</strong> PIC32MX460F512L  Microchip&#8217;in 32 bit işlemci ön açıklaması ve bu işlemci kullanılarak yapılmış uygulamalar.<br />
<span id="more-208"></span></p>
<p><strong><span style="color: #ff0000">ÖZELİKLER:</span></strong></p>
<p class="bilgi"><span style="color: #3366ff">Yüksek Performans 80 MHz MIPS-32-bit Flash Mikroişlemci Tabanlı 100-Pinli Genel Maksatlı ve USB Yüksek performanslı 32-bit RISC CPU:</span><br />
• MIPS32 ® M4K ™ 32-bit Core 5-durumlu iş hattı<br />
• 80 MHz Maksimum Frekans<br />
• 1,56 DMIPS / MHz (Dhrystone 2.1) Performans için 0 durumu beklemeli Hızlı Bellek Erişimi<br />
• Tek-Çevrim Çarpma ve Yüksek Performanslı bölme birimi<br />
• MIPS16e ™ Modu %40 daha küçük Kod uzunluğu<br />
• çift setli 32 Çekirdek Kayıt Dosyaları (32-bit) Kesme Gecikmesini azaltmak için<br />
• Modülü önbelleğe almak Flaş Belleğin Hızlı çalışmasını sağlar
</p>
<p class="bilgi">
<span style="color: #3366ff">Mikroişlemci Özellikleri:<br />
</span>• Çalışma Voltajı aralığı 2.3V to 3.6V<br />
• 32K 512K Flash Bellek için (artı ek bir 12KB Önyükleme Flash)<br />
• 8k 32K SRAM hafıza için<br />
• Pin-Eşdeğerlikli PIC24/dsPIC ® Cihazlar ile uyumludur<br />
• Çoklu Güç Yönetim Modları<br />
• Çoklu Kesme Vektörleri genişletilebilir, bireysel programlanabilir Önceliklerle<br />
• Hata güvenlikli Saat Monitör Modu<br />
• Yapılandırılabilen Watchdog Timer Düşük Güçlü RC osilatör ,güvenilir operasyonlar için</p>
<p><span style="color: #3366ff">Çevre Özellikleri:<br />
</span>• Atomik SET, CLEAR ve INVERT operasyonları Seçilebilir Çevresel kayıtediciler üzerinden<br />
• 4 kanaldan fazla Donanım ile DMA Otomatik Veri Boyut Algılama<br />
• USB 2.0 uyumlu Tam Hızlı Cihaz ve On-the-Go (OTG) Denetleyicisi<br />
• USB işine adanmış DMA Kanal vardır<br />
• 10 MHz 40 MHz Kristal osilatör<br />
• Dahili 8 MHz ve 32 kHz&#8217;lik Osilatörler<br />
• Ayrı PLL&#8217;lerle CPU ve USB Saatleri<br />
• İki I2C ™ Modülleri<br />
• İki UART Modül ile:<br />
- RS-232, RS-485 ve LIN 1,2 desteği<br />
- IrDA ® On-Chip Donanım Kodlayıcı ve Decoder<br />
• Paralel Master ve Slave Port (PMP / PSP) ile 8bit ve 16bitlik data ve 16&#8242;dan fazla adres satırı <br />
• Donanım Real-Time Saat / Takvim (RTCC)<br />
• Beş adet 16-bit zamanlayıcı / Sayaçlar (iki 16-bit birleştirilebilir, 32bit timer oluşturmak için bit zamanlayıcıları)<br />
• Beş Yakalama Girişleri<br />
• Beş Karşılaştırma / PWM Çıkışları<br />
• Beş Harici Kesme Pini<br />
• Yüksek hızlı giriş/çıkış Pin kapasiteli geçiş hızı 80 MHz den fazla<br />
• Yüksek Akım Safak / Kaynak (18 mA/18 mA) üzerinde Tüm I / O Pinleri<br />
• Yapılandırılabilen Açik Dijital giriş/çıkış Pinleri</p>
<p><span style="color: #3366ff">Hata Ayıklama Özellikleri:<br />
</span>• İki Programlama ve Hata ayıklama Arabirimleri:<br />
- 2 Telli Arayüzle zorlanmadan Erişim ve Gerçek Zamanlı Veri Değişim Uygulaması ile<br />
- 4 tel MIPS ® Standart Gelişmiş JTAG arayüzü<br />
• Zorlanmadan Donanım bazlı Öğretim İzleme<br />
• IEEE Std 1149.2 (JTAG) Sınır Uyumlu Tarama</p>
<p><span style="color: #3366ff">Analog Özellikleri:<br />
</span>• 16dan fazla Kanal 10-bit Analog-to-Digital Dönüştürücü:<br />
- 1000 ksps Dönüşüm Oranı<br />
- Mevcut Uyku sırasında dönüşüm, Boşta<br />
• İki Analog karşılaştırıcı<br />
• 5V Toleranslı Giriş Pinler (dijital pinler sadece)</p>
<p><span style="color: #ff0000"><strong><span style="color: #339966">PIC32MX460F512L  100 bacaklı açıklayıcı şekil:</span></strong></span></p>
<p><span style="color: #ff0000"><strong>5 Volt Toleranslı Pinler:</strong></span></p>
<p><span style="color: #000000">Şekildede açıkça görüldüğü üzere <strong>KOYU</strong> renkli pinler 5volt toleranslı bacaklardır yani giriş çıkış işlemlerinde 5 volt  kullanılabilir.İşlemci 3volt ile çalışmaktadır.</span></p>
<p><span style="color: #000000">Diğer bacaklar 3 volt toleranslıdır.Genel pin açıklamalarından ziyade öne çıkanları yazdım.</span></p>
<p><img src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/PIC32.png" alt="PIC32" title="PIC32" width="700" height="742" class="alignnone size-full wp-image-275" /></p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/microchip-pic32-genel-bilgiler-ornek-uygulamalar/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PIC 18F2520 ile 4.5 MHz Frekansmetre Yapıyoruz</title>
		<link>http://dergi.picproje.org/pic-18f2520-ile-4-5-mhz-frekansmetre-yapiyoruz</link>
		<comments>http://dergi.picproje.org/pic-18f2520-ile-4-5-mhz-frekansmetre-yapiyoruz#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:40:20 +0000</pubDate>
		<dc:creator>Fatih Erdem</dc:creator>
				<category><![CDATA[PicProje E-Dergi 2]]></category>
		<category><![CDATA[frekansmetre devresi]]></category>
		<category><![CDATA[pic18f2520]]></category>
		<category><![CDATA[pic18f2550 ccs c]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=168</guid>
		<description><![CDATA[Merhaba arkadaşlar.  Bu projede 18F2520 nin timer1 ve timer3 modüllerini kullanarak 4.5 MHz e kadar 1 Hz hassasiyette ölçüm yapabilen TTL frekansmetre tasarlıyoruz.

Her şeyden önce frekansın tanımını hatırlayalım. Periyodik işaretlerin bir saniyede yaptığı salınım sayısına frekans denir. Frekans ölçüm işlemi saniyede yapılan salınımların sayılmasıyla yapılabileceği gibi iki salınım arasında geçen sürenin (periyot) ölçülmesiyle de [...]]]></description>
			<content:encoded><![CDATA[<p>Merhaba arkadaşlar.  Bu projede 18F2520 nin timer1 ve timer3 modüllerini kullanarak 4.5 MHz e kadar 1 Hz hassasiyette ölçüm yapabilen TTL frekansmetre tasarlıyoruz.<br />
<span id="more-168"></span></p>
<p>Her şeyden önce frekansın tanımını hatırlayalım. Periyodik işaretlerin bir saniyede yaptığı salınım sayısına frekans denir. Frekans ölçüm işlemi saniyede yapılan salınımların sayılmasıyla yapılabileceği gibi iki salınım arasında geçen sürenin (periyot) ölçülmesiyle de yapılabilir. Bu ikisi arasındaki kararımızı ölçüm yapmak istediğimiz işaretlerin ortalama frekansına göre verebiliriz. Düşük frekanslı işaretler için iki salınım arasında geçen sürenin ölçülmesi, yüksek frekanslı işaretler için saniyede yapılan salınımın ölçülmesi daha mantıklıdır. Biz de bu projede en az 1 Hz en fazla 4.5 MHz lik ölçüm yapmak istediğimizden saniyede yapılan salınımı sayma yöntemini kullandık. PIC 18F2520 yi seçmemizin yegane sebebi iki tane 16 bit timer a ihtiyaç duymamızdır.</p>
<p>Başlıkta da belirttiğimiz gibi mikrodenetleyici olarak PIC18F2550, dil olarak CCS C dilini kullandık.</p>
<p><strong>Mikrodenetleyici tarafından yapılması gereken işlemler:</strong></p>
<p><strong>1)</strong> Olabildiğince hassas bir saniyelik zaman tutmak.</p>
<p><strong>2)</strong> Bu bir saniye içerisinde gelen kenar sayılarını saymak.</p>
<p>Saydığımız işlemler o kadar temel işlemler ki artık her mikrodenetleyici de bu işlemleri yapacak donanım modülleri var. PIC 18F2520 nin donanım modüllerinden compare, timer1 ve timer3 modülleri bu iki işlem için fazlasıyla yeterli.</p>
<p>Timer1 ve Timer3 16 bitlik ve harici &#8220;clock&#8221; girişiyle(pin C0) arttırılabiliyorlar yani bu iki &#8220;timer&#8221; dan birini saniyede gelen yükselen kenarları saymak için kullanabiliriz. Biz timer1 i kullandık. Sadece T1CON &#8220;register&#8221;ındaki TMR1CS bitini lojik bir yaparak timer1 i harici &#8220;clock&#8221; ile çalışmaya hazır hale getiriyoruz. İkinci işlem için hazırlığımızı yaptık.</p>
<p>Sıra geldi bir saniyelik zamanın tutulmasına, bu işlem için timer3 ü kullandık. Genel olarak zaman tutma işlemini timer taşma kesmelerini sayarak yaparız. Mesela 16 bitlik bir timer 65535 e kadar artabilir ve 65536 da taşar. PIC i 20 MHz de çalıştırdığımızı varsayarsak her bir çevrim 200 ns olur ve 16 bitlik bir timer her 200nsx65535=13.107 ms de bir taşar(prescale veya postscale kullanmadığımızı varsayalım). Bu 13.107 ms leri sayarak daha geniş zaman dilimleri tutabiliriz veya timer i CCP nin compare modülü ile beraber kullanarak timer in 65535 e gelmeden daha önce bizim belirleyebileceğimiz bir değerde taşmasını sağlayabiliriz. Tam bir saniyelik zaman tutmak için kaç tane 13.107 ms saymanız gerekir? Cevabımız bir tamsayı değil. Bu yüzden timer3 ü &#8220;compare&#8221; modülüyle birlikte kullanıp her 10ms de bir taşmasını sağlayabiliriz. 10ms lik zaman dilimleriyle bir saniyelik zaman elde edebiliriz. Bunu yapmak için:</p>
<p>CCP modülünü timer3 için kurmak ve CCPRH, CCPRL &#8220;register&#8221; larına 10ms için uygun &#8220;compare&#8221; değerini yazmamız gerekiyor. 18F2520 de iki tane CCP modülü var, CCP1 ve CCP2. Biz CCP2 yi kullandık. CCP2 yi hangi modda kullanacağımızı CCP2CON &#8220;register&#8221; ıyla belirliyoruz. Her compare olayında Timer3 ün resetlenmesini istediğimizden:<br />
CCP2M3:M0 bitlerini 1011 yapıyoruz <em>= Compare mode, trigger special event; reset timer; CCP2 match starts A/D conversion (CCPxIF bit is set)</em> olarak belirliyoruz. Compare değerimizin 10ms olmasını istiyorduk. 200ns çevrim süresinin 50000 tane sayması gerekir ki 10ms süresi geçsin. 50000 in hex karşılığı 0xC350 olduğundan CCP2H &#8220;register&#8221;ına 0xC3 ve CCP2L &#8220;register&#8221;ına 0&#215;50 değerlerini yazıyoruz. Böylece CCP2 modülünü compare modda kullanmak üzere hazırladık. Şimdi de CCP2 modülümüz için hangi timer in kullanılacağını söyleyelim:T3CON &#8220;register&#8221;ındaki T3CCP2(6. bit) i lojik bir yaparak CCP modülleri için Timer3 ü kaynak gösteriyoruz. Evet, şu anda timer3 ü başlattığımızda (T3CON un ilk biti TMR3ON u lojik bir yaptığımızda) timer3 her 10ms de bir resetlenecek ve CCP2IF bayrağını lojik bire çekerek(compare interrupt) taşmadan bizi haberdar edecek. Böylece 10ms lik zaman dilimlerimizi hazırlamış olduk. Bu zaman dilimlerinden 100 tane sayarak 1 saniyelik zaman elde edebiliriz. Birinci işlem için de hazırlığımızı tamamlamış olduk. Bu iki işlemin özeti aşağıdaki resimde görülmektedir:<br />
<img class="alignnone size-full wp-image-223" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/14.gif" alt="Resim1" width="507" height="262" /></p>
<div>
<p class="bilgi"><strong>Peki burda elde ettiğimiz bir saniye tam olarak bir saniye mi?</strong><br />
Mesela 10us eksik olsa 1MHz lik bir kaynağı 10Hz, 4MHz i 40Hz eksik ölçeriz. Ne kadar doğru bir saniye sorusu bizi ne kadar doğru 10ms ler sorusuna bu soru da ne kadar doğru 200 ns ler sorusuna bu soru da ne kadar doğru 20Mhz lik osilasyon sorusuna götürüyor.<br />
Hassas bir frekansmetre için ince bir ayar yapmamız gerekiyor. Devre şemasında da görüleceği üzere kristal ile toprak arasında trimmer kondansatör kullanıldı. Katalogda tavsiye edilen kapasite değerleri var ancak tam 20 MHz lik osilasyon garanti edilemiyor dolayısıyla trimmer kondansatör yardımıyla 20MHz i bizim bulmamız gerekiyor. Frekansmetreyi bitirdikten sonra kalibre edilmiş bir sinyal jeneratörü veya başka bir frekansmetre kullanarak kendi ölçüm aletimizi kalibre edebiliriz. Sinyal jeneratöründen 4.5MHz lik 0-5V arasında değişen herhangi bir işaret ürettikten sonra kendi frekansmetremizi 4.5MHz gösterecek şekilde trimmer kondansatörümüzle ayarlıyoruz. Bu işlemi bir defalığına yapacağız ve 1Hz çözünürlüklü frekansmetremiz kullanıma hazır olacak.</p>
</div>
<p>Sıra geldi bu iki işlemin koordineli bir şekilde yapılmasına:<br />
Timer1 ve Timer3 ü sıfırlıyoruz. Timer1 i aktif ettikten hemen sonra Timer3 ü başlatıyoruz. 100. compare kesmesi geldiğinde(bir saniye dolduğunda) timer1 i pasif ediyoruz, ölçüm tamamlandı. Sonucu ekrana gönderiyoruz. Aynı işlemi sonsuz döngüde tekrarlıyoruz yani ölçüm her bir saniyede yenileniyor.</p>
<p>Bu bir saniye içerisinde frekansın 65535 den büyük olduğu durumlarda timer1 taşacaktır. Timer1 taşmalarını sayıyoruz ve frekansı taşma sayısıyla beraber hesap ediyoruz. Kaynak kod oldukça kısa ve yazının sonunda verildi, burada önemli kısmına bakalım:</p>
<pre class="brush: cpp;"> 

start_new();
output_high(pin_C3);
while(1){
//sonsuz dongu
}// main
void start_new(){
t1tasma=0;
compared=0;
TMR1H=0x00;
TMR1L=0x00;
TMR3H=0x00;
TMR3L=0x00;
T1ON=1;
T3ON=1;
}
#INT_CCP2
void compare(){
CCP2IF=0;
compared++;
if(compared==100){
   T1ON=0;
   compared=0;
   value=get_timer1();
   value=value+t1tasma*65535;
   if(value&gt;4500000){
      printf(lcd_putc,&quot;\f FREQUENCY:\n&gt;4500000(max) Hz&quot;);
   }
   else{
      printf(lcd_putc,&quot;\f FREQUENCY:\n %Lu Hz&quot;,value);
   }
   start_new();
}
}
#INT_TIMER1
void timer1_tasti(){
TMR1IF=0;
t1tasma++;
}
</pre>
<p>Devre şemamız:<br />
<img class="alignnone size-full wp-image-223" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/2.gif" alt="Resim2" /></p>
<div><strong>Olası Geliştirmeler</strong></div>
<p>4.5MHz lik üst sınır PIC in donanımı ile alakalı, yani bu üst sınır bir donanım sınırlaması. Timer1 propagasyon gecikmeleri sebebiyle daha hızlı artamamaktadır, aslında bu sınır 5MHz e kadar çıkabiliyor ancak biz güvenlik açısından 4.5MHz de durduk. İncelediğim frekansmetrelerde çeşitli bölücü entegreler kullanılarak ölçüm aralığı genişletilmiş ancak hata da artıyor tabii.</p>
<p>Bu haliyle frekansmetremiz sadece C0 pininin müsade ettiği voltaj seviyesindeki işaretlerin frekansını ölçebilmektedir(sinyal şeklinden bağımsız olarak). Bu seviyeler de lojik0 için 0-1 V arası lojik1 için 4V-5.5V arası. Bu da tabi frekansmetrenin kullanım alanını kısıtlamaktadır. Bu çalışmanın sonunda tepeden tepeye 100mV ile 300V arasında değişebilen işaretleri TTL seviyesine dönüştürebilmek için bir devre tasarlamak için uğraştım ancak pek istediğim gibi çalışmadığından burda yayınlamadım. Eski multimetrelerdeki gibi kademe kademe ölçüm yapılabilir ancak bugünün frekansmetreleri şehir şebekesini de 1V tepe değerli işaretleri de kademe değişikliği yapmaksızın ölçebiliyor. Bu devre aklımın bir köşesinde duruyor, fırsat bulur ve yapabilirsem yayınlayacağım. Sizden gelen önerilere de açığız <img src='http://dergi.picproje.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p class="dikkat"><strong>NOTLAR</strong><br />
Arkadaşlar ben bu çalışmayı kullandığım simülasyon programlarında hatasız olarak simüle edemedim. Proteus, MPLAB veya PIC18 Simulator IDE de karşılaşacağınız durumlar sizi şaşırtmasın, kod gerçek bir PIC te gayet düzgün çalışmaktadır. Proteus önceki frekansmetrelerde doğru yapmasına rağmen bu çalışmada ölçümü yanlış yapıyor; saydığım diğer iki programın birinde timer3 16bit modda çalışmazken diğer programda compare mode aktif olmadı, bunları bu programların “bug” ı olduğunu düşünüyorum. En sonunda gerçek bir PIC de deneme yapma kararı aldım ve frekansmetreyi düzgün çalıştırabildim.</p>
<p>Çalışmanın kaynak kodunu ve proteusta çizilmiş devre şemasını <a href="http://dergi.picproje.org/wp-content/dosyalar/2009/07/18F2520_frekansmetre.rar" target="_blank">bu bağlantıdan</a> indirebilirsiniz. İyi çalışmalar dilerim.</p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/pic-18f2520-ile-4-5-mhz-frekansmetre-yapiyoruz/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PIC18F452  CCS C Analog Saat Glcd-320&#215;240</title>
		<link>http://dergi.picproje.org/pic18f452-ccs-c-analog-saat-glcd-320x240</link>
		<comments>http://dergi.picproje.org/pic18f452-ccs-c-analog-saat-glcd-320x240#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:33:09 +0000</pubDate>
		<dc:creator>ahmet2004</dc:creator>
				<category><![CDATA[PicProje E-Dergi 2]]></category>
		<category><![CDATA[ccs c glcd]]></category>
		<category><![CDATA[DS1307]]></category>
		<category><![CDATA[glcd saat]]></category>
		<category><![CDATA[grafik lcd saat]]></category>
		<category><![CDATA[pic18 serisi ccsc]]></category>
		<category><![CDATA[pic18f452 ccs c]]></category>
		<category><![CDATA[wg320x240 Glcd]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=203</guid>
		<description><![CDATA[Pic18F452  CCS c ve 320&#215;240 GLCD ile hazırlanmış Analog saat uygulamasıdır.Devre 4xPLL kullanılarak 40 Mhz de çalışmaktadır.Çok basit bir devredir.Hiç bir kritik malzemesi yoktur.
Ds1307 dn okunan saat biligleri kullanılarak grafik oluşturulur.Hazır CCS c kütüphaneleri kullanılmıştır.

Malzemeler:

PIC18F452
DS1307
3V pil
2&#215;4k7
wg320&#215;240 Glcd
10Mhz xtal

 Yapılışı:
Ds1307 i2c kullanarak saat ve tarih bilgisini displeyde yazı ve şekil olarak gösterilmektedir.
Pic18F452 için özellikle maksimum frekans seçilmiştir Glcd&#8217;in daha sağlıklı çalışabilmesi [...]]]></description>
			<content:encoded><![CDATA[<p>Pic18F452  CCS c ve 320&#215;240 GLCD ile hazırlanmış Analog saat uygulamasıdır.Devre 4xPLL kullanılarak 40 Mhz de çalışmaktadır.Çok basit bir devredir.Hiç bir kritik malzemesi yoktur.<br />
Ds1307 dn okunan saat biligleri kullanılarak grafik oluşturulur.Hazır CCS c kütüphaneleri kullanılmıştır.<br />
<span id="more-203"></span></p>
<p><strong>Malzemeler:</strong></p>
<ul>
<li>PIC18F452</li>
<li>DS1307</li>
<li>3V pil</li>
<li>2&#215;4k7</li>
<li>wg320&#215;240 Glcd</li>
<li>10Mhz xtal</li>
</ul>
<p> <strong>Yapılışı:</strong></p>
<p>Ds1307 i2c kullanarak saat ve tarih bilgisini displeyde yazı ve şekil olarak gösterilmektedir.<br />
Pic18F452 için özellikle maksimum frekans seçilmiştir Glcd&#8217;in daha sağlıklı çalışabilmesi için.<br />
Pic18f452 nin çoğu bacağı boştadır.Farklı ekler veya düzenlemeler yapılabilir. Temel bir konu teşkil etmesi bakımından iyi bir örnek olduğunu düşünüyorum.</p>
<p>Ek özellik eklemek ve diğer konularda yardım için <a href="http://www.picproje.org">www.picproje.org</a> adresini ziyaret edebilirsiniz.</p>
<p><strong>Devre Şeması:</strong></p>
<p><a href="http://dergi.picproje.org/wp-content/dosyalar/2009/07/sema_s.png" rel="lightbox[203]"><img class="alignnone size-large wp-image-204" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/sema_s-1024x723.png" alt="sema_s" width="1024" height="723" /></a></p>
<p> </p>
<p>Şemada herşey açıkça belirtilmiştir.</p>
<p><strong>Ek olarak şunlar yapılabilir:</strong></p>
<p>-buton eklenebilir.</p>
<p>-PC seri port kullanarak saat ve tarih bilgileri alınabilir.</p>
<p>-Menü sistemi ile ratary swich kullanılarak daha rahat ayarlamalar yapılabilir.</p>
<p><strong>Devrenin 3D görünüşü:</strong></p>
<p><a href="http://dergi.picproje.org/wp-content/dosyalar/2009/07/wg320x240k4.png" rel="lightbox[203]"><img class="alignnone size-full wp-image-205" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/wg320x240k4.png" alt="wg320x240k4" width="774" height="726" /></a></p>
<p><strong>DS1307.c deki pin ayarları şunlar ile değiştirildi.</strong></p>
<pre class="brush: cpp;">
#define RTC_SDA  PIN_B1
#define RTC_SCL  PIN_B0
</pre>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/pic18f452-ccs-c-analog-saat-glcd-320x240/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Hız Kontrol Üniteleri Sürücüler ve Motorlar</title>
		<link>http://dergi.picproje.org/hiz-kontrol-uniteleri-suruculer-ve-motorlar</link>
		<comments>http://dergi.picproje.org/hiz-kontrol-uniteleri-suruculer-ve-motorlar#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:25:50 +0000</pubDate>
		<dc:creator>aykut54</dc:creator>
				<category><![CDATA[PicProje E-Dergi 2]]></category>
		<category><![CDATA[enkoder]]></category>
		<category><![CDATA[hız kontrol]]></category>
		<category><![CDATA[igbt]]></category>
		<category><![CDATA[motor kontrol]]></category>
		<category><![CDATA[motor sürücüleri]]></category>
		<category><![CDATA[resolver]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=174</guid>
		<description><![CDATA[Bu yazımızda otomasyon sistemlerinin en çok kullanılan ürünlerinden frekans çeviricileri ve motorlar hakkında bilgi verilecektir. Frekans çevirici diğer bir adı ile hız kontrol ünitesi, sürücüler otomasyon da kullanılan lisan itibariyle inverterler. Motor ünitesine yol aldırabilen hız ve moment kontrolü sağlayan motorun frekans ve gerilimini kontrol eden  elektronik cihazlara sürücü (inverter)  hız kontrol ünitesi [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazımızda otomasyon sistemlerinin en çok kullanılan ürünlerinden frekans çeviricileri ve motorlar hakkında bilgi verilecektir. Frekans çevirici diğer bir adı ile hız kontrol ünitesi, sürücüler otomasyon da kullanılan lisan itibariyle inverterler. Motor ünitesine yol aldırabilen hız ve moment kontrolü sağlayan motorun frekans ve gerilimini kontrol eden  elektronik cihazlara sürücü (inverter)  hız kontrol ünitesi denir.<br />
<span id="more-174"></span></p>
<h3>Sürücü neden kullanılır</h3>
<p><span style="color: #0000ff;"><strong>1) </strong></span>Motora veya bu özelliklerde çalışan sistemlere hız kontrolü yapmak için.</p>
<p><span style="color: #0000ff;"><strong>2)</strong></span> Motor ilk kalkınma anında normal akımından 3kat daha fazla akım çeker sürücü motora giden akımı sınırlar motorun zarar görmesini engeller.</p>
<p><span style="color: #0000ff;"><strong>3) </strong></span>Çok hassas pozisyon lamada kullanılır.</p>
<h3>Sürücüler nerelerde kullanılır</h3>
<p>Vinç uygulamalarında, Asansörlerde, Konveyörlerde, Yürüyen merdivenlerde, Otomobil firmalarında, Tekstil,İnşaat çoğunluk  ile tüm otomasyon sistemlerinde sürücüler kullanılır.</p>
<p><strong>Sürücü( inverterin) blok diyagramı<br />
</strong></p>
<p><img class="alignnone size-full wp-image-176" title="blok-diagram_" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/blok-diagram_.png" alt="blok-diagram_" width="700" height="350" /></p>
<p><strong>Sürücü blok diyagramı sadeleşmiş diyagramı<br />
</strong></p>
<p><img class="alignnone size-full wp-image-177" title="basit diagram motor surucu" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/basit-diagram-motor-surucu.png" alt="basit diagram motor surucu" width="700" height="173" /></p>
<p>Sürücüler 1 faz ve 3 faz olmak üzere 2 farklı çeşitte çalışma gerilimi vardır. Yukarıdaki 3 fazlı sürücünün blok diyagramı olup sistemin işleyişine bir örnektir. Yukarda gösterilen blok diyagramın her ifadenin açıklamasını yapalım</p>
<p><span style="color: #0000ff;"><strong>MAINS CONNECTOR (</strong><em>Ana konektör </em><strong>) ;</strong></span> Şebeke enerjisi <strong>R,S,T</strong> 3 Faz bağlantısı.  Sürücü ( <em>inverterimizi</em> ) çalıştırmak için bu konektöre 3 Faz  R,S,T  bağlamalıyız.</p>
<p><span style="color: #0000ff;"><strong>OVER VOLTAGE PROTECTION ( </strong><em>yüksek voltaj koruması</em><strong> ) ;</strong></span> Şebeken gelebilecek ani pik ve harmoniklerin cihaza zarar vermemesi için  girişte bulunan sigorta ve <strong>VDR</strong>&#8216;lerin oluşturduğu elektronik devredir. Sistemin daha sağlıklı çalışabilmesi için sürücülerle birlikte şok bobini<br />
Sürücü giriş ve çıkış filtrelerinin kullanılması daha uygundur.</p>
<p><span style="color: #0000ff;"><strong>RECTIFER (</strong><em> Doğrultucu</em><strong> ) ;</strong> </span>Şebekeden gelen 3 Faz 380VAC doğrultarak DC 500V enerji dönüştürür.</p>
<p><span style="color: #0000ff;"><strong>DCLINK;</strong></span> Diğer bir ifadesiyle <strong>DCbara</strong> diyodun doğrultması ile üretilen <span style="color: #ff0000;"><strong>500VDC</strong></span> gerilimini DCbara kondansatörüne uygulanmasıdır diğer bir adı DCbara kondansatörü sürücüyü bu hat ile kendi içindeki sistemleri beslemek için kullanılır. <strong>DCLINK</strong> gerilimi ile  DC gerilimdeki diğer elektronik cihazları çalıştırabilinir.</p>
<p><span style="color: #0000ff;"><strong>BREAK CHOPPER ( </strong><em>Fren kıyıcı </em><strong>) ;</strong></span> Kondansatörün + ucundan beslemesini alır, sürücüdeki  görevi motorun ani kalkma ve durmalarında <strong>DCLINK</strong> gerilimi yaklaşık <span style="color: #ff0000;"><strong>900VDC</strong></span> gerilime yükselir  bu gerilim artması sürücüye zarar verebilir. Fren kıyıcı devresi ile fazla olan bu <span style="color: #ff0000;"><strong>400VDC</strong></span> gerilim kendi üzerine alır ve sistemin zarar görmesini engeller.</p>
<p>Genelde bu tüp durumlarda Sürücüyle birlikte firen direncide kullanılması gerekmektedir bu direnç bildiğimiz dirençler gibi değildir. Yüksek güç ve yüksek çalışma gerilimine sahiptir.</p>
<p><span style="color: #0000ff;"><strong>OUTPUT STAGE (</strong><em>Çıkış katı</em><strong>) ;</strong></span> Sistemin en önemli aygıtı olup en hassas elemanıdır. Breakchopper  devresi üzerinden geçen <strong> DCLINK</strong> gerilimi +Besleme gerilimini Collector pininden, &#8211; Besleme gerilimini Emiter pininden alır, Çıkış katı ( <em>IGBT</em> ) tarafından tekrar AC enerjiye dönüştürülür, dönüştürülen AC  enerji 3 fazlı motorun <strong>U,V,W</strong> sargı uçlarına uygulanır.</p>
<p><span style="color: #0000ff;">Kısaca özetler isek;</span> Sürücünün girişine 3Faz 380VAC uygulanıp köprü diyot ile DC 500V çevrilip , tekrar çıkış katın da IGBT ile 380VAC çevrilir.</p>
<h3>IGBT  Nedir ?</h3>
<p><span style="color: #0000ff;"><strong>IGBT ;</strong></span> Insulated Gate Bipolar Transistör (<em>Geyt&#8217;i yalıtılmış bipolar transistör</em>) Bipolar transistörlerin ve metal oksit yarı iletkenli <strong>MOSFET</strong> avantajlarını birleştiren devre elemanıdır. Gate, Collector,Emiter  olmak üzere 3 uçtan oluşmaktadır.</p>
<p>Bir devre yardımıyla açıp kapatabileceğimiz diyot gibi geyt ucu ile kontrol edebileceğimiz mosfet gibi kullanılabilinir. <strong>IGBT</strong> devreyi tetikleme açısından mosfet gibi güç iletimi açısından  bipolar transistör gibi davranır. <strong>IGBT MOSFET</strong> gibi voltaj kontrollü çalışırken<strong> BJT</strong> gibi yüksek akımlarda çalışır.</p>
<p><strong>IGBT elemanının sembolü </strong></p>
<p><img class="alignnone size-full wp-image-178" title="igbt" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/igbt.png" alt="igbt" width="449" height="281" /></p>
<p><strong>Semikron  SKM75GB176D IGBT</strong></p>
<p><img class="alignnone size-full wp-image-179" title="igbt-2" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/igbt-2.png" alt="igbt-2" width="700" height="265" /></p>
<h3>IGBT  Nasıl  çalışır</h3>
<p><strong>IGBT </strong>diğer transistör modellerin den  <strong>BJT, MOSFET</strong> gibi   yapıya sahip bir elemandır. <strong>IGBT</strong> yüksek akım ve gerilim de çalışır <strong>IGBT</strong> hızlı tetikleme özelliğinden dolayı sürücü ve <strong>UPS</strong> sistemlerinde kullanılır.</p>
<p>Tetikleme kartından gelen palsler Geyt ucuna uygulanır.  <strong>C-E</strong> akım geçişi olur dolayısıyla çok hızlı açılıp kapanabilen bir anahtar görevi görür.</p>
<p><span style="color: #0000ff;"><strong>Yanmış bir IGBT;</strong></span> <strong>IGBT</strong>&#8216; ler genel olarak  şu sebeplerden dolayı arızalanır; Sürücü inverter girişi nominal gerilimden fazla gerilim gelmesi sonucu <strong>IGBT</strong> <span style="color: #ff0000;"><strong>C</strong></span> ucu zarar görmektedir. Ani gerilim yükselmesi yada düşmesi sonucu <strong>IGBT</strong> arızalanır, çıkışa bağlanan yükün çektiği akım fazla ise IGBT arızalanır örnek verecek olur isek; sistemde kullanılan motor mekanik sıkışmadan dolayı zorlanacak ve motor sürekli akım çekecek  sürücünün çıkışları bu akımı uzun süre kaldıramayacak ve sonunda<strong> IGBT U,V,W</strong> pinlerinde yüksek akımdan dolayı bir arıza görülecektir ve <strong>IGBT</strong> bozulacaktır. <strong>IGBT</strong> içersinde <strong>TF</strong> (<em>termistör</em>) sıcaklık algılayıcı eleman vardır. Örneğin yukarıdaki <strong>IGBT</strong> <span style="color: #3366ff;">80C</span> çalışma  ortamına kadar sorunsuz çalışır, ortam</p>
<p>Sıcaklığı <span style="color: #3366ff;">80C</span> geçtiği zaman <strong>TF</strong> bozulur bu durumda <strong>IGBT</strong> elemanı içersindeki elektronik kartta, TF devresinde bir patlama olacaktır buda <strong>IGBT</strong> bozacaktır. <strong>IGBT</strong> bir bozulma meydana gelirse kesinlikle tamir edilemez. <strong>IGBT</strong> komple bir modüldür.</p>
<p><img class="alignnone size-full wp-image-180" title="yanik igbt" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/yanik-igbt.jpg" alt="yanik igbt" width="573" height="264" /></p>
<h3>SÜRÜCÜ (inverter) Çeşitleri</h3>
<p>Piyasada <strong>ASENKRON</strong> ve <strong>SERVO</strong> olmak üzere 2 çeşit sürücü kullanılmaktadır. Her birinin kullanım alanı ve çalışma şekli taşıdığı görev farklıdır.</p>
<p><span style="color: #3366ff;"><strong>ASENKRON SÜRÜCÜ; </strong></span>Aşağıdaki sürücü 2 kısımdan oluşmaktadır 1.güç ünitesi IGBT yüksek gerilimin bulunduğu ünite 2. Kontrol ünitesi, çoğu sürücüde sürücü üzerinde keypad, lcd, display, kontrol paneli bulunmaktadır.</p>
<p>Sürücü çalışmasını, hangi ayar ve özelliklerde kullanmak istersek sürücü kontrol ünitesi üzerinden sürücünün kullanmak istediğimiz özelliklerini ayarlıyoruz. Kontrol ünitesi ile güç ünitesi birbiriyle haberleşir. Aşağıdaki sürücü ile sadece AC motolar sürülebilir hız kontrolü yapılabilinir, Servo motorlar AC sürücü ile kontrol edilemez. AC Sürücüler sadece açık çevrimde çalışır.</p>
<p>AC Sürücülerin çıkış uçları olan U,V,W AC Motorun sargı uçlarına  istenildiği gibi bağlanabilir. Sürücülerin PC ile haberleşmesi için RS232-RS485 bağlantısı vardır. Ayrıca sürücüler birbiriyle haberleşmeleri için çeşitli haberleşme protokolleri vardır.</p>
<p>Bunlar; <span style="color: #800000;"><span style="text-decoration: underline;">SBUS</span>, <span style="text-decoration: underline;">MODBUS</span>, <span style="text-decoration: underline;">INTERBUS</span>, <span style="text-decoration: underline;">CANBUS</span>, <span style="text-decoration: underline;">PROFIBUS</span></span> sürücüler <strong>PLC</strong> üniteleriyle de haberleşebilir, internet üzerinden ağ sistemiyle de haberleşebilir.</p>
<p><strong>Asenkron Sürücü </strong></p>
<p><img class="alignnone size-full wp-image-181" title="suruculer" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/suruculer.jpg" alt="suruculer" width="369" height="326" /></p>
<p><span style="color: #0000ff;"><strong>AC MOTOR;</strong></span> Daha kalın sargıya sahip, istenilen güçlerde yapılabilir, fan soğutmalı ve bobin sargılıdır.</p>
<p><img class="alignnone size-full wp-image-182" title="ac motor" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/ac-motor.png" alt="ac motor" width="480" height="360" /></p>
<h3>AC Motor Kullanım Yerleri</h3>
<p>Vinç, Asansör,Tekstil,İnşaat,İçecek alanında kullanılır.</p>
<p><strong>Açık Çevrim Nedir ? </strong></p>
<p><img class="alignnone size-full wp-image-184" title="acik cevrim2" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/acik-cevrim2.png" alt="acik cevrim2" width="518" height="325" /></p>
<p><strong>Açık Çevrim Gösterimi</strong></p>
<p><img class="alignnone size-full wp-image-185" title="acik cevrim gosterimi" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/acik-cevrim-gosterimi.png" alt="acik cevrim gosterimi" width="600" height="100" /></p>
<p>Sürücü motoru istediği şekilde sürer ama yaptığı işin doğruluğunu takip etmez örnek verecek olur isek sürücü motora 1500d/dk dönmesini   istedi motor bu bilgiyi aldı ama gerçekten motor 1500d/dk dönüyor mu  yoksa dönmüyor mu sürücü bu işlemi takip etmez  yapılan işlemi doğru olarak kabul eder. Motora müdahale etmez.</p>
<p><span style="color: #0000ff;"><strong>SERVO SÜRÜCÜLER  (</strong><em>SENKRON</em><strong>) ;</strong></span> Servo diğer bir anlamı köle demektir bu sürücü asenkron sürücüye göre  daha hassas çalışma özelliğine sahip olup çok hassas pozisyon lama uygulamalarında tercih edilir. Servo sürücüleri kullanmak için mutlaka servo motor kullanılmalıdır, ya da Asenkron motora Enkoder yada Resolver geribesleme elemanı kullanılarak Servo motormuş gibi iş yaptırabilinir.</p>
<p><strong>Servo Sürücü</strong></p>
<p><img class="alignnone size-full wp-image-186" title="servo surucu" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/servo-surucu.jpg" alt="servo surucu" width="320" height="240" /></p>
<p>Servo sürücüde de yine asenkron sürücüde olduğu gibi kontrol ünitesi ve güç ünitesi bulunmaktadır ve aynı şekilde servo sürücüdede <em>kontrol paneli, lcd, display, keypad</em> bulunmaktadır. Servo sürücülerde Servo motor kullanılmaktadır. Servo motorlarda Motor miline resolver veya enkoder ya da harici bir enkoder bağlanabilir bütün servo motorlarda bu olmak zorundadır servo motorlar kapalı çevrimde çalışır kapalı çevrimde döngüyü devam ettiren cihazlar resolver, enkoderdir.</p>
<p><strong>Servo Motor</strong></p>
<p><img class="alignnone size-full wp-image-187" title="servo motorlar" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/servo-motorlar.png" alt="servo motorlar" width="473" height="379" /></p>
<p><img class="alignnone size-full wp-image-188" title="servo motor acilim" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/servo-motor-acilim.jpg" alt="servo motor acilim" width="590" height="327" /></p>
<p>Güçleri belli bir yere kadardır, Yüzeysel soğutmalıdır, Mıknatıslı rotor ve resolveri vardır, Dinamik ve kararlı çalışır, Mıknatıs ile dönen alan sağlar, Hacmi küçüktür, Isınmaya karşı dayanaklıdır.</p>
<h3>Servo Motor Kullanım Alanları</h3>
<p>Robot kollarda, Eksenli uygulamalarda, Otomobil alanında kullanılır.</p>
<p><strong>Kapalı Çevrim</strong></p>
<p><img class="alignnone size-full wp-image-189" title="kapali cevrim" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/kapali-cevrim.jpg" alt="kapali cevrim" width="590" height="144" /></p>
<p><strong>Kapalı Çevrim Gösterimi</strong></p>
<p><img class="alignnone size-full wp-image-191" title="kapali cevrim gosterimi2" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/kapali-cevrim-gosterimi2.png" alt="kapali cevrim gosterimi2" width="600" height="100" /></p>
<p>Sürücü motoru sürerken bir yandan motora bağlı olan enkoder veya resolveri de kontrol eder  sürülen motor enkoder veya resolver üzerinden veri alınıp sürücüye tekrar bir geri besleme yaptırılır.</p>
<p><strong>Örnek verecek olur isek;</strong> Servo sürücü motora 750d/dk dönmesini istiyor  sürücü den start verildiği zaman motor dönmeye başlayacak bir yandan da servo motora bağlı resolver veya enkoder den sürücüye bilgi gidecek motor gerçekten 750d/dk dönüyor mu? Eğer bu işlemler de doğru sonuçlar çıkarsa kapalı çevrim doğru yapılmıştır, Eğer oldu ki  sürücü motorun daha düşük veya daha yüksek bir devirde çalıştığını görür ise burada kapalı çevrim tam manası ile doğru yapılamamıştır, muhtemel sorun enkoder veya resolver  motor milinden aldığı bilgiyi yanlış algılıyor  ve sürücüye yanlış bir bilgi iletiyor .</p>
<p>Kapalı çevrimin olmasa olmazı enkoder ve resolver</p>
<p><strong>Resolver; </strong></p>
<p><img class="alignnone size-full wp-image-192" title="resolver" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/resolver.jpg" alt="resolver" width="483" height="230" /></p>
<p><strong>RESOLVER</strong> Servo motorda kullanılan ve kapalı çevrim sisteminde kullanılan motor miline bağlanan geri besleme elemanıdır. Resolver motorun milinin iç kısmına birebir takılır motor dönmeye başladığında resolver içindeki bobinde döneceğinden dolayı motorun o andaki pozisyon ve hız bilgisini sürücüye iletir. Resolver analog olarak çalışır. Resolver bobinlerin yaptığı açıya göre çalışır. Resolver motor çalıştığı zaman dış etkilerden parazitlerden cihazın ürettiği EMC den etkilenebilir bu durum resolvere zarar verebilir resolverin zarar görmemesi için bu tip cihazları bağlamada ekranlı kablo kullanılmalıdır bu kablo iç tarafı çok telli dışında ise toprak bağlantısı yapılabilecek bir kablodur. Ekranlı kablo kullanılarak resolver EMC den etkilenmemiş olur.</p>
<p><strong>Enkoder</strong></p>
<p><img class="alignnone size-full wp-image-193" title="enkoder" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/enkoder.jpg" alt="enkoder" width="420" height="352" /></p>
<p><span style="color: #0000ff;"><strong>ENKODER;</strong></span> Kapalı çevrim sistemin de kullanılan ve servo motorların miline bağlanan dijital bir elemandır. Enkoder dijital sistem ile çalışır, içyapısında pals sitemi vardır, içyapısında elektronik bir kart vardır algılayıcılarda oluşmaktadır. Motorun yaptığın hareketin kaç devir<br />
ve hangi pozisyonda kaldığını sürücüye bildirir. 1024.2048.4096 pals sistemli enkoderler mevcuttur. Üstteki şekil enkoderin görünümü ve enkoderin içyapısındaki kart ve dişli sistemi. Aynı şeklide enkoderin de EMC ve diğer dış etkenlerden zarar görmemesi için Ekranlı kablo kullanılması gerekmektedir.</p>
<p><strong>Enkoder ve Resolver arasındaki farklar;</strong></p>
<p><span style="color: #0000ff;"><strong>1)</strong></span> Resolver elektrik kesildiği zaman pozisyonunu bulunduğu konumu unutur. Enkoder elektrik kesilse dahi bulunduğu konumu ve  sistemdeki pozisyonunu unutmaz.</p>
<p><span style="color: #0000ff;"><strong>2)</strong></span> Resolver sin ve cos sinyaller ile çalışır. Enkoder kare dalga ile çalışır, Resolver çalışma prensibi analog , Enkoder çalışma prensibi dijitaldir.</p>
<p><span style="color: #0000ff;"><strong>3) </strong></span>Resolver  parasal yönden daha ucuzdur, Enkoder daha pahalıdır.</p>
<p><span style="color: #0000ff;"><strong>4)</strong></span> Resolver motor miline bağlanır, Enkoder motor miline ve dışarıda harici olarak bir hatta bağlanabilir.</p>
<h3>Sürücüleri Devreye Alma</h3>
<p>İlk önce kuracağımız sistemi iyi tayin etmemiz gerekecektir kuracağımız sisteme göre sürücü ve motorların gücü değişecektir. Sürücüleri devreye alırken Şebeke giriş filtresi ve şok bobini sürücünün girişine bağlanır böylece sürücüye daha iyi bir <strong>EMC</strong>&#8216; siz enerji uygulanmış olur. Sürücü çıkışlarına da Şebeke çıkış filtresi ve şok bobini bağlanmalıdır sürücünün ürettiği gereksiz parazitli enerji motora zarar vermesini engellemek için çıkış şebeke şok bobini ve çıkış filtresi bağlanması gerekir. Sistemin topraklama bağlantısı iyi yapılması gerekir.</p>
<p>Bu durumlar göz önünde bulundurulur ise sistem daha sağlıklı çalışır, aksi takdirde yukarda anlatılanların bir ya da bir kaçı yapılmayacak olur ise sistem belli bir çalışma zamanından sonra arızaya, yada hiç kullanılmayacak özelliğe gelebilir.</p>
<p>Bir sonraki dergide görüşmek dileğiyle, sağlıcakla kalın. <strong>Aykut YILMAZ</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/hiz-kontrol-uniteleri-suruculer-ve-motorlar/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>
		<item>
		<title>Pic ile PS/2 Klavye Kullanımı</title>
		<link>http://dergi.picproje.org/pic-ile-ps2-klavye-kullanimi</link>
		<comments>http://dergi.picproje.org/pic-ile-ps2-klavye-kullanimi#comments</comments>
		<pubDate>Mon, 20 Jul 2009 17:22:01 +0000</pubDate>
		<dc:creator>FxDev</dc:creator>
				<category><![CDATA[PicProje E-Dergi 2]]></category>
		<category><![CDATA[fxdev]]></category>
		<category><![CDATA[klavye kullanımı]]></category>
		<category><![CDATA[lcd kütüphane]]></category>
		<category><![CDATA[pic klavye]]></category>
		<category><![CDATA[ps2 haberleşme]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=194</guid>
		<description><![CDATA[Pic ile PS/2 klavye Kullanımı hakkında detaylı bir makale. Klavyenin çalışma prensibi bağlantı uçlarının açılımları data transferleri hakkında bilgiler ve C dili ile hazırlanmış kütüphane dosyaları örnek yazılım uygulama görüntüleri


Tarihçesi: İlk kez yazı makinesinin mucidi olan Christopher Latham Sholes tarafından 1867’de ortaya çıkan klavye birimi o günden günümüze kadar teknolojiye ayak uydurması dışında pek bir [...]]]></description>
			<content:encoded><![CDATA[<p>Pic ile PS/2 klavye Kullanımı hakkında detaylı bir makale. Klavyenin çalışma prensibi bağlantı uçlarının açılımları data transferleri hakkında bilgiler ve C dili ile hazırlanmış kütüphane dosyaları örnek yazılım uygulama görüntüleri<br />
<span id="more-194"></span></p>
<p><img class="alignnone size-full wp-image-202" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/ps2key.jpg" alt="ps2key" width="600" height="214" /></p>
<p><strong>Tarihçesi:</strong> İlk kez yazı makinesinin mucidi olan <a title="Christopher Latham Sholes (d. 14 Şubat 1819 - ö. 17 Şubat 1890) 1867 yılında gerçek anlamda ilk daktiloyu ve günümüzde halen kullanılar Q klavyeyi icat eden ABD'li mucit" href="http://tr.wikipedia.org/wiki/Christopher_Latham_Sholes" target="_blank">Christopher Latham Sholes</a> tarafından 1867’de ortaya çıkan klavye birimi o günden günümüze kadar teknolojiye ayak uydurması dışında pek bir değişikliğe uğramadı. Bugün bir çok bilgisayarda kullanılan Q klavyenin de mucidi olan Sholes, bu kadar karmaşık harf dizilimini mühendisliğe aykırı olarak yazıların daha yavaş yazılması dolayısı ile makinelerinin daha az bozulması için oluşturdu.</p>
<p><strong>Çalışması: </strong>Klavye çalışma mantığı oldukça basittir. Her tuş basımında klavye kendine has 8 bitlik özel tuş bilgilerini gönderir, bu kodlar çözülerek hangi tuşun basıldığı kararı alınır ve kullanılır. Basılan tuş dahilinde hangi bilgilerin bizlere gönderildiği aşağıdaki tablolardan görülebilir.</p>
<p><span style="color: #0000ff">Şekil 1 &#8211; Klavye Özel Kodları</span></p>
<p><img class="alignnone size-full wp-image-196" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/ozel-kodlar.png" alt="ozel kodlar" width="587" height="256" /></p>
<p><strong>Bağlantı Şekli:</strong> Klavyeler çeşitli bağlantı şekillerine sahip olsalar da dünya çapında en çok kullanılan bağlantı şekillerinden biri <strong>DIN</strong> ya da <strong>PS/2</strong>’dir. Aşağıdaki şekilde PS/2 yapısının giriş birimi görülmektedir.</p>
<p><span style="color: #0000ff">Şekil 2 &#8211; PS/2 Bağlantı Şekli</span></p>
<p><img class="alignnone size-full wp-image-197" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/ps2-baglanti.png" alt="ps2 baglanti" width="300" height="307" /></p>
<p>Şekil-2’de de görüleceği üzere PS/2 yapısında 6 farklı bağlantı noktası bulunmaktadır. Sırasıyla kaç numaralı pinin ne işe yaradığını söyleyecek olursak;</p>
<ul>
<li>1- Data hattıdır</li>
<li>2- Boş hat, bağlantı yapılmayacak</li>
<li>3- GND, toprak hat ucudur</li>
<li>4- VDD, güç ucudur, +5V verilecek hattır</li>
<li>5- Clk ucudur, iletişim saati buradan verilir</li>
<li>6- Boş hat, bağlantı yapılmayacak</li>
</ul>
<p class="dikkat"><span style="color: #ff0000"><strong>Önemli not:</strong></span> <span style="color: #0000ff">Bu yapı giriş birimi olduğu için klavyeden direk hat çekilecekse, tam simetriğine göre işlem yapılmalıdır. Aksi takdirde klavyeniz zarar görebilir.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/pic-ile-ps2-klavye-kullanimi/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MMC &#8211; SD kart uygulaması</title>
		<link>http://dergi.picproje.org/mmc-sd-kart-uygulamasi</link>
		<comments>http://dergi.picproje.org/mmc-sd-kart-uygulamasi#comments</comments>
		<pubDate>Fri, 17 Jul 2009 15:29:12 +0000</pubDate>
		<dc:creator>arslan74</dc:creator>
				<category><![CDATA[PicProje E-Dergi 2]]></category>
		<category><![CDATA[Micro SD]]></category>
		<category><![CDATA[Mini SD]]></category>
		<category><![CDATA[MMC]]></category>
		<category><![CDATA[mmc haberleşme]]></category>
		<category><![CDATA[mmc protokol]]></category>
		<category><![CDATA[pic mmc sd]]></category>
		<category><![CDATA[SD Card]]></category>
		<category><![CDATA[SD Kart]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=171</guid>
		<description><![CDATA[MMC Haberleşme protokolü Bu bölümde, SD (Secure digital) kart haberleşmesi üzerinde duracağım

SD kart, MMC kartın gelişmiş biçimidir. SD kart, SPI haberleşme protokolüne desteklediği gibi, daha hızlı olan SD bus haberleşme protokolüne de sahiptir. Bu yazıda SD kart ile SPI haberleşme protokolüyle haberleşme yöntemini anlatılacaktır. PIC’ te donanımsal SPI vardır ve her iki kart tipi (MMC [...]]]></description>
			<content:encoded><![CDATA[<p><strong>MMC Haberleşme protokolü</strong> Bu bölümde, SD (Secure digital) kart haberleşmesi üzerinde duracağım<br />
<span id="more-171"></span></p>
<p><img class="alignleft size-full wp-image-241" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/mmc-sd-kartlar.png" alt="mmc-sd-kartlar" width="303" height="458" />SD kart, MMC kartın gelişmiş biçimidir. SD kart, SPI haberleşme protokolüne desteklediği gibi, daha hızlı olan SD bus haberleşme protokolüne de sahiptir. Bu yazıda SD kart ile SPI haberleşme protokolüyle haberleşme yöntemini anlatılacaktır. PIC’ te donanımsal SPI vardır ve her iki kart tipi (MMC ve SD) ile SPI üzerinden haberleşebilir. MMC kartlar piyasada SD karta göre çok yaygın olmadığı için, bu yazıda SD kartın SPI haberleşmesinden bahsedilecek.</p>
<p>SD kart iki haberleşme protokolü ile de haberleşebilir. İlki, SD Bus haberleşme protokolüdür. Bu protokolde her bir clock pulse’ ında 4 bit bilgi gönderilir. Bir byte iki pulse’ ta gönderilir. İkinci haberleşme protokolü ise SPI haberleşmesidir. SPI’ protokolünde, her clock pulse’ ında bir bit gönderilir/alınır. Bu yüzden SD bus haberleşme sistemi SPI’ a göre daha hızlıdır. SD kart ilk açılışta, elektrik verildiğinde otomatik olarak SD bus haberleşme protokolüne ayarlanmıştır ve doğrudan SD haberleşmesi yapılabilir. Ancak biz SPI haberleşmesi yapacağımız için, elektrik verildikten sonra SD haberleşme protokolünü SPI protokolüne geçirmek gerekmektedir. SPI protokolüne ayarlandıktan sonra tekrar SD bus protokolüne geçmek mümkün değildir, ancak elektriğini kesip tekrar elektrik verildiğinde SD bus modda haberleşebilinir.</p>
<p><img class="alignnone size-full wp-image-111" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/bolum.jpg" alt="bolum" width="700" height="4" /></p>
<p>SD kartın bacak bağlantıları aşağıdaki tabloda verilmiştir. Bacakların SD mod ve SPI moda göre anlamları belirtilmiştir. Kullanılmayan DAT1, DAT2 bacakları ve ayrıca DO bacağı bir dirençle Pull-Up’ a çekilmelidir.</p>
<p><img class="alignnone size-full wp-image-242" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/sd-kart-tablo.png" alt="sd kart tablo" width="700" height="307" /></p>
<p>SD kartın besleme voltajı 2,0 ile 3,6 volt arasındadır. Dolayısıyla, eğer PIC’ i 5 volt ile besliyorsanız, SD kart ile PIC’ i doğrudan haberleştiremeziniz. Bunun için araya logic level converter koymalısınız. Buna alternatif olarak, kendi PIC’ inizi de 3,3 volt ile beslerseniz, bu besleme voltajını hem PIC hem de SD kart için kullanabilirsiniz ve ara bir dönüştürücü koymanıza gerek kalmaz. Artık yeni çıkan PIC’ lerin çoğunda besleme voltajları 5 voltun altında olduğu için, bu projede besleme voltajı 3.3volt kabul edilmiştir. Tasarlanacak sistem de buna göre tasarlanacaktır. PIC seçiminde dikkat etmeniz gereken tek nokta, alacağınız uP’ ın donanımsal SPI’ a sahip olmasıdır. Ben bu proje için 40 pinli 18 serisi PIC kullandım. Bağlantılar gayet basit, aşağıda bacak bağlantıların tablosu var.</p>
<p><img class="alignnone size-full wp-image-244" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/sd-kart-tablo22.png" alt="sd kart tablo22" width="709" height="75" /></p>
<p><img class="alignnone size-full wp-image-245" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/sd-kart-tablo222.png" alt="sd kart tablo222" width="709" height="82" /></p>
<p>Tabloya dikkat ederseniz PIC ile SD kart arasındaki SDO ve SDI bacaklarının çapraz bağlandığını göreceksiniz. SD kartın SDO çıkışı open collector olduğu için çıkış’a pull-up koymayı unutmayın. SD kart daima slave konumundadır. PIC den istek geldikçe cevap verir.</p>
<p><strong><span style="color: #ff0000">PIC in SPI portonun ayarlanması:</span></strong></p>
<p>PIC’ i SD kartla donanımsal haberleşmeye hazır hale getirebilmek için SPI ayarlarının uygun bir şekilde ayarlanması gerekir.</p>
<p><strong>SPI ayarları:</strong></p>
<ul>
<li>Master mod.</li>
<li>SCK set low in IDLE state.</li>
<li>SDI input centered.</li>
<li>Clock Low to Hight.</li>
<li>Haberleşme hızı 250kHz göre ayarla. (1:64)</li>
</ul>
<p>SD kartlarda SPI haberleşmesi özel bir protokol ile yapılır. Bu protokol birçok komut içerir. Aşağıdaki tabloda bu komutlar verilmiştir. Görüldüğü gibi, komut sayısı çok fazladır. Ancak biz burada bütün komutları ele almayacağız. Örneğin<strong> CMD0, CMD1, CMD9, CMD10, CMD16, CMD17, CMD24, CMD41, CMD51</strong> gibi genel komutlarını ele alacağız.</p>
<p><img class="alignnone size-full wp-image-246" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/spi-bus.png" alt="spi bus" width="652" height="598" /></p>
<p>SPI haberleşmesinde SD kartın ayrıca CS (Card Select) bacağını kullanılır. SD kartın CS bacağı sıfıra çekildiğinde SPI haberleşmesi başlamış olur. Ama önce CS lojik 1 konumunda iken en az 74 tane clock sinyali gönderilmelidir, biz 80 tane göndereceğiz. CS bacağı sıfıra çekildikten sonra CMD0 (ilk RESET komutu) gönderilir ve cevap olarak 01h bilgisi gelirse, reset işlemi başarılı olmuş demektir. Aşağıda reset komutunun sinyal şeması görülmektedir.</p>
<p><img class="alignnone size-full wp-image-247" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/reset-mmcsd.png" alt="reset mmcsd" width="689" height="352" /></p>
<p>Komutlar<strong> 6 byte (48bit) </strong>uzunluktadır, ancak gelen cevapların uzunluğu komuta göre değişir. <strong>CMDx </strong>yapısında ilk bit sıfırla başlar, sonra Master (Host) tarafının ikinci biti 1 dir. SD kartın cevabında ise bu bit daima sıfırdır. Akabinde 6 bit command bilgisi bulunur. Bu kısım, CMD0 için sıfır veya CMD9 için dokuz olur. Komut uzunluğu 6 bit olduğu için en azla 64 tane komut tanımlanabilir.  Komut mesajının frame’ i aşağıdaki gibidir:</p>
<p><img class="alignnone size-full wp-image-249" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/commant-48bits.png" alt="commant 48bits" width="700" height="191" /></p>
<p>Frame’ in sonunda 7 bit CRC kontrol bilgisi de vardır. SPI haberleşmesinde, sadece CMD0 komutunun CRC bilgisini kullanılır. Diğer komutlarda CRC kontrolü devre dışı bırakılmıştır. Yani CRC datası gönderilir ama SD kart bu datayı dikkate almaz. Bu yüzden sadece CMD0’ın CRC bilgisini tek bir seferde, sabit olarak girebiliriz. Sonrasında bu CRC bilgisi değiştirilmeden FFh olarak kullanılabilir. CMD0 bir argüman almadığı için argument kısmı sıfırdır. CMD0 SD karta “Software Reset” atmak için kullanılır, CMD0’dan sonra kart IDLE (boşta bekleme) modunda olur.</p>
<p>Bu durumda CMD0 için 6 bayt veriler 40h,00h,00h,00h,00h,95h şeklinde olmadı. CMD0 CRC değeri 95h olduğu için bu değer yazıldı. Argüman uzunluğu 32 bit olduğu için 4 bayt ile temsil ediliyor.</p>
<p>CMD0 cevap olarak en fazla 9 okuma içerisinde 01h değeriyle cevap vermelidir. Gelen cevaptan sonra da CS bacağını bire çekerek okuma kapatılır. Okuma bittikten sonra ikinci bir komut göndermeden önce bekleme yapılır. Bunun için de bir okuma yaptığımızda bu bekleme yapılmış olur. Bu işlemden sonra CMD0 tamamlanmış olur. CMD0 komutundan sonra SD kart bekleme konumuna geçer. Kartı tekrar devreye almak için CMD1 komutunun verilmesi gerekmektedir. Ancak CMD1 veya CMD41 sonra karttan okuma ve yazma yapılabilir.</p>
<p>CMD0’ın C kodu ile nasıl kodlanacağına gelince; aşağıdaki gibi bir örnekle olabilir. Tabii ki böyle yapılacak diye bir kural yok, farklı şekillerde de yapılabilir. Ancak benim incelediğim değişik kaynaklı kodlarda, kodların hepsi birbirlerine birebir benzememektedir. Temelde, komutları icra eden bir fonksiyon vardır. Parametre olarak kimi sadece command ve argüman alır ve geri dönüş değeri iletmez, kimisinde geri dönüş değeri vardır, kimisinde parametre olarak CRC değeri de geçer. İncelediğim farklı algoritmaları birleştirerek şöyle bir kod yazdım;</p>
<p><img class="alignnone size-full wp-image-250" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/mmcsd-kod.png" alt="mmcsd-kod" width="517" height="622" /></p>
<p>CMDo dan sonra CMD1 uygulanır. CMD1 komut yapısı şekildeki gibi 41h,00h,00h,00h,00h,FFh dir. Cevap olarak 00h gönderilmelidir. Bu işlemden sonra kart okuyup yazmaya hazırdır. Aşağıdaki şekilde CMD1 gönderilmesi gösterilmektedir.</p>
<p><img class="alignnone size-full wp-image-251" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/init-cmd1.png" alt="init cmd1" width="700" height="365" /></p>
<p>CMD0 veya CMD1 den cevap olarak neden 01h ve 00h geldiğine bakalım. Bunun için bütün komutların olduğu tabloya bakmak gerek. Response olarak R1 denmiş, peki nedir bu R1? Aşağıdaki şekilde R1, 1 byte ile ifade edilmiştir.</p>
<p><img class="alignnone size-full wp-image-252" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/r1-response-format.png" alt="r1 response format" width="312" height="191" /></p>
<p>Şekile baktıktan sonra CMD0’ ın neden 01h değeriyle cevap verdiğini anlamışsınızdır. CMD0 ile kart idle komununa alınıyor. Kart da cevap olarak idle konumunda olduğu bilgisini veriyor. CMD1 ile kartı aktif hale geciriyoruz. Bu sırada bize hiçbir hata dönmemesi gerek. Yani 00h ile cevap vermeli. Aksi takdirde, sıfır dışında verilen bir cevap bize bir hata olduğunu bildirir. Hatanın ne olduğunu,  yukardaki tabloyu incelenerek bulunabilir. Bunun haricinde CMD13 (send status) R2 modu ile cevap verir. R2 iki bytetır. R2 cevap kısmının içersindeki bitlerin anlamları şöyledir;</p>
<p><img class="alignnone size-full wp-image-253" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/r2-response-format.png" alt="r2 response format" width="700" height="464" /></p>
<p>Karta bilgi yazmadan önce, kartta özel bilgilerin olduğu registerların içinin okunmasında fayda var. Zira kartın kapasitesi, sektör sayısı, çalışma voltajı v.b. bilgilerin hepsi bu registerlarda saklanır.  Dolayısıyla, kullanılan SD karttan farklı bir karta, yanlış birşeyler yazmamak için önce bu kontrolleri yapmakta fayda vardır. Bu registerlarda tutulan bilgiler ise aşağıdaki gibidir;</p>
<p>- CID (Card Identification) registerı: 128-bit uzunluğundadır ve CMD10 ile elde edilir. CID bilgileri şunlardır; Manufacturer ID (24bit), Product name (56bit), HW Revision (hardware), FW Revision (Firmware),  Serial Number (Unique ID no), Month code (Manufactore date- Month), Year Code (manufacture date – Year. 1997 yılından itibaren (SanDisk) ).</p>
<p><img class="alignnone size-full wp-image-254" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/cid-fields.png" alt="cid fields" width="700" height="382" /></p>
<p>- CSD (Card Specific Data) registeri 128 bit uzunluğundadır ve CMD9 ile elde edilir. Ancak bu registerın içerdiği bilgiler çok uzun olduğu için açıklama yapmadan, direk tablosunu veriyorum;</p>
<p><img class="alignnone size-full wp-image-255" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/csd-fields.png" alt="csd fields" width="607" height="652" /></p>
<p>CSD ve CID komutlarını okuma şekli aşağıdaki gibi olur. CMD gönderildikten sonra 00h ile komutu aldığını teyid eder. Sonrasında kartan cevap gelmesi ise belli bir zaman sonra olur. Burada 8 okumadan sonra yazmış ama bu süre değişebilir. Programda, belli bir süre sürekli okuma yapılır, ta ki FEh bilgisi okunana kadar. FEh, bilgi göndermenin başladığı bilgisidir. Bundan sonraki okumalarda ise bilgileri elde edilir. Bilgilerin sonunda 2 byte  CRC bilgisi de gelir. Onu da okumak gerekir. Bu işlemden sonra kart okuması gercekleşmiştir.</p>
<p><img class="alignnone size-full wp-image-256" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/cid-read-blok.png" alt="cid read blok" width="700" height="423" /></p>
<p><img class="alignnone size-full wp-image-257" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/csd-read-blok.png" alt="csd read blok" width="700" height="401" /></p>
<p>Bu işlemden sonra bir de SD kartın içine bilgi yazma kısmı var. SD karttaki bilgilere erişmek herhangi bir EEProm veya RAM’ de olduğu gibi değildir. Yani doğrudan bir byte alana ulaşılmaz veya sadece 1 byte veri yazilmaz. SD kart içerisindeki alanlar, Sector veya Bloklara bölünmüştür. Her bir sector de 512 byte bilgi içerir. Tek bir sektöre bilgi yazabilmek için CMD24 kullanılır. Bilgi yazma modunun şu şekilde bir yapısı vardır;</p>
<p>CMD0, CMD1, CMD9 ve CMd10 gönderirken arguman kullanmiyor, hep sıfır yazıyorduk. Şimdi ise CMD24 teki arguman parametremiz hangi sektöre bilgi yazmak istediğimizi belirtecek. Bu noktada herhangi bir 4bytelık sector adresi seçilebilir. Bu komuttan sonra kart, 00h bilgisini iletmelidir. Arkasından yazılacak komutlar gönderilebilir ancak göndermeye başlamadan önce belli bir süre beklemek gerekir. Aşağıdaki şekilde 8 okuma süresi kadar bekleme süresi konmuş ama garanti olması için bu okuma süresini uzun tutmakta fayda var. Kartın bilgi almaya başlaması, FEh bilgisi gönderildikten sonra başlar. FEh’ den sonra gelen bilgiler yazılacak data olarak alınır. 512 byte bilgi gönderildikten sonra 2 byte CRC bilgisi de iletilir. SPI haberleşmesinde CRC kontrolü yapılmadığı için FFh gönderilmez. Bu bilgiyi gönderdikten sonra, durum cevabı iletilir. Gelen cevap 1F ile ve(and) lendiğinde 05h bilgisi elde edilmelidir. Aksi takdirde bilgi gönderimi hatalı olmuş demektir. Bu işlemden sonra kart kendi içersinde bu komutu icra edecektir. Ancak bu işlem belli bir süre aldığı için başka komut göndermeden önce bir süre beklenmesi gerekir. 10000 okuma yapılarak bu bekleme sağlanabilir.</p>
<p><img class="alignnone size-full wp-image-258" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/mmc-sd-write-yazma.png" alt="mmc sd write yazma" width="700" height="368" /></p>
<p>Kart yazma işlemi bittiken sonra, geriye sadece tek byte kart yazma komutu kalıyor. Onun da basit bir yapısı var. Önceki anlattığımız metot ile tek farkı, sabit 512 byte uzunlukta okuma yapmak zorunda olunmamasıdır. Şöyle ki; CMD16 komutu ile okunmak istenen uzunluk belirtilir. CMD16 ile hiçbir değer belirtilmemiş ise varsayılan değer 512 olarak kabul edilir. CMD17 ile istenilen adres bloğu, CMD16 ile belirtilen uzunluk kadar okunur. Normal okumadakine benzer bir şekilde kullanılır. Tek fark CMD17 cevabından belli bir süre sonra cevap gelmesidir. Bilgi göndermeye başlandığını anlamak için FEh cevabı gelene kadar okuma yapılır. Cevap olarak gelen FEh, bilgi göndermenin başladığını belirtir. FEh cevabı alıntıktan sonra gelen datalar SD kartın içindeki bilgilerdir. 512 byte datadan sonra 2 byte da CRC datası gönderilir. Bu bilgiyi kullanmadığımız için sadece 2 byte okuma yapmak bizim için yeterlidir. Böylece okuma işlemi gerçekleştirilmiş olur.</p>
<p><img class="alignnone size-full wp-image-260" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/set-block-read-mmc-sd2.png" alt="set block read mmc sd2" width="700" height="300" /></p>
<p>Neden cevap olarak 05h elde etmemiz gerektiğine gelince; Bu cevabın yapısı aşağıdaki şeklideki gibidir. Yani cevap olarak “Data accepted” cevabı vermelidir.</p>
<p><img class="size-medium wp-image-264 alignleft" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/Untitled-300x140.jpg" alt="Untitled" width="270" height="126" /></p>
<p>Bu işlemlerden sonra artık biz SD veya MMC kart SPI yolu ile cok kolay bilgi yazabilir ve okuyabiliriz.</p>
<p><img class="alignnone size-full wp-image-261" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/512mb-sd-kart-ust.JPG" alt="512mb sd kart ust" width="700" height="525" /></p>
<p><img class="alignnone size-full wp-image-262" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/512mb-sd-kart-arka.JPG" alt="512mb sd kart arka" width="700" height="525" /></p>
<p>Hasan ARSLAN</p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/mmc-sd-kart-uygulamasi/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hakkımızda</title>
		<link>http://dergi.picproje.org/hakkimizda</link>
		<comments>http://dergi.picproje.org/hakkimizda#comments</comments>
		<pubDate>Mon, 13 Jul 2009 10:48:54 +0000</pubDate>
		<dc:creator>ground</dc:creator>
				<category><![CDATA[Picproje E-Dergi Haberler]]></category>
		<category><![CDATA[picproje.org]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=170</guid>
		<description><![CDATA[Picproje ve Dergi Hakkında ]]></description>
			<content:encoded><![CDATA[<p>PICPROJE Ülkemizdeki Türkçe kaynak eksikliğinden yola çıkarak, 2002 yılında bir grup arkadaş tarafından kurulan,  bilgilerini – tecrübelerini paylaşma erdemi yüksek olan çok değerli, bir o kadar profesyonel olmasına rağmen içerisindeki amatör ruhu yitirmemiş üyeleri, emektarları ile yaklaşık 7 senedir yoluna ödünsüz devam eden bir yapıdır. PICPROJE belirlediği, ödün vermediği ilkeler sayesinde hala ciddiyetini koruyabilmiş, sade yapısı sayesinde de bilgiye kolay ve sınırsız erişimi hizmete sunmuş,  ülkesine – milletine yararlı olmaya çalışan profesyonel bir “kurum” olmuştur.<br />
<span id="more-170"></span></p>
<p>PICPROJE 2002<br />
<a href="http://web.archive.org/web/20020501113541/http:/www.picproje.com/" target="_blank">http://web.archive.org/web/20020501113541/http://www.picproje.com/</a></p>
<p>PICPROJE Geçmiş yıllar arşivi<br />
<a href="http://web.archive.org/web/*/http:/www.picproje.com" target="_blank">http://web.archive.org/web/*/http://www.picproje.com</a><br />
<a href="http://web.archive.org/web/*/http:/www.picproje.net" target="_blank">http://web.archive.org/web/*/http://www.picproje.net</a><a href="http://web.archive.org/web/*/http:/www.picproje.org" target="_blank"><br />
http://web.archive.org/web/*/http://www.picproje.org</a></p>
<p>Karşılıksız yararlı olabilme hissinin verdiği mutluluk ile çalışan ekibi, emektarları sayesinde, usta – çırak ilişkisini sanal ortamda bile yaşayabilen üyelerinin katkılarıyla senelerdir ayakta durmuştur. Öğrenip-öğreten üyeler şeklinde, hep bir sonrakine bayrak teslim edercesine bu yapının devamlılığı, gelişimi, ulaşabildiği kişileri her zaman artmıştır. Çok sık olmasa da belli zamanlarda toplantılar düzenleyerek sanal ortamdaki dostlukları gerçek hayata taşımayı başarabilmiştir forumumuz.</p>
<p>Bilginin zekâtı felsefesini oluşturmuş forumumuz çalışmalarını derleyerek, üyelerimizin çok büyük emekleriyle, farklı formatlarda da kendini ifade edebilmeyi hedeflemiş bu yüzden 2007 yılında pdf dosya formatında, herkesin ulaşabileceği baskıya sokabileceği bir E-DERGI çıkarmıştır.</p>
<p>Birçok yerden bu çalışma için teşekkür, takdir ve gelecek için istek-dilekler edindik.</p>
<p>Bu çalışmamızı uzun bir aradan sonra tekrar yapmaya çalışarak, teknolojinin verdiği yetenekleri daha iyi kullanarak E-Dergi çalışmalarına tekrar başlama kararı aldık. Bu teknolojik yetenek ve kolaylıklar sayesinde birçok arama motorunda etkisini görebileceğimiz erişimi ve güncellenmesi en kolay ve yetenekli olan Wordpress sistemini kullanmaya karar verdik.</p>
<p>Bu çalışmalarımızda bize destek olabilecek kişi-kurum ve kuruluşlarla da çalışmayı elimizdeki bilgi ve tecrübelerimizi vatanımızla, milletimizle paylaşmayı ülkemizdeki Türkçe kaynak sıkıntısına elimizden geldiğinde yardımcı olmayı istiyoruz, hedefliyoruz.</p>
<p><span style="color: #ff0000;"><strong>PICPROJE Ekibi Adına,<br />
Ground – Sinan KAYABAŞI</strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/hakkimizda/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VHDL ile 8 Bit CPU Tasarımı</title>
		<link>http://dergi.picproje.org/vhdl-ile-8-bit-cpu-tasarimi</link>
		<comments>http://dergi.picproje.org/vhdl-ile-8-bit-cpu-tasarimi#comments</comments>
		<pubDate>Sun, 05 Jul 2009 16:26:46 +0000</pubDate>
		<dc:creator>FxDev</dc:creator>
				<category><![CDATA[PicProje E-Dergi 2]]></category>
		<category><![CDATA[cpu tasarımı]]></category>
		<category><![CDATA[fpga]]></category>
		<category><![CDATA[fxdev]]></category>
		<category><![CDATA[veri yolu kontrol]]></category>
		<category><![CDATA[vhdl örnek]]></category>
		<category><![CDATA[vhdl tasarım]]></category>
		<category><![CDATA[xilinx örnek]]></category>

		<guid isPermaLink="false">http://dergi.picproje.org/?p=143</guid>
		<description><![CDATA[Arkadaşlar her zaman konuştuğumuz &#8216;bilgisayarın işlemcisi intel ya da amd 2.4Ghz&#8217; gibi terimleri duyagelmişizdir. Ve yine intel ve amd&#8217;nin bu işten çok para kazandığını az ya da çok bilmekteyiz. Peki nedir bu işlemci, yapısı, çalışma mantığı nasıldır, ne olur da işlemci verdiğimiz görevleri eksiksiz yerine getirebilir, neden bazı işlemcilerde az kodla çok iş yaparken bazılarında [...]]]></description>
			<content:encoded><![CDATA[<p>Arkadaşlar her zaman konuştuğumuz &#8216;bilgisayarın işlemcisi intel ya da amd 2.4Ghz&#8217; gibi terimleri duyagelmişizdir. Ve yine intel ve amd&#8217;nin bu işten çok para kazandığını az ya da çok bilmekteyiz. Peki nedir bu işlemci, yapısı, çalışma mantığı nasıldır, ne olur da işlemci verdiğimiz görevleri eksiksiz yerine getirebilir, neden bazı işlemcilerde az kodla çok iş yaparken bazılarında daha çok kod yazmak zorundayız, veri yolu, işlem kapasiteleri de ne demek ve bunun gibi bir çok soruya cevap vermesini dilediğim bir tasarım başlığı açmak istedim.<br />
<span id="more-143"></span></p>
<p>Kısaca yapacağımız işleme ve uygulama adımlarına değinecek olursak:</p>
<ul>
<li><strong>1) CPU Nedir?</strong></li>
<li><strong>2) Single Cycle Computer Çalışma Mantığı</strong></li>
<li><strong>3) Veri Yolu ve Kontrol Ünitesi</strong></li>
<li><strong>4) VHDL ile Tasarımın Gerçekleştirilmesi</strong></li>
<li><strong>5) Tasarımın Oluşturulması ve Denenmesi</strong></li>
</ul>
<h2>Bölüm 1 – CPU Nedir?</h2>
<p>Bir bilgisayarın en önemli parçalarından biri işlemcidir. Kısaca CPU (Central Processing Unit) ya da MİB (Merkezi İşlem Birimi) olarak anılan ve adından da anlaşılacağı üzere bilgisayardaki işlemleri sayısal olarak yürüten ve sonuçları gerekli yerlere gönderen elemanlardır. İşlemciler aritmetik ve mantıksal işlem yapabilme yeteneğine sahiptirler. Bu işlevlerini kullanabilmek için işlemci içerisine tanımlanmış, komut listelerinden ibaret bir takım programlar mevcuttur. Bu komutlar işlemciye iki sayının toplamı, çıkarılması yönünde emirler verebildiği gibi dış çevreden (örneğin klavyeden, yazıcıdan, fareden) alacağı emirlere göre bir takım komutları atlayıp başka komut satırlarını işlemeye devam edebilir.</p>
<p>Temel olarak işlemcinin yaptığı iş, bitler üzerinde işlem yapmak üzere belirlediğimiz komutları çalıştırmaktır. CPU veya çeşitli donanım aygıtlarını kontrol edebilecek öte yandan kullanıcının rahatça vereceği komutları gerekli yerlere ulaştıracak bir sisteme ihtiyaç vardır. Temelde bu sistemler bilgisayarlarda yazılım tabanlıdır ve görevi diğer yazılımların belleğe, girdi/çıktı aygıtlarına ve kütük sistemine erişimini sağlar. Birden çok program aynı anda çalışıyorsa, işletim sistemi her programa yeterli sistem kaynağını ayırmaktan ve birbirleri ile çakışmamalarını sağlamaktan da sorumludur.</p>
<p>Yapacağımız işlemci 8 bitlik veriyoluna sahip, yaklaşık 30 komutu rahatlıkla işleyebilen, harvard mimarisine sahip single cycle computer olacaktır.</p>
<p><span style="color: #0000ff;">Resim 1 &#8211;  Single Cycle Computer</span></p>
<p><img class="alignnone size-full wp-image-144" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/cpu-nedir.jpg" alt="cpu nedir" width="500" height="479" /></p>
<h2>Bölüm 2 – Single Cycle Computer</h2>
<p><strong>2.1) İşlemci Mimarileri</strong></p>
<p><span style="color: #ff0000;"><strong>2.1.1) Von Neumann Mimarisi:</strong></span> John Von Neumann&#8217;ın 1945&#8242;teki makalesinde adı geçen ve bilgisayar tarihinde ilk kez ortaya atılan mimaridir. Basit bir temel üzerine kurulu olan yapıda kısaca komut hafızası ve veri hafızanın birlikte bulunduğu tek bir bellek elemanı, komutları işlem sırasına sokan denetim birimi ve istediğimiz işlemi yapmak için ise gelişmiş bir ALU&#8217;ya (CPU) sahiptir.</p>
<p>Von Neumann mimarisinin en büyük eksikliği kaydedicilerin ve hafızanın aynı bellekte elemanı üzerinde bulunmasıdır. Bu ona hız konusunda büyük eksiklikler getirir. Genelde CISC işlemciler bu mimariyi baz alır ve oldukça fazla komuta sahiptirler. Buna örnek olarak Intelin 8051 mikrodenetleyicisi (255 komut içerir) gösterilebilir.</p>
<p><span style="color: #0000ff;">Şekil 2 &#8211; Von Neumann Mimarisi</span></p>
<p><img class="alignnone size-full wp-image-145" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/Von-Neumann-Mimarisi.jpg" alt="Von Neumann Mimarisi" width="398" height="236" /></p>
<p><span style="color: #ff0000;">2.1.2) Harvard Mimarisi: </span>Von Neumann&#8217;ın eksikliklerini gören IBM ve Intel mühendislerinin bir araya gelerek oluşturdukları mimaridir. Mühendislerin yaptığı ise komut hafızası ile veri hafızasını birbirinden ayırmaktır. Böylece bir komut işlenirken belleğe yazma işlemi beklenmemekte ve dolayısıyla hız artmaktadır. Genelde RISC işlemciler bu mimariye dayanmaktadır ve oldukça az komuta sahiptirler. Dolayısı ile işi işlemciyi programlayacak kişiye bırakır. Örnek olarak Microchip firmasının Picleri (16f serisi 35 komut içerir) ve daha birçok mikrodenetleyicisi ve günümüz işlemcileri (pentium vb.) gösterilebilir.</p>
<p><span style="color: #0000ff;">Şekil 3 &#8211; Harvard Mimarisi</span></p>
<p><img class="alignnone size-full wp-image-146" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/Harvard-Mimarisi.jpg" alt="Harvard Mimarisi" width="500" height="208" /></p>
<p><span style="color: #ff0000;"><strong>2.2) Single Cycle Computer: </strong></span>Adının da belirttiği gibi bir komutu tek bir adımda işleyen en basit CPU yapısıdır. Harvard mimarisine sahip CPU, kısaca veri yolu ve kontrol ünitesinden oluşur (3. bölümde anlatılacak). İşlemcimiz dışarıdan sağlayacağımız saatin frekansına göre çalışır ve o frekansla hızı anılır fakat tasarımda kullanılan malzemelerin hız değerleri, örneğin memory&#8217;e yazma hızı gibi etkenler CPU&#8217;nun çalışma hızını etkiler. Yapıda en yavaş çalışan bölüm, hız belirleme açısından en önemli bölüm olmaktadır.</p>
<p><strong>2.3) Çalışma Mantığı:</strong></p>
<p>-Programcı öncelikle yapmak istediği işlemleri komut hafızasına (Instruction Memory) yükler,<br />
-Daha sonra CPU çalıştırılmaya başlanır,<br />
-Program Counterher bir saat darbesinde birer artar (bu değiştirilebilir),<br />
-Her bir PC değerine göre gerekli kod işletilir,<br />
-İstenilen değerler Registerlere yüklenir,<br />
-Bu değerler ile gerekli işlemler yapılır,<br />
-Gerekirse işlem sonuçları hafızaya alınır,<br />
-Komutlar bittiğinde program sonlanır.</p>
<p>Örnek bir işlem yaptırmak istersek; *8 register tanımladığımızı R1=4, R4=5 olduğunu gerisinin ise &#8216;0&#8242; olduğunu kabul edelim</p>
<p>*Komut belleğine ise</p>
<p><strong>0) R3=R1+R4</strong></p>
<p><strong> 1) R2=R3*R1</strong></p>
<p><strong>2) R5=R2/R4 olarak tanımlansın.</strong><br />
*PC değerimiz sırasıyla 0,1,2,3.. şeklinde gidecek ve komutlar sırasıyla işletilecektir.<br />
*Sırayla işlemler yapıldığında son değerlerimiz;<br />
<strong>R3=9<br />
R2=36<br />
R5=7,2 olacaktır.</strong></p>
<p>*Tüm bu işlemler toplamda 3 clock cycle süre alacaktır.</p>
<p><span style="color: #0000ff;">Şekil 4 – Veri Yolu Yapısı</span></p>
<p><img class="alignnone size-full wp-image-147" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/veri-yolu-yapisi.jpg" alt="veri yolu yapisi" width="482" height="582" /></p>
<h2>Bölüm 3 &#8211;  Veri Yolu ve Kontrol Ünitesi</h2>
<p><span style="color: #ff0000;"><strong>3.1) Veri Yolu:</strong></span> Veri yolu, işlemcinin yükünü çeken kısmıdır. Verilen komutlara göre sırasıyla çıkarma, toplama, çarpma gibi tüm işlemler bu kısımda yapılır. Çıkan sonuçlara göre bizlere kontrol etme olanağı da sağlayan bölümlere sahiptir. Kabaca veri yolu yukarıda görüldüğü gibi şu parçalardan oluşur;</p>
<p><strong>- Register Birimi<br />
- Fonksiyon Ünitesi<br />
- Hafıza Elemanı</strong></p>
<p><span style="color: #0000ff;">Şekil 1 &#8211; Veri Yolu</span></p>
<p><img class="alignnone size-full wp-image-148" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/veri-yolu.png" alt="veri yolu" width="482" height="582" /></p>
<p><span style="color: #ff0000;"><strong>3.1.1. Register Birimi: </strong></span>İşlemlerde geçici hafıza olarak kullanılan bölümdür. Projemizde toplam 8 adet, 8 bitlik register kullanılacaktır. Register içerikleri istenildiği zaman dışarıdan kontrolle sıfır yapılabilmekte ve yine istediğimiz komuta göre istenilen registere, istenilen değer atanabilmektedir.</p>
<p><span style="color: #ff0000;"><strong>3.1.2. Fonksiyon Ünitesi: </strong></span>Veri yolunun en önemli yapısıdır. Toplama, çıkarma, çarpma, ‘and’ ve ‘or’ gibi aritmetik ve mantıksal işlemleri yerine getirebilmek için tasarlanmış bölüm burasıdır. Tasarımımızda 8 bitlik, 15 işlemi gerçekleştirebilen ALU tasarlanacaktır. İşlem sonuçlarına göre taşma (V), toplam sonuçlarında elde (C), negatiflik (N) ve sonucun sıfır (Z) olup olmadığını kontrol edebileceğimiz bit çıkışları da yine aynı yapı içerisine gömülmüş olup ayrıca bu bayrakları da yine bu yapıdan kontrol edilebilir.</p>
<p><span style="color: #ff0000;"><strong>3.1.3. Hafıza Elemanı: </strong></span>İşlemcide istediğimiz bilgiyi saklamak için kullanabileceğimiz, gerektiği zaman tekrar sakladığımız bilgiyi kullanabileceğimiz bölümdür. Tasarımızda 8&#215;8 bitlik memory kullanacak olup şekilde görülen address out ve data out kısımları ile bu elemanın kontrolünü sağılanacaktır.</p>
<p><span style="color: #0000ff;">Şekil 2 &#8211; Kontrol Ünitesi</span></p>
<p><img class="alignnone size-full wp-image-149" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/kontrol-unitesi.png" alt="kontrol unitesi" width="327" height="444" /></p>
<p><span style="color: #ff0000;"><strong>3.2) Kontrol Ünitesi: </strong></span>Veri yolu tasarlandıktan sonra verilen komutları sıralayan, kontrol eden ve düzenleyen kısım burasıır. Bu bölüm daha önceki bahsettiğimiz Harvard mimarisinin bire bir yansımasıdır. Yukarıdaki resimde görülen kontrol ünitesi aşağıdaki birimlerden oluşur:</p>
<p><strong>- Program Counter Birimi<br />
- Komut Hafızası<br />
- Komut Çözücü</strong></p>
<p><span style="color: #ff0000;"><strong>3.2.1. Program Counter Birimi:</strong></span> Seri işlemcilerin en büyük özelliklerinden biri olan, sırayla işlem yapma özelliğini kazandıran bölümdür. Görevi her saat darbesinde bir artmak ya da atlama komutu verildiğinde istenilen program koduna ulaşmayı sağlamaktır. Bu tasarımda kullanıcının da kontrol edebileceği, 8 bitlik sayıcı tasarlanacaktır.</p>
<p><span style="color: #ff0000;"><strong>3.2.2. Komut Hafızası: </strong></span>İşlemcinin hangi sırayla, hangi işlemleri yapacağı bilgisini saklandığı bölümdür. Şekil-2’de görülebilecek (Instruction Memory) bu kısım, özellikle işlemciyi programlayacak kişi tarafından algoritmalar geliştirilip, bu bölüme yükleme yapılmasıyla anlam kazanmaktadır. Bölüm kısaca aldığı program counter değeri ne ise, o kısmı işletme emri vermekle yükümlüdür. Yapılan tasarımda işlemciye 28 işlemi art ardına yapabilme özelliği kazandırılmıştır. Bu da basit bir algoritma yazacak programcı için oldukça yeterli bir hafızadır.</p>
<p><span style="color: #ff0000;"><strong>3.2.3 Komut Çözücü:</strong></span> Kontrol ünitesinin en önemli kısmıdır. Kullanıcı tarafından makine dilinde yazılan kodun çözüldüğü,  veri yoluna hangi görevlerin yaptırılacağı, hafızaya değer alımları, atlama emirleri ve bunun gibi birçok komutun süzüldüğü yer burasıdır. Yapılan tasarımda 16’ya 17’lik kod çözücü tasarlanacaktır.</p>
<p><span style="color: #ff0000;"><strong>3.3) Hızı Etkileyen Unsurlar:</strong></span> Hızı etkileyen en büyük unsur veri yolundaki yavaşlıktan kaynaklanır. Genel anlamda ne kadar hızlı bir veri yolu tasarlanırsa o denli hızlı işlemci elde etmek mümkündür. Gelişen teknoloji ve kullanılan değişik mimari metotları ile (mesela pipeline) bu bölümü hızlandırmak mümkündür. Günümüz işlemcilerinde birden fazla veri yolu bulunmakta ve dahası bunlar paralel çalışarak işlemciye hız konusunda büyük özellikler kazandırmaktadır.</p>
<p><span style="color: #ff0000;"><strong>3.4) İşlemcimizin İşletebileceği Kodlar: </strong></span>İşlemcimiz şekil-3’teki kodları rahatlıkla işletebilecek bir yapıya kavuşacaktır. Bu kodlar basit işlemler için oldukça yeterlidir. Tablonun en başında işlemlerin adı daha sonra sırayla işlem kodu, kısaltması, etkilenecek registerler, registerlerin nasıl işleme tabi tutulacağı ve hangi bayrakların bundan etkilenebileceği gösterilmiştir.</p>
<p><span style="color: #0000ff;">Şekil 3 &#8211; Tanımlı İşlemler</span></p>
<p><img class="alignnone size-full wp-image-150" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/tanimli-islemler.png" alt="tanimli islemler" width="500" height="301" /></p>
<p>Şekil-3’teki kodlar yapılacak işleme göre seçilip komut hafızasına yani instruction memorye şekil-4’teki sırayla yerleştirilmelidir.</p>
<p><span style="color: #0000ff;">Şekil 4 &#8211; Adresleme Modları</span></p>
<p><img class="alignnone size-full wp-image-151" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/adresleme-modlari.png" alt="adresleme modlari" width="500" height="179" /></p>
<p><span style="color: #ff0000;"><strong>3.5) Örnek Bir İşlem: </strong></span>Şekil-5’teki işlemlerimi seçtiğimizi düşünelim. Sırasıyla yapılacak işlemleri tanımlayacak olursak:</p>
<ul>
<li>0) R2’den R3 çıkartılıp R1’e atanacak</li>
<li>1) R6 bir sola kaydırılıp R4’e aktarılacak</li>
<li>2) R7’nin içeriği bir artırılacak</li>
<li>3) R0, 2 sayısı ile toplanıp R1’e atanacak</li>
<li>4) R3’ün değeri kaydedilecek</li>
<li>5) O anki data R4’e yazılacak</li>
<li>6) Son olarak R5’e reset atılacak.</li>
</ul>
<p><span style="color: #0000ff;">Şekil 5 &#8211; Yapılacak İşlemler ve Etkilenen Veri Yolu Öğeleri</span></p>
<p><img class="alignnone size-full wp-image-152" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/sekil5.png" alt="sekil5" width="500" height="181" /></p>
<p>Şekil-5’teki işlemler yapılırken kontrol ünitesinin, veri yolunda hangi seçimleri yaptığı açıkça gözükmektedir.</p>
<p><span style="color: #0000ff;">Şekil 6 &#8211; Değişen Veri Yolu Değerlerinin Sayısal Değerleri</span></p>
<p><img class="alignnone size-full wp-image-153" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/sekil6.png" alt="sekil6" width="500" height="203" /></p>
<p>Daha anlaşılır olması için şekil-6’da hangi yapının hangi giriş ya da çıkış değerine göre kontrol edildiği işlemine göre gözükmektedir.</p>
<p><span style="color: #800000;"><strong>İşlemin oluşması ise şöyle gerçekleşir:</strong></span></p>
<p><span style="color: #0000ff;"><strong>1) </strong></span>Tüm bu işlemler komut hafızasına sırayla şekil-4’teki adresleme modlarından uygun olanı seçilerek yüklenir.</p>
<p><span style="color: #0000ff;"><strong>2) </strong></span>İşlemci çalıştırılır.</p>
<p><span style="color: #0000ff;"><strong>3) </strong></span>Program counter saymaya başlar ve komut hafızasının ilk adresinden itibaren kodları okutmaya başlar.</p>
<p><span style="color: #0000ff;"><strong>4)</strong></span> Şekil-4 teki adresleme moduyla kodlanmış komutlar komut çözücüye gelir ve veri yolunun anlayabileceği şekil-6’da gözüken şekilde dağıtılır.</p>
<p><span style="color: #0000ff;"><strong>5) </strong></span>Kullanılacak registerler, fonksiyonlar seçilir ve işlem bir saat darbesi içerisinde biter.</p>
<p><span style="color: #0000ff;"><strong>6)</strong></span> Daha sonra durum bir kez daha 3. maddeye döner ve bu sefer yeni bir komut alınarak işlemler devam eder.</p>
<p>İşlemler devam ederken oluşan zaman diyagramı ise şekil-7’de gözükmektedir.</p>
<p><span style="color: #0000ff;">Şekil 7 &#8211; Zaman Çizelgesi</span></p>
<p><img class="alignnone size-full wp-image-154" src="http://dergi.picproje.org/wp-content/dosyalar/2009/07/zaman-cizelgesi.png" alt="zaman cizelgesi" width="500" height="465" /></p>
]]></content:encoded>
			<wfw:commentRss>http://dergi.picproje.org/vhdl-ile-8-bit-cpu-tasarimi/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
