OLIMEX-LPC2378-STK Kullanımı Hakkında

Başlatan burak172, 06 Eylül 2012, 16:23:30

burak172

Merhaba arkadaşlar;

Mikroişlemci programlamaya yeni başlıyorum. Elimde bir ARM7TDMI tabanlı OLIMEX LPC2378-STK board var. Keil uV4 ile çok basit kodlar yazıyorum başlangıç için. Örneğin, led yak - bekle - söndür gibi. Daha sonra, hazırladığım hex dosyasını Flash Magic ile seri port üzerinden kart'a gönderiyorum. Fakat bir yerde hata yapıyorum galiba. Çıkış olarak ayarladığım pinlerde hiçbir değişiklik olmuyor. Hepsi yaklaşık olarak 3.3V'da bekliyor. Programı yazarken mi, yoksa hex dosyasını karta yüklerken mi hata yapıyorum, bulamadım.  Bir mikroişlemciyi programlarken atılması gereken adımlar nelerdir? Hangi dosyalar yüklenmelidir? OLIMEX LPC2378-STK nasıl kullanılmalıdır? (OLIMEX'in datasheet'inde sadece pin dağılımları var. Nasıl kullanılacağı malesef yok). Bu konuda yardımcı olursanız çok sevinirim. Yazdığım örnek kod aşağıdadır.

#include <lpc23xx.h>

delay()
{
int i,j;
for(i = 1;i<= 2000000;i++)
for(j = 1; j<= 2000000;j++)
}
int main()
{
IODIR0 = 0x00000040;

while(1)
{
IOCLR0 = 0x00000040;
delay(); //delay
IOSET0 = 0x00000040;
delay(); //delay
}
}

Çok teşekkürler arkadaşlar.

MC_Skywalker

#1
IODIR0 = 0x00000040;


şeklinde tanımlamışsın. bunun doğruluğunu kontrol etmende fayda var.

LPC2138 in P0.0 pinine bağlı ledi yakıp söndüren program aşağıda bir incele istersen

#include <LPC21xx.H> 					
			
/* Gecikme Fonksiyonu */
void Gecikme (long int sure)
{
  long int i,k; 											// 16 bitlik i ve k degiskeni tanimlaniyor.
  for (i=1;i<=sure;i++) 							// girilen deger i degiskeninden büyük olana kadar for içerisinde dön
    {
		for (k=0;k<=12000;k++)
				{
				}
	  }
}	

int main (void) 
{
  IODIR0 = 0x01; 					//giris cikis ayarlama komutu 1 cikis 0 giris
                                                            // 1. biti cikis digerleri giris
 while (1)
    {								//sonsuz döngü
        IOSET0 = 0x01; 				  //1. biti 1 yap
        Gecikme(500); 					  //bekleme yap (yaklasik 500 msn - 12Mhz de)
        IOCLR0 = 0x01; 				  //1. biti 0 yap
        Gecikme(500); 					  //bekleme yap (yaklasik 500 msn - 12Mhz de)
    }
}

burak172

Çok teşekkürler  MC_Skywalker. Gönderdiğin kodu hemen inceleyeceğim. Yalnız bir sorum daha olacak. Dün akşam hazır bir kod ve bu kodun hex dosyasını buldum. Şanslıydım, çünkü OLIMEX- LPC2378-STK deneme kartı için yazılmıştı. Kart üzerindeki P0.21 ledini yakıp söndürüyordu. Hex dosyasını hemen yükledim ve program çalşmaya başladı. Nasıl sevindim anlatamam :) Ama çok sürmedi tabi. Aynı programı bir de ben yazıp hex dosyası oluşturayım dedim. Aynı kodu kopyalayıp Keil ile hex dosyası oluşturdum. Ve çalışmadı :( Nerede hata yapıyorum anlayamadım. Header dosyaları vs hepsi tamam. Program derleniyor. Yine de eksik olan birşeyler mi var?

MC_Skywalker

keil de proje oluşturup yazmalısın. proje oluşturmadan yaparsan olmaz.

Deneme yapmadan önce;

nxp sitesinden datasheet http://www.nxp.com/documents/data_sheet/LPC2377_78.pdf 

yine nxp sitesinden user manual i okunan gerek. Datashetten bile daha önemli