<?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; ARM7 Uygulamaları</title>
	<atom:link href="http://www.uicroarm.com/category/arm7/feed" rel="self" type="application/rss+xml" />
	<link>http://www.uicroarm.com</link>
	<description>ds-pic arm-7 cortex nxp proje uygulama</description>
	<lastBuildDate>Fri, 23 Apr 2010 19:11:07 +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-NOK6100-VIDEO</title>
		<link>http://www.uicroarm.com/arm7-nok6100-video</link>
		<comments>http://www.uicroarm.com/arm7-nok6100-video#comments</comments>
		<pubDate>Mon, 15 Jun 2009 18:53:36 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[LPC2148]]></category>
		<category><![CDATA[nokia6100]]></category>
		<category><![CDATA[SPI]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=99</guid>
		<description><![CDATA[
Merhaba,
Bu video&#8217;da nokia6100 lcd ve arm7  ikilisi ile yapılabileceklerden bazıları var. Cep telefonu ile geç saatlerde çektiğim için video kaliteli değil. Videodan orjinal resimler aşağıdadır.Yakında bu lcd&#8217;yi yerleştirdiğim pcb dosyasını buradan vereceğim. (Eagle dosyası) . Üzerinde step-up voltaj konvertör var. LCD backlight için 5V&#8217;tu 8V yapmıştım.

]]></description>
			<content:encoded><![CDATA[<p><embed type="application/x-shockwave-flash" width="295" height="221" src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.40" allowfullscreen="true" flashvars="id=13990855&amp;vid=5306213&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/9444/87500174.jpeg&amp;embed=1" bgcolor="#000000"></embed><span id="more-99"></span></p>
<p>Merhaba,<br />
Bu video&#8217;da nokia6100 lcd ve arm7  ikilisi ile yapılabileceklerden bazıları var. Cep telefonu ile geç saatlerde çektiğim için video kaliteli değil. Videodan orjinal resimler aşağıdadır.Yakında bu lcd&#8217;yi yerleştirdiğim pcb dosyasını buradan vereceğim. (Eagle dosyası) . Üzerinde step-up voltaj konvertör var. LCD backlight için 5V&#8217;tu 8V yapmıştım.</p>
<p><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/06/ABCD0002_800_600.jpg" rel="lightbox[99]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/06/ABCD0002_800_600-150x150.jpg" alt="ABCD0002_800_600" title="ABCD0002_800_600" width="150" height="150" class="alignnone size-thumbnail wp-image-100" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/06/ABCD0003_800_600.jpg" rel="lightbox[99]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/06/ABCD0003_800_600-150x150.jpg" alt="ABCD0003_800_600" title="ABCD0003_800_600" width="150" height="150" class="alignnone size-thumbnail wp-image-101" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/06/ABCD0004_800_600.jpg" rel="lightbox[99]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/06/ABCD0004_800_600-150x150.jpg" alt="ABCD0004_800_600" title="ABCD0004_800_600" width="150" height="150" class="alignnone size-thumbnail wp-image-102" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/06/ABCD0001_800_600.jpg" rel="lightbox[99]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/06/ABCD0001_800_600-150x150.jpg" alt="ABCD0001_800_600" title="ABCD0001_800_600" width="150" height="150" class="alignnone size-thumbnail wp-image-103" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/06/volume_mod.jpg" rel="lightbox[99]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/06/volume_mod-150x150.jpg" alt="volume_mod" title="volume_mod" width="150" height="150" class="alignnone size-thumbnail wp-image-104" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/06/bugsbunny_mod.jpg" rel="lightbox[99]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/06/bugsbunny_mod-150x150.jpg" alt="bugsbunny_mod" title="bugsbunny_mod" width="150" height="150" class="alignnone size-thumbnail wp-image-105" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/arm7-nok6100-video/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<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;">
/*****************************************************************************/

// 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 PWM</title>
		<link>http://www.uicroarm.com/nxp-arm7-pwm</link>
		<comments>http://www.uicroarm.com/nxp-arm7-pwm#comments</comments>
		<pubDate>Sat, 14 Mar 2009 14:46:47 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[duty cycle]]></category>
		<category><![CDATA[LPC2148]]></category>
		<category><![CDATA[PWM]]></category>
		<category><![CDATA[RGB LED]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=63</guid>
		<description><![CDATA[
Pwm uygulaması : LPC2148&#8242;in 6 tane pwm portu var, hepsi birbirinden bağımsız olarak kullanılabilir. Kullanımıda oldukça basit registerlere sahip. Aşağıya  pwm2 portunu %50 duty cycle ile aktif eden bir program ekliyeceğim. Aynı şekilde diğer pwm portlarınıda istediğiniz duty cycle&#8217;da çalıştırabilirsiniz. (Pwm2 pini P0.7&#8242;dir)


#include

void sistem_setup(void);
void DLY_MS(long ms);
void pwm_init (void);
#define P0_0    0x00000001

int
main(void){
sistem_setup();
//	SCS = [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-64" title="pwm_kucukpic" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/pwm_kucukpic.jpg" alt="pwm_kucukpic" width="295" height="221" /><span id="more-63"></span></p>
<p><strong>Pwm uygulaması : </strong>LPC2148&#8242;in 6 tane pwm portu var, hepsi birbirinden bağımsız olarak kullanılabilir. Kullanımıda oldukça basit registerlere sahip. Aşağıya  pwm2 portunu %50 duty cycle ile aktif eden bir program ekliyeceğim. Aynı şekilde diğer pwm portlarınıda istediğiniz duty cycle&#8217;da çalıştırabilirsiniz. (Pwm2 pini P0.7&#8242;dir)</p>
<pre class="brush: cpp;">

#include

void sistem_setup(void);
void DLY_MS(long ms);
void pwm_init (void);
#define P0_0    0x00000001

int
main(void){
sistem_setup();
//	SCS = 0x03;					// fast I/O moduna geelim
PINSEL0=P0_0&lt;&lt;15;                            // PWM portları seçilir
pwm_init();
while(1);
}

void
pwm_init (void){
PWMPR=0;			  // PWMTC , her Pclk+1'de artar
PWMMCR=0x02; 	       // PWMMR0 seçilir
PWMMR0=3000;
PWMMR2=1500; 		// PWM2 için duty cycle %50
PWMLER=0x5; 		         // PWMMR0, PWMMR2 değerlerini latch et
PWMPCR=0x400; 	       // PWM2 output enable
PWMTCR=0x09; 		// timer start ve PWM enable edilir
}

void
sistem_setup(void){
// 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;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;	 	// PCLK = 30 MHz
}
void
DLY_MS(long ms){
long i;
unsigned int j;
for (i = 0; i &lt; ms; i++ )
for (j = 0; j &lt; 7500; j++ );
}
</pre>
<p>3 PWM portunu kullanarak kaliteli RGB ledlerle istediğiniz rengi elde edebilirsiniz. Bazı resimler aşağıdadır.<br />
<a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0001.jpg" rel="lightbox[63]"><img class="alignnone size-thumbnail wp-image-65" title="abcd0001" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0001-150x150.jpg" alt="abcd0001" width="150" height="150" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0003.jpg" rel="lightbox[63]"><img class="alignnone size-thumbnail wp-image-66" title="abcd0003" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0003-150x150.jpg" alt="abcd0003" width="150" height="150" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0005.jpg" rel="lightbox[63]"><img class="alignnone size-thumbnail wp-image-67" title="abcd0005" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0005-150x150.jpg" alt="abcd0005" width="150" height="150" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0006.jpg" rel="lightbox[63]"><img class="alignnone size-thumbnail wp-image-68" title="abcd0006" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0006-150x150.jpg" alt="abcd0006" width="150" height="150" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0007.jpg" rel="lightbox[63]"><img class="alignnone size-thumbnail wp-image-69" title="abcd0007" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0007-150x150.jpg" alt="abcd0007" width="150" height="150" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0008.jpg" rel="lightbox[63]"><img class="alignnone size-thumbnail wp-image-70" title="abcd0008" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/abcd0008-150x150.jpg" alt="abcd0008" width="150" height="150" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/800x600.jpg" rel="lightbox[63]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/800x600-150x150.jpg" alt="800x600" title="800x600" width="150" height="150" class="alignnone size-thumbnail wp-image-72" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/nxp-arm7-pwm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nxp arm7 &#8211; Uart</title>
		<link>http://www.uicroarm.com/nxp-arm7-uart</link>
		<comments>http://www.uicroarm.com/nxp-arm7-uart#comments</comments>
		<pubDate>Mon, 09 Mar 2009 13:17:55 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[KEIL]]></category>
		<category><![CDATA[LPC2148]]></category>
		<category><![CDATA[rs232]]></category>
		<category><![CDATA[uart]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=58</guid>
		<description><![CDATA[

Merhaba,
Öncelik sitenin amacı konusunda açıklık getirmeliyim. Siteyi inceleyen çoğu arkadaş içeriği beğendi, bazı arkadaşlar ise açıklamaların daha detaylı olmasını istiyorlar. Bu sitede benim amacım: mpasm, asm30, C30, keil , arm7 assembly veya C dil ve programlarını detaylıca anlatmak olmadığı için, isteyen arkadaş devam etmek istediği program ve/veya  dil(leri) araştırıp öğrenmenlidir. Fakat tavsiye isteyen arkadaşlara [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-59" title="uart_prog_kucuk" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/uart_prog_kucuk.jpg" alt="uart_prog_kucuk" width="295" height="221" /><br />
<span id="more-58"></span></p>
<p>Merhaba,</p>
<p>Öncelik sitenin amacı konusunda açıklık getirmeliyim. Siteyi inceleyen çoğu arkadaş içeriği beğendi, bazı arkadaşlar ise açıklamaların daha detaylı olmasını istiyorlar. Bu sitede benim amacım: mpasm, asm30, C30, keil , arm7 assembly veya C dil ve programlarını detaylıca anlatmak olmadığı için, isteyen arkadaş devam etmek istediği program ve/veya  dil(leri) araştırıp öğrenmenlidir. Fakat tavsiye isteyen arkadaşlara tabii ki elimden geldiğince yardımcı olamaya çalışacağım. Elektronik donanım tasarımı olsun, bilgisayar veya programlama dilleri olsun hepsinin öğrenmek için tek bir ortak noktası vardır. İngilizce, bu dil mesleğimizde ilerleyebilmek için şarttır. Şimdi uygulamamıza geçelim.</p>
<p>Bu uygulamızda  LPC2148&#8242;in uart1&#8242;inden 19200bps ile data gonderimi yapacağız. Bunun için bize gerekenler.</p>
<p>* Keil C compiler</p>
<p>* LPC2148 development board</p>
<p>* ISP programlayıcı (in circuit serial programmer)</p>
<p>* Hiper terminal veya rs232&#8242;den alınan verilerimizi gözlemliyebileceğimiz başka bir program<br />
Ben bu örnekte Ersin Keçiş adlı bir arkadaşımızın geliştirdiği rs232 tester adlı programı kullanacağım.<br />
http://ersinkecis.com/RS232_Tester.zip (Böyle faydalı bir program hazırladığı için Ersin Keçiş&#8217;e teşekkürler)</p>
<p>Program resmi ve programın kendisi aşağıdadır.</p>
<p><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/uart_prog_buyuk.jpg" rel="lightbox[58]"><img class="alignnone size-thumbnail wp-image-60" title="uart_prog_buyuk" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/uart_prog_buyuk-150x150.jpg" alt="uart_prog_buyuk" width="150" height="150" /></a></p>
<pre class="brush: cpp;">
/*****************************************************************************/
#include &lt;LPC214x.h&gt;
//#include &quot;port_pinleri.h&quot;

void  sistem_setup(void);
void  DLY_MS(long ms);
void  uart1_setup(void);
void  u1_karakter_gonder(char ch);
void  u1_string_gonder(const char *ch);

const char kutay[]={&quot;UART1 ile, 19200bps'de data gonderiyoruz\r\n&quot;};

int
main(void){
sistem_setup();
SCS = 0x03;			// fast I/O moduna geelim
uart1_setup();			// uart1,19200bps,1 stop bit, parity yok
while (1){
u1_string_gonder(&amp;amp;amp;amp;amp;amp;amp;kutay[0]);	// uart1'den 19200bps'de diziyi gonder
DLY_MS(1000);
u1_string_gonder(&quot;www.uicroarm.com&quot;);
DLY_MS(1000);
}
}

// Uart1 baudrate = PCLK(VPB Clock) / 16*(16*U1DLM+U1DLL) ile bulunur
// Yukaridaki formul bazi durumlarda tam olarak baudrate ayarini yapamiyabilir
// yani sonu kesirli ikabilir , o zaman kesirli bolme islemlerini yapabilen
// U1FDR registeride kullanilmalidir. (U1 fractional divider register)
void
uart1_setup(void){
PINSEL0|=0x50000;       // RxD1 ve TxD1 pinleri enable
U1LCR=0x83;    			// 8 bits, Parity yok, 1 Stop bit
U1DLL = 97;             // 19200 Baud Rate ,
U1DLM = 0;
U1LCR = 0x03;           // baudrate ayarlandi
}

void
u1_karakter_gonder (char ch){    	// Karakteri seri porta yaz
while (!(U1LSR &amp;amp;amp;amp;amp;amp;amp; 0x20));	   // bus idle oluncaya kadar bekle
U1THR=ch;			     // karakter bus'a
}

void
u1_string_gonder(const char *ch){	   	// string yazilacak
while(*ch)					   		//
u1_karakter_gonder(*ch++);
}

void
sistem_setup(void){
// Processor clock=5*12Mhz=60Hz
PLL0CFG=0x24;	 	// MSEL = 4(multiplier =5),PSEL(PLL divider) = 2
// 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;amp;amp;amp;amp;amp;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;	 	// PCLK = 30 MHz (Pclk=Peripheral Clock)
}

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

/*****************************************************************************/
</pre>
<p>Bu program ile elde ettiğimiz sonuç:</p>
<p><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/uart_sonuc.jpg" rel="lightbox[58]"><img class="alignnone size-thumbnail wp-image-61" title="uart_sonuc" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/uart_sonuc-150x150.jpg" alt="uart_sonuc" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/nxp-arm7-uart/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ARM7 Assembly &#8211; Port On/Off</title>
		<link>http://www.uicroarm.com/arm7-assembly-port-onoff</link>
		<comments>http://www.uicroarm.com/arm7-assembly-port-onoff#comments</comments>
		<pubDate>Sun, 08 Mar 2009 23:50:47 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[arm assembly]]></category>
		<category><![CDATA[KEIL]]></category>
		<category><![CDATA[LPC2148]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=42</guid>
		<description><![CDATA[

Merhaba,
Şimdiki uygulamamız ARM7 assembly diliyle port on/off (led on/off veya röle vs yapılabilir) işlemini gerçekleştireceğiz. Microcontroller&#8217;lara ilk olarak assembly diliyle başladığım ve işlemci donanımını tanımayı kolaylaştırdığı için arm işlemcilere de ilk geçtiğimde arm assembly dilini inceledim. Çok fonksiyonlu bir komut seti var ama tabii ki kullanımı oldukça zor. Ayrıca 32bit ile çalışmanın getirdiği zorluklarda var. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-50" title="arm7_ledasmkucuk2" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/arm7_ledasmkucuk2.jpg" alt="arm7_ledasmkucuk2" width="295" height="221" /><br />
<span id="more-42"></span></p>
<p>Merhaba,</p>
<p>Şimdiki uygulamamız ARM7 assembly diliyle port on/off (led on/off veya röle vs yapılabilir) işlemini gerçekleştireceğiz. Microcontroller&#8217;lara ilk olarak assembly diliyle başladığım ve işlemci donanımını tanımayı kolaylaştırdığı için arm işlemcilere de ilk geçtiğimde arm assembly dilini inceledim. Çok fonksiyonlu bir komut seti var ama tabii ki kullanımı oldukça zor. Ayrıca 32bit ile çalışmanın getirdiği zorluklarda var. Gerçek hayatta gerektiği yerde C içinde inline kullanmak daha mantıklı. İnternette arm assembly örnekleri gerçekten çok az bu nedenle blogumda  arm7 asm&#8217;den bazı örnekler olsun istiyorum ve ayrıca arm assembly&#8217;nin nasıl olduğunu merak edenler olabilir.</p>
<p>İlk projemiz oldukça basit, port on/off yapacağız, derleyici olarak keil kullanacağım. Bilindiği gibi keil, C compiler&#8217;ın yanısıra  assembler/simulatör ve debugger olarakta kullanılabilmektedir. Detayları için www.keil.com&#8217;dan öğrenebilirsiniz.</p>
<p>Kullanacağım işlemci (LPC2148) ARM7TDMI tabanlı bir işlemci olduğu için ARM7TDMI assembly komut setini kullanıyoruz. Ayrıca buna ek olarak asm  için http://www.peter-cockerell.net/aalp/html/frames.html  adresinden faydalanabilirsiniz.</p>
<p>Keil&#8217;de assembly dili:<br />
<a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/arm7_ledasm1.jpg" rel="lightbox[42]"><img class="alignnone size-thumbnail wp-image-52" title="arm7_ledasm1" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/arm7_ledasm1-150x150.jpg" alt="arm7_ledasm1" width="150" height="150" /></a></p>
<pre class="brush: cpp;">
;****************************************************************************
; Aykut ULUSAN , Elektronik Mühendisi , IZMIR
; Arm7 assembly
;****************************************************************************

INCLUDE	  LPC2294.inc  	 			; header ekliyelim

LED	EQU	0x02000000			; led portu P0.25

EXPORT  __main					   ; Main fonksiyonu program disinda kullanilabilir
AREA   	 LED_ONOFF,CODE,READONLY		;

__main
LDR	R0,=PINSEL0		; PINSEL0'in adresini R0 registerine at
MOV    R1,#0x0			 ; R1=0
STR	R1,[R0]		  	   ; PINSEL0=0
LDR	R0,=PINSEL1		 ; PINSEL1=0
STR	R1,[R0]
LDR	R0,=IO0DIR	          ; Led pini cikis
LDR	R1,=LED			    ; led adresini yukle
STR	R1,[R0]			    ; led adres icerigini IO0DIR'a
LOOP
LDR	R1,=LED		           ; led adresini yukle
; led
LDR	R0,=IO0SET	 	  ; port set
STR	R1,[R0]
BL	 DLY
; led
LDR	R0,=IO0CLR  		; port low
STR	R1,[R0]
BL	 DLY			    ; altprograma
B	  LOOP

DLY
MOV	R7,#0x000FF000		;
DLY_1
SUBS	R7,R7,#1		    ; R7-=1
BNE	 DLY_1
MOV	PC,LR		 	      ; link registerini geri yukle

ALIGN					; memory dizilisi 4'er byte
LTORG				       ; ARM komutlari icin PC+/-4K, Trumb komutlari icin PC+/-1K
END
</pre>
<p>Sonuç olarak ;<br />
Proje resimleri aşağıdadır. Önce scop probları , LPC2148 Board&#8217;ta ilgili port pinine bağlanır ve sonuç scop ekranında görülmektedir.</p>
<p><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/brd_8006001.jpg" rel="lightbox[42]"><img class="alignnone size-thumbnail wp-image-48" title="brd_8006001" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/brd_8006001-150x150.jpg" alt="brd_8006001" width="150" height="150" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/scop8006001.jpg" rel="lightbox[42]"><img class="alignnone size-thumbnail wp-image-49" title="scop8006001" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/scop8006001-150x150.jpg" alt="scop8006001" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/arm7-assembly-port-onoff/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
