<?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>Pic dsPIC Arm7 Arm Cortex Programlama ve Projeler &#187; 74HC595</title>
	<atom:link href="http://www.uicroarm.com/tag/74hc595/feed" rel="self" type="application/rss+xml" />
	<link>http://www.uicroarm.com</link>
	<description>ds-pic arm-7 cortex nxp proje uygulama</description>
	<lastBuildDate>Wed, 01 Feb 2012 22:41:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ARM7 &#8211; SPI Haberleşme (C)</title>
		<link>http://www.uicroarm.com/arm7-spi-haberlesme-c</link>
		<comments>http://www.uicroarm.com/arm7-spi-haberlesme-c#comments</comments>
		<pubDate>Fri, 01 May 2009 22:52:18 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[12bit]]></category>
		<category><![CDATA[74HC595]]></category>
		<category><![CDATA[CLCD]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[GLCD]]></category>
		<category><![CDATA[LPC2148]]></category>
		<category><![CDATA[SPI]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=80</guid>
		<description><![CDATA[
Bu uygulamada LPC2148&#8242;in SPI modulunu kullanacağız. LPC2000 serisinin , microchip 8-16bit işlemcilerine göre çok daha fonksiyonel ve kullanışlı. Örneğin göndereceğiniz bit sayısını (4-16bit) seçebiliyorsunuz bence bu çok önemli bir faktör özellikle hız gerektiren uygulamalarda, ayrıca yine bus frekansı microchip işlemcilerine göre çok daha hızlı , bu özellikte grafik lcd vs. sürerken önemli oluyor.Zaten tüm hız [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-81" title="bugsbunny_main" src="http://www.uicroarm.com/wp-content/dosyalar/2009/05/bugsbunny_main.jpg" alt="bugsbunny_main" width="295" height="221" /><span id="more-80"></span></p>
<p>Bu uygulamada LPC2148&#8242;in SPI modulunu kullanacağız. LPC2000 serisinin , microchip 8-16bit işlemcilerine göre çok daha fonksiyonel ve kullanışlı. Örneğin göndereceğiniz bit sayısını (4-16bit) seçebiliyorsunuz bence bu çok önemli bir faktör özellikle hız gerektiren uygulamalarda, ayrıca yine bus frekansı microchip işlemcilerine göre çok daha hızlı , bu özellikte grafik lcd vs. sürerken önemli oluyor.Zaten tüm hız gerektiren uygulama IC&#8217;leri SPI ile haberleşir.</p>
<p>Aşağıya eklediğim program ile 74hc595&#8242;e SPI modulü ile yazıyoruz ve latch ediyoruz.74hc595 ile haberleşmek için 3 uç kullanılır. Serial data, serial clock ve latch (program içinde load yazdım çünkü bu pin hem datayı çıkış registerlerine yüklüyor hemde latch ediyor) kullanılıyor. Data ve clock için SPI0&#8242;ın data ve clock pinleri bağlanır , latch için ise P0.7 portu bağlanır.  </p>
<pre class="brush: cpp; title: ; notranslate">
/*****************************************************************************/

// Aykut ULUSAN, Elektronik Mühendisi, IZMIR

/*****************************************************************************/
#include &quot;lpc214x.h&quot;	// Nxp LPC2148 için header file

#define	SPI_PIN_CONFIG		0x1500	// SSEL kullanmiyacagiz
#define	PCLK	30000000 	//30Mhz

#define	HC595_LOAD		0x80	// P0.7'yi latch icin kullanacagiz
#define	HC595_LOAD_HIGH		IOSET0=HC595_LOAD
#define	HC595_LOAD_LOW		IOCLR0=HC595_LOAD

void
sistem_init(){
// Processor clock=5*12Mhz=60Hz
   PLL0CFG=0x24;
// PLLCON ve PLLCFG registerleri içerigi degistirildiginde , asagidaki
// proses uygulanir, 1) PLL0FEED=0xAA ve 2)PLL0FEED=0x55
   PLL0FEED=0xAA;	 	// Feed process
   PLL0FEED=0x55;

   PLL0CON=0x1;  		// PLL'i enable	et
   PLL0FEED=0xAA;		// Feed process
   PLL0FEED=0x55;
   while(!(PLL0STAT&amp;0x400)) ;   // PLL kitleninceye kadar bekle (5*12Mhz=60Mhz'e kitlenir)

   PLL0CON=0x3;	 	// PLL'i clock kaynagi gibi bagla
   PLL0FEED=0xAA;	 	// Feed process
   PLL0FEED=0x55;

   MAMCR=0x2;	  		// MAM full Enable
   MAMTIM=0x4;			// MAM fetch cycles = 4CCLK

   VPBDIV=0x02;	 	// 30 MHz
}

void
DLY_MS(long ms){
   long i,j;
   for (i = 0; i&lt;ms; i++ )
      for (j = 0; j&lt;7500; j++ );
}

void
SPI0_SETUP(void){
   IO0DIR|=HC595_LOAD;       	// P0.7'yi port olarak kullanacagiz
   IO0CLR=HC595_LOAD;        	// P0.7=0
   PINSEL0|=0x1500;			// pinler SPI için kullanılacak
   S0SPCR=	  (0&lt;&lt;3) |			// CPHA = 0 , clock'un ilk kenarinda data sample yapilir
                  (0&lt;&lt;4) |			// CPOL = 0 ,clock aktif high
                  (1&lt;&lt;5) |			// MSTR=1 master mode
                  (0&lt;&lt;6);			// ilk önce 7. bit(msb) gönderilir
   S0SPCCR=30;					//1Mhz clock hizi
}

void
SPI0_SEND(unsigned char da_ta){
   S0SPDR=da_ta;				// datayi yukle
   while(!(S0SPSR&amp;0x80));	// data gonderme tamamlandiginda S0SPRS'nin 7. biti(SPIF) set olur
   IOSET0=HC595_LOAD;	 		// latch et
   IOCLR0=HC595_LOAD;
   da_ta=S0SPDR;				// SPIF flag'i clear etmek icin okunur
}

int
main(void){
   unsigned char i=0;
   sistem_init();
   SPI0_SETUP();		 		// SPI0'i hazirla
   while(1){
      SPI0_SEND(i++);		 	// gonder
      DLY_MS(200);
   }
}
</pre>
<p>SPI modul kullanımı öğrenildikten sonra SPI ile haberleşen tüm elektronik komponentleri kontrol edebilirsiniz.<br />
Benim yaptığım bazı uygulamarların resimleri aşağıdadır.</p>
<p><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/05/bugsbunny_mod.jpg" rel="lightbox[80]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/05/bugsbunny_mod-150x150.jpg" alt="bugsbunny_mod" title="bugsbunny_mod" width="150" height="150" class="alignnone size-thumbnail wp-image-82" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/05/ecel_mod.jpg" rel="lightbox[80]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/05/ecel_mod-150x150.jpg" alt="ecel_mod" title="ecel_mod" width="150" height="150" class="alignnone size-thumbnail wp-image-83" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/05/saat_mod.jpg" rel="lightbox[80]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/05/saat_mod-150x150.jpg" alt="saat_mod" title="saat_mod" width="150" height="150" class="alignnone size-thumbnail wp-image-84" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/05/volume_mod.jpg" rel="lightbox[80]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/05/volume_mod-150x150.jpg" alt="volume_mod" title="volume_mod" width="150" height="150" class="alignnone size-thumbnail wp-image-85" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/arm7-spi-haberlesme-c/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>NXP ARM7 &#8211; 74HC595 sürmek</title>
		<link>http://www.uicroarm.com/nxp-arm7-temel-bilgiler-spi-modulunu-kullanmadan-74hc595-surmek</link>
		<comments>http://www.uicroarm.com/nxp-arm7-temel-bilgiler-spi-modulunu-kullanmadan-74hc595-surmek#comments</comments>
		<pubDate>Sun, 01 Mar 2009 17:13:55 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[74HC595]]></category>
		<category><![CDATA[LPC2148]]></category>
		<category><![CDATA[NXP]]></category>
		<category><![CDATA[SPI]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=29</guid>
		<description><![CDATA[
Merhaba,
Bilindiği gibi çeşitli haberleşme (I2C, SPI, CAN, UART,USB vs) biçimleri vardır. Çoğu uicrocontroller bu haberleşme modüllerine sahiptir. Tabii uicrocontroller arasında mutlaka yetenek farkları vardır. Mesela microchip 8-16 bit&#8217;lerde ürünlerinde haberleşme için bit sayısı sabittir( 8 ve/veya 16bit ). NXP LPC serisinde 4-16 bit sayısı seçilebilir özelliktedir. Bu özelliklik hem hız hemde kullanışlılık sağlar. Mesela bazı [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-28" title="led_13" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/led_13.jpg" alt="led_13" width="295" height="221" /><span id="more-29"></span></p>
<p>Merhaba,<br />
Bilindiği gibi çeşitli haberleşme (I2C, SPI, CAN, UART,USB vs) biçimleri vardır. Çoğu uicrocontroller bu haberleşme modüllerine sahiptir. Tabii uicrocontroller arasında mutlaka yetenek farkları vardır. Mesela microchip 8-16 bit&#8217;lerde ürünlerinde haberleşme için bit sayısı sabittir( 8 ve/veya 16bit ). NXP LPC serisinde 4-16 bit sayısı seçilebilir özelliktedir. Bu özelliklik hem hız hemde kullanışlılık sağlar. Mesela bazı SPI haberleşmeye sahip IC&#8217;ler 9bit ile sürülür. İlkbit genelde Komut/Data veya Read/Write biti olmaktadır. SPI modulunu 9 bite configure ederek 9bitte rahatça haberleşebiliriz.</p>
<p>Aşağıya SPI modulunu kullanmadan 74HC595&#8242;in çıkışlarına  bağlı ledleri sürmek için bir program yazacağım.<br />
Burada önemli olan bilgi 74HC595 &#8216;in CMOS olduğu ve 2V-5V aralığında çalışabildiğidir. (LPC2148 3V3 ile çalışır ve çıkış voltajı lojik hi olarak 3V3&#8242;tür). LPC2148, 74HC595&#8242;in TTL olan versiyonlarınıda (mesela 74HCT595) sürebilir fakat bu IC&#8217;ler 3V3 ile beslenemezler.</p>
<pre class="brush: cpp; title: ; notranslate">

/*****************************************************************************/
// Aykut ULUSAN, Elektronik Mühendisi, IZMIR
/*****************************************************************************/
#include &quot;lpc214x.h&quot;	// Nxp LPC2148 iin header file
// P0.21 SDA (74hc595 serial data girişine bağlayınız)
// P0.22 SCK (74hc595 serial clock girişine bağlayınız)
// P0.23 LOAD (74hc595 latch girişine bağlayınız)
#define HC595_SDA_LOW		FIO0CLR = 0x00200000   	// Data low
#define HC595_SDA_HIGH 		FIO0SET = 0x00200000	// Data high
#define HC595_SCK_LOW 		FIO0CLR = 0x00400000   	// clock low
#define HC595_SCK_HIGH 		FIO0SET = 0x00400000	// clock high
#define HC595_LOAD_LOW 		FIO0CLR = 0x00800000   	// Load low
#define HC595_LOAD_HIGH 	FIO0SET = 0x00800000	// Load high

void
s_init(){
// Processor clock=5*12Mhz=60Hz
   PLL0CFG=0x24;
// PLLCON ve PLLCFG registerleri ierigi degistirildiginde , asagidaki
// proses uygulanir, 1) PLL0FEED=0xAA ve 2)PLL0FEED=0x55
   PLL0FEED=0xAA;	 	         // Feed process
   PLL0FEED=0x55;
   PLL0CON=0x1;  		          // PLL'i enable	et
   PLL0FEED=0xAA;		         // Feed process
   PLL0FEED=0x55;
   while(!(PLL0STAT &amp; 0x400)) ;  // PLL'i kitle
   PLL0CON=0x3;	 	          // PLL'i clock kaynagi gibi bagla
   PLL0FEED=0xAA;	 	         // Feed process
   PLL0FEED=0x55;
   MAMCR=0x2;	  		  // MAM full Enable
   MAMTIM=0x4;			 // MAM fetch cycles = 4CCLK
   VPBDIV=0x02;	 	          // Peripheral Clock=30Mhz olsun
}

// CCLK=60MHz iken  1ms
void
DLY_MS(long ms){
   long i,j;
   for (i = 0; i &lt; ms; i++ )
      for (j = 0; j &lt; 7500; j++ );
}

void
HC595_WR(unsigned char c){
   unsigned char t;
   for(t=0;t&lt;8;t++){
      HC595_SDA_LOW;		   // default olarak data low
      if(c&amp;0x80)			 // biti test et
       HC595_SDA_HIGH;	   // bit set ise portu set et
      HC595_SCK_HIGH;	   	   // clock puls
      HC595_SCK_LOW;
      c&lt;&lt;=1;				 // sola 1 kez
   }
   HC595_LOAD_HIGH;		   // latch et
   HC595_LOAD_LOW;
}

void
main(void){
   unsigned char c=0;
   s_init();			            // PLL ve MAM ayarlanir
   SCS = 0x03;				// I/O portlar fast mode'da olsun
   FIO0DIR |= 0x00E00000;	          // pin P0.21,P0.22 ve P0.23 ikis
   while (1){	 			  //
      HC595_WR(c++);
      DLY_MS(1000);
   }
};
/*****************************************************************************/
</pre>
<p>Bu uygulamada 74HC595 entegresi çıkışlarına bağlı 8 led üzerinde bir counter uygulamasını tamamladık.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/nxp-arm7-temel-bilgiler-spi-modulunu-kullanmadan-74hc595-surmek/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

