NXP ARM7 – LED on/off
|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’e giriş niteliğinde sizlere bazı programlama bilgileri ve programları vereceğim. LPC2148’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’lara yetersiz kaynaktan dolayı başlayamayanlar için referans olacaktır.
Bu ilk projemizde NXP firmasının LPC2148 uicro’sunun herhangi bir portuna bağlı led’i nasıl on/off yapacağımız anlatacağım.
Uygulama için gerekenler :
1) LPC2148 geliştirme boardu (LPC21xx’den herhangi board olabilir fakat aralarında register isimlerinde küçük farklılar var dolayısıyla küçük modifikasyonlar gerekir)
2) Derleyici olarak Keil’in free versiyonunu kullanacağız. Keil’de bir proje oluşturmayı bildiğinizi ve derlemeyi yapabildiğinizi varsayıyorum.
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).
/*****************************************************************************/ // Aykut ULUSAN, Elektronik Mühendisi, IZMIR /*****************************************************************************/ #include "lpc214x.h" // 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 < ms; i++ ) for (j = 0; j < 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&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 } } /*****************************************************************************/
Program derlenip çalıştırıldığında 0,5sn aralıkla bir led ışık saçarken diğeri sönüktür.
Siten ve ilk yazın hayırlı olsun abi, arm konusunda meraklı çok, ülkemizde yeterli kaynak yok sayende çok kişi bilgilenecek umarım 😉 iyi çalışmalar
Teşekkürler Gevv, zamanım ve bilgim düzeyinde birşeyler yapaya çalışacağım. Bu sitenin web tabanının hazırlanmasında senin emeğin çok büyük ayrıca bunun içinde sana teşekkür ediyorum.
a.c(35): error: #20: identifier “amp” is undefined
a.c(35): error: #18: expected a “)”
a.c(57): warning: #1-D: last line of file ends without a newline
Target not created
Sitende başarılar dilerim …Arm7 artık yaygınlasması gereken bı olay…
teşekkürler
Mrb,
Öncelikle iyi dileklerin için teşekkür ederim.
“amp;” eklentileri yazılar arasındaki boşluklardan dolayı kendiliğinden çıkmış bir olay. Amp adında bir değişen tanımlamadığım için bu tür değişiklikleri sizin görebilmeniz gerekiyor.
Programın en son satırında boşluk koymadığın için de derleyici uyarı veriyor.
İyi çalışmalar.
anladım…
teşekkürler hiç karşılaştırmak aklıma bile gelmemiş
örnek lerin devamını sabırla beklıyorum 🙂
hazır elımde mcb2130 board ı varken onun uzerınde gelıstırme yapma sansın da olacak
Slm kolay gelsin
Lpc serisinde ,,,şnput pini nasıl tnaımlanır
lpc2138 board var elımde ve başka bi devrede lpc2138 kullanmak ıstıroyum ama bazı portların bazı ozellıklerını denemek ıstıyorum
bildiğiniz buton uyguılamasını denemem gerekıyor ılk olarak
p1,16 dan 23 e kadar led baglı,,,,p1,24 den 31 e kadar da dışarıya soket le çıkmış IO olarak
P1_24 den 31 e kadar olan pınler input,,,p1_16 dan 23 e kadar olanlar outpu olacak nasıl tanımlayabılırım ,,,basit örnekleri inceledim inputlu denk gelmedı
Mrb,
#define key_mask 0xff000000
PINSEL1=0; // ile portlar I/O
IO1DIR=0xFFFFFF; // 0-23 çıkış, 24-31 giriş
IO1SET=(IO1PIN&key_mask)>>8; //tuşları maskele ve çıkışa aktar
Kolay gelsin
Hocam teşekkürler
IO1SET=(IO1PIN&key_mask)>>8;
bunu IO1SET yerine IO1PIN yapınca çalıştı siz cevap vermeden önce yapmıstım bu yontemı ama Jtag portunu kapatıyor bilginiz olsun.. 😀
Seri porttan silmek gerekiyor tekrar kullanmak için Ulink ile
merhaba kutay hocam; paylaşımların için çok teşekürler. seninle tanışmak isterim eter6@hotmail.com
Sayın üstad. Öncelikle vermiş olduğun bilgilerden dolayı size teşekkür ederim.
Gelelim benim problemime.
Elimde sparkfun dan aldığım LPC2148 header bord var. Bu vermiş olduğunuz Led ON/OFF örneğini bu kit üzerinde uygulamak istedim ama çalıştıramadım.
Derleyici olarak Keil kullanıyorum,H-jtag ile yükleme yapabiliyorum. Keilde ki startup oluşturmaya gerek varmı? Sadece sizin vermiş olduğunuz kodu derlesek yeterli olurmu?
Birşey daha ver Benim kitte P1.24 e led bağlanmış durumda bu P1.24 kullanmak istesem nasıl bir değişiklik yapmam gerekir. ARM ye yeni başlamış birisiyim.
Şimdiden teşekkürler..
I do not think that every single student in whole world has a passion of critical essay performing! Nevertheless, people ,which do not like writing should utilize help of experienced essay writing service and enjoy a result.