<?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; KEIL</title>
	<atom:link href="http://www.uicroarm.com/tag/keil/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>STM32-Özel Kütüphane</title>
		<link>http://www.uicroarm.com/stm32-ozel-kutuphane</link>
		<comments>http://www.uicroarm.com/stm32-ozel-kutuphane#comments</comments>
		<pubDate>Fri, 23 Apr 2010 19:06:25 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[STM32 Uygulamaları]]></category>
		<category><![CDATA[32bit]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[arm cortex]]></category>
		<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[cortex m3]]></category>
		<category><![CDATA[KEIL]]></category>
		<category><![CDATA[STM32]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=139</guid>
		<description><![CDATA[
Merhaba,
STM32; arm cortex m3 core tabanlı bir işlemcidir. Özellikleri tek kelimeyle mükemmel denebilir. Hızı 72Mhz&#8217;dir ama yeni versiyonlarında 120Mhz&#8217;e kadar çıkıyor. Dahili donanım microcontroller olarak nerdeyse herşey var. (12bit ADC, DAC, DMA, I2C, SPI, UART, USB vs.) Programlanması ise ST kütüphanesini kullanırsanız çok basittir ama çok fonksiyonel olmaz. Avantajı ise pek kafa patlatmazsınız, nasılsa hazır [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uicroarm.com/wp-content/dosyalar/2010/04/ABCD0006_main.jpg" alt="" title="ABCD0006_main" width="295" height="221" class="alignnone size-full wp-image-140" /><span id="more-139"></span></p>
<p>Merhaba,</p>
<p>STM32; arm cortex m3 core tabanlı bir işlemcidir. Özellikleri tek kelimeyle mükemmel denebilir. Hızı 72Mhz&#8217;dir ama yeni versiyonlarında 120Mhz&#8217;e kadar çıkıyor. Dahili donanım microcontroller olarak nerdeyse herşey var. (12bit ADC, DAC, DMA, I2C, SPI, UART, USB vs.) Programlanması ise ST kütüphanesini kullanırsanız çok basittir ama çok fonksiyonel olmaz. Avantajı ise pek kafa patlatmazsınız, nasılsa hazır fonksiyonlar.</p>
<p>Benim seçtiğim yol ise en zoru diyebiliriz. Kendi kütüphanemi kendim oluşturdum ve 1bit/16bit/32bit erişim saylayan bir kütüphane oluşturdum. ST kütüphanesini kullanan arkadaşların çoğu arka planda işlemci neyapıyor bilmez. Bu kütüphaneyi oluşturmam yaklaşık 10 günümü aldı ama mükemmel sonuç oldu diyebilirim. </p>
<p>Öncelikle şunu söylüyeyim kütüphaneyi burada paylaşmıyacağım fakat kod örnekleri olacak, bilmeyenler mantığı kapacaktır. C ve derleyicinin gücü sayesinde böyle bir kütüphane oluşturulabilir.</p>
<p>Aşağıda bazı örnekler ekliyeceğim ve 32bite PIC&#8217;e bit bit yazıldığı gibi yazıldığını göreceksiniz. Size yeni fikirler verecektir.</p>
<pre class="brush: cpp; title: ; notranslate">
/**********************************************************/
/**********************************************************/
/*============Aykut ULUSAN, Elektronik Mühendisi, İzmir============= */
/**********************************************************/
/**********************************************************/

#define	    mylcd			my_lcd_reg-&gt;lcd    // porta mylcd olarak isim verdim

mylcd.bits.rs=1;               // 1bit yazılır - Register Selecte Bagli pin 1

mylcd.bits.data_4bit=da_ta&gt;&gt;4;   // 4bit yazılır - high order nibble

mylcd.bits.enb=1;                      // 1bit yazılır - enable 1

// systick'in load registerine 32bit sayı yükle
stk_load.b32=(u32)us*k_us; 

// systick'in Control registerinin Enable bitini 1 yap
stk_ctrl.bits.ENABLE=1;

// systick'in Control registerinin COUNTFLAG == 0 iken bekle
 while(!stk_ctrl.bits.COUNTFLAG);// bekle 

// porta'nın 9'unu 50Mhz bus hızı ve alternate pushpull yap
// 2'şer bit erişim
gpioa_crh.bits.MODE9=GpioMODE_50mhz_out;    // 50mhz out
gpioa_crh.bits.CNF9=GpioCNF_PUPD_in_APP_out;  // alternate pushpull

// 16bit erişim
usart1_brr.b16.low=0x16DA;  // 9600,
rcc_apb2enr.b16.low=0x007d;                      // A,B,C,D,E ve AF enable

/*
Aşağıda STM32 Reset Clock Configurasyon ayarlarını yapan program var,
Programın nasıl yapıldığını gösteren bir örnek.
*/

void
rcc_init(void){
    rcc_cr.bits.HSION=1;
    while(!rcc_cr.bits.HSIRDY);
//Reset SW[1:0], HPRE[3:0], PPRE1[2:0], PPRE2[2:0], ADCPRE[1:0] and MCO[2:0]
    rcc_cfgr.b32&amp;=(u32)0xF8FF0000;
    rcc_cr.b32&amp;=(u32)0xFEF6FFFF;
// HSEBYP bit clear
    rcc_cr.b32&amp;=0xFFFBFFFF;
// PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE bits clear
    rcc_cfgr.b32&amp;=(u32)0xFF80FFFF;
    rcc_cir.b32=0;

	rcc_cr.bits.HSERDY=0;
    rcc_cr.bits.HSEON=1;            // enable
    while(!rcc_cr.bits.HSERDY);      

    rcc_cfgr.bits.HPRE=0;           

    rcc_cfgr.bits.PPRE2=0;
    rcc_cfgr.bits.PPRE1=4;
// 56/8=7Mhz'de çalışsın , acelesi yok
    rcc_cfgr.bits.ADCPRE=3;
    flash_acr.b32&amp;=((u32)0x00000038);
    flash_acr.bits.LATENCY=2;
    flash_acr.bits.PRFTBE=1;        // Prefetch buffer enable, flash'a yazmak için gerekli
// Pllclk=8mhz*7mhz=56mhz
    rcc_cfgr.bits.PLLXTPRE=0;       // xtal'i bölme
    rcc_cfgr.bits.PLLSRC=1;         // PLL'e HSE'yi bağla
    rcc_cfgr.bits.PLLMUL=5;
// pll nable
    rcc_cr.bits.PLLON=1;
    while(!rcc_cr.bits.PLLRDY);
    rcc_cfgr.bits.SW=2;
    while(rcc_cfgr.bits.SWS!=2);
}
/**********************************************************/
/**********************************************************/
/**********************************************************/
</pre>
<p><a href="http://www.uicroarm.com/wp-content/dosyalar/2010/04/ABCD0006_1000.jpg" rel="lightbox[139]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2010/04/ABCD0006_1000-150x150.jpg" alt="" title="ABCD0006_1000" width="150" height="150" class="alignnone size-thumbnail wp-image-141" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/stm32-ozel-kutuphane/feed</wfw:commentRss>
		<slash:comments>4</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; title: ; notranslate">
/*****************************************************************************/
#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;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; 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; 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>9</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; title: ; notranslate">
;****************************************************************************
; 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>3</slash:comments>
		</item>
		<item>
		<title>NXP ARM7 &#8211; LED on/off</title>
		<link>http://www.uicroarm.com/nxp-arm7-temel-bilgiler-led-onoff</link>
		<comments>http://www.uicroarm.com/nxp-arm7-temel-bilgiler-led-onoff#comments</comments>
		<pubDate>Sun, 01 Mar 2009 14:14:07 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[KEIL]]></category>
		<category><![CDATA[LPC2148]]></category>
		<category><![CDATA[LPC21xx]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=24</guid>
		<description><![CDATA[ 
Merhaba ,
Öncelikle bu sitede benim amacım programlama yada elektronik donanım tasarımı hakkında eğitim vermek değil ama zamanım ve bilgim düzeyinde bazı tecrübelerimi anlatmayı planlıyorum. Daha çok sitenin amacı kendimi ve yaptığım bazı projelerimi tanıtmak amaçlıdır.
LPC2148&#8242;e giriş niteliğinde sizlere bazı programlama bilgileri ve programları vereceğim. LPC2148&#8242;in çoğu donanım modülünün nasıl kullanılacağını(IIC,ADC,SPI vs) öğreneceğiz ve böylece [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-27" title="led_12" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/led_12.jpg" alt="led_12" width="295" height="221" /> <span id="more-24"></span></p>
<p>Merhaba ,</p>
<p>Öncelikle bu sitede benim amacım programlama yada elektronik donanım tasarımı hakkında eğitim vermek değil ama zamanım ve bilgim düzeyinde bazı tecrübelerimi anlatmayı planlıyorum. Daha çok sitenin amacı kendimi ve yaptığım bazı projelerimi tanıtmak amaçlıdır.</p>
<p>LPC2148&#8242;e giriş niteliğinde sizlere bazı programlama bilgileri ve programları vereceğim. LPC2148&#8242;in çoğu donanım modülünün nasıl kullanılacağını(IIC,ADC,SPI vs) öğreneceğiz ve böylece 32bit bir uc&#8217;lara yetersiz kaynaktan dolayı başlayamayanlar için referans olacaktır.</p>
<p>Bu ilk projemizde NXP firmasının LPC2148 uicro&#8217;sunun herhangi bir portuna bağlı led&#8217;i nasıl on/off yapacağımız anlatacağım.</p>
<p>Uygulama için gerekenler :</p>
<p>1) LPC2148 geliştirme boardu (LPC21xx&#8217;den herhangi board olabilir fakat aralarında register isimlerinde küçük farklılar var dolayısıyla küçük modifikasyonlar gerekir)</p>
<p>2) Derleyici olarak Keil&#8217;in free versiyonunu kullanacağız. Keil&#8217;de bir proje oluşturmayı bildiğinizi ve derlemeyi yapabildiğinizi varsayıyorum.</p>
<p>3) Uygulamada kullanılacak elektronik malzemeler , aletler ve donanımı en doğru şekilde kurduğunuzu ve kullandığımızı varsayıyorum. (led, direnç ,ölçü aletleri, digital scop varsa iyi olur).</p>
<pre class="brush: cpp; title: ; notranslate">

/*****************************************************************************/

// Aykut ULUSAN, Elektronik Mühendisi, IZMIR

/*****************************************************************************/

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

// Fast I/O'yu kullanacağım ve

// Programda kolaylık için bazı atamalar yapıyorum

// Portu low'a çekelerek

#define LED1_ON FIO0CLR = 0x00200000 // led1 port 0.21 on
#define LED1_OFF FIO0SET = 0x00200000 // led1 port 0.21 off
#define LED2_ON FIO0CLR = 0x00400000 // led2 port 0.22 on
#define LED2_OFF FIO0SET = 0x00400000 // led2 port 0.22 off

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

//program buradan başlar

int
main(void){
// öncelikle sistem ve bus(port) hızını ayarlayacağım
PLL0CFG=0x24; // Processor clock=5*12Mhz=60Hz (sistemde 12mHz xtal var) PLL çarpanını 5 yaptık
// 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 olarak ayarla
PLL0FEED=0xAA; // Feed process
PLL0FEED=0x55;

MAMCR=0x2; // MAM Enable
MAMTIM=0x4; // fetch 4CCLK
// bus clock 30Mhz
VPBDIV=0x02; // PCLK = 30 MHz

SCS = 0x03; // I/O portlar fast mode'da olsun
FIO0DIR |= 0x00600000; // pin P0.21 ve P0.22 çikis

while (1){ // sonsuz loop
LED1_ON; // P0.21 ON
LED2_OFF; // P0.22 OFF
DLY_MS(500); // Delay 500 ms
LED2_ON; // P0.22 ON
LED1_OFF; // P0.21 OFF
DLY_MS(500); // Delay 500 ms
}
}
/*****************************************************************************/
</pre>
<p>Program derlenip çalıştırıldığında 0,5sn aralıkla bir led ışık saçarken diğeri sönüktür.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/nxp-arm7-temel-bilgiler-led-onoff/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

