Bana biraz KEIL, Biraz C ve biraz ARM öğretenin 40 yıl kölesi olurum. :)

Başlatan EMG81, 23 Mart 2011, 22:49:17

EMG81

Selam. ARM öğrenme konusunda halen ciddiyim. İleride bu çekirdekli MCU ların işlerimi göreceğini düşünüyorum. Görünüşe göre Basic dünyası ARM a hazır değil. Bu işi Az bildiğim C ve Hiç bilmediğim KEIL ile yapıcam.

Bu 3 bileşen Ya az yada hiç bilmediğim şeyler olduğundan bu MCU ları bi türlü sevemedim. Şu an port yönlendirmesini bile beceremiyorum. Ufak ufak led yakıp söndüren, Karaşimşek, 7 segment display, Monochrome karakter LCD , GLCD tarzında hızlanıp gitmeyi düşünüyorum. Eski küçük programlarınızı benimle paylaşırsanız çok sevinirim.

Not: LPC serisi ile çalışmak istiyorum

aykut54

Aleyküm selam
Elimde başlangıçta peyder pey yaptığım bir kaç çalışma var 2 uygulamayı Mehmet=M_B yapmıştı... LPC2103 led yakma, LCD yazı projesi, Arm hakkında bir kaç bilgi
http://hotfile.com/dl/111541402/c2d80ae/Desktop.rar.html

not: ARM başlığında bir kaç arkadaşımın verdiği bilgiler projelerde vardır...

Faydası olsun

EMG81

sağolasın Aykut. Verdiğin programı indirdim fakat açamadım. Keil şu hatayı vermekte

[IMG]http://img405.imageshack.us/img405/1120/adszyiv.png[/img]

En başta keil hakkında birz bilgi sahibi olsam daha iyi olacak gibi.

rf

Türkçe olarak aşağıdaki kaynak başlangıç ve ilerisi için çok başarılı. Eğer okuyorsa yazarına buradan teşekkürlerimi sunarım.

http://www.barissamanci.net/AnaKategori/3/ekitaplarim/

Alıntı Yap"Bu kitapta LPC2000 ARM7 işlemcileri üzerine aldığım notların toparlanmış halini bulacaksınız.Başlıklar uzun zaman aralığında farklı zamanlarda yazıldığından, farklı bölümler arasında konu anlatımı bakımından farklılıklar olabilir.Kaynak olarak Hitex firmasının kitaplarını ve NXP işlemci datasheetlerini kullandım. Bu kitabın herhangi bir resmiyeti yoktur, tamamen toparlanmış ders notlarından ve çevirilerden oluşmaktadır. Kitapta anlatılanlar ve verilen örnek programların kullanımı tamamen okuyan kullanıcının sorumluluğundadır. Örnek olarak verilen programların büyük bir çoğunluğu Keil uVision IDE sinde simüle edilmiştir.Aksi belirtilmedikçe anlatımlar LPC2104 işlemcisi için yapılmıştır. Kitapta kullandığım işlemciler LPC2101, LPC2104, LPC2148 ve LPC2368 dir.



Yabancı olarak
Hitex'in Kitapları
http://www.hitex.com
http://www.hitex.com/fileadmin/pdf/insiders-guides/lpc/lpc-arm-book_rev10-screen.pdf
http://www.hitex.com/fileadmin/pdf/insiders-guides/lpc2300/lpc2300_book_v2_srn.pdf
KOSGEB Girişimcilik Desteği Bilgi ve Paylaşım Platformu http://www.girisimcilikdestegi.com/

aykut54

istersen şöyle @Barışsamancı kitabında keil ile adım adım proje oluşturma derleme ve proje ayarları yapılmakta ordan bakarak sıfırdan bir dene istersen o hata daha önce bende vermedi.Ben başka arkadaşlarımıda ayrnı projeleri verdim direk açtı ve derlemede sorun yoktu....

Birde keil full için crack(lisans)yap daha iyi olur....

MC_Skywalker

Ben @Barışsamancı kitabını prin ettim öyle çalışmayı düşünüyaorum ama şu işler tüm vaktimi çalıyor. Kesinlikle ilk önce @Barışsamancı kitabını tavsiye ederim.

Nedenler

Sana C'yi ve ARM'yi öğrendiğim iki kitap veriyorum. İkisi de bulabileceğin en sağlam kitaplar. Altın değerinde kaynaklar. C ve Sistem Programcıları derneğine ait C kitabı ve Barıs Samancı'nın ARM kitabı.

http://hotfile.com/dl/111600764/10ffe16/ARM.rar.html

C için şifre isteyecektir. Şifre; cdernek

EMG81

Sanırım benim ya keil imin lisansı yada proje oluşturma ile ilgili bir sıkıntım var. Kullandığım program Keil uVision4.10 ve License kısmında birşeyler var ama lisanslımı değilmi olduğunu çözemedim. Sizin sorunsuz kullandığınız keil i indirebileceğim bir yer yada sizinkini upload ederseniz yanlış bir derleyici ile vakit kaybetmem diye düşünüyorum.

Haa Dip not olarak şuda varki example klasöründeki örnek programları çok iyi açıp, derliyor. Yeni oluşturduğum ve dışarıdan edindiğim programları açma sıkıntısı var..

Barış Samancının kitabına gelince, kitabı geçtiğimiz yaz fotokopiciden bastırtıp,cilt haline getirtmiştim. Gerçekten çok iyi ve yararlı bir kaynak. Başıktada bahsettiğim gibi bu 3 konuyuda az bildiğimden kitabı okuduktan sonra pek ilerleme katedemedim. Çünkü o kadar C bilmiyordum. Şimdide bilmiyorum gerçi en azından eskisi kadar kötü değilim. Orada bahsettiği şeylerin aynısını yapıyorum yeni proje oluşturmada ama o hata hep çıkıyor.

Dediğim gibi sizin önerilerinizle Farklı bir keil indirsem bu sorunu kökten çözecek gibi. Sevgiler.

aykut54

http://www.sonsivri.com/forum/index.php?topic=32457.0
keil quvison4 arm4.12 mdk full yapabilirsiniz...

linkteki 200mb program keil quvison4 bu sadece bizim derleme yapmamız için gerekli program

diğeri ise keil arm mdk4.12 library bunda ise stm32.aducxxx ve diğer arm modelleri için kütüphane dosyaları vardır...Sağlıklı kullanım için bunlarıda yükleyin.

son link ise crack(keygen) bununla 2030 ağustos ayına kadar full ve sınırsız kod limitsiz kullanın....

ALINTIDIR....
32 bit için karaşimşek 
#include <LPC2103.h>

unsigned long long adres;

void gecikme(void)	{
      unsigned int j;
      for (j = 0; j < 140000; j++ );
}


int main(void)	{
   
	IODIR =   0xffffffff; // Butun portlar CIKIS
	IOCLR =   0xffffffff; // Butun portlar SIFIRLANIR

	while(1)	{  
  		for (adres=1;adres < 0x100000000;adres<<=1)	{
  			IOSET = adres;  
  			gecikme(); 
  			IOCLR = adres;
  			gecikme(); 
		}

		for (adres=0x100000000;adres > 0x1;adres>>=1)	{
  			IOSET = adres;  
  			gecikme(); 
  			IOCLR = adres;
  			gecikme(); 
		}
 	}	
}


hocam tecrübenizden bizleride istifade edin :)

Programın çalışmasında derleme işlemlerinde sıkıntı yok

EMG81

Teşekkür ederim Aykut. Programı indirdim, kurdum fakat lisanslanmasını beceremedim ama olsun. Şimdilik 32k lık alanda benim için yeterli. (Full olsa iyi olur tabiki) Verdiğin örnek kodları derledim, değiştirdim, üzerinde oynamalar yaptım. Şu anlık Keil in full olmaması dışında bi sıkıntım yok. Fakat size sorularım var.

1- #include <LPC2103.h> tarzı dosyaları programın en başına include ediyoruz. Picler için delay.h vb şeylerde ekliyorduk mesela. ARM lar da daha farklı eklemem gereken include dosyaları varmıdır ?

2- Anladığım adarıyla  IODIR portların girişmi çıkışmı olduğunu tayin etmekte ve 1 yaptığım bit çıkış olmakta 0 larda giriş.. IOCLR portları temizleme için kullanıyor. yine 1 yaptığım bitler Temizlenip lojik 0 oluyor.IOSET ise 1 yapılan biti lojik 1 yapmakta. Peki mesela ben 74595 ten Seri data göndericem. 3 ucum var ve bunu yazılımsal olarak yapıcam. Donanım kullanmıyacam. Piclerdeki gibi Porta.0=1; gibi kolay bir yol varmıdır ARM lerde.

Şimdilik sorularım bukadar. Bunlarıda çözünce yeni sorularım olacak. Sevgiler.

Nedenler

1. Bahsettiğin durum ARM7 için geçerli değil (yanlışda biliyor olabilirim) bu yüzden gecikmeler genelde bir for döngüsü ile sağlanıyor. İstersen delay_ms delay_us isimlerinde fonksiyonlar oluşturup kendi delay küpüthaneni oluşturabilirsin. Bahsettiğin durum Cortexlerde geçerli CMSIS denilen bir olay var. Bluetooth SD/MMC gibi donanımlara ait kütüphane dosyaları mevcut.

2. ARM de direk pinler üzerinde işlem yapamazsın maskeleme denilen bir olay vardır. Mesela 1. pine bağlı butonu kontrol etmek için if(IOPIN0&0x00000001) yazarsın. Burada 0x00000001 olarak verdiğin bit numarasını IOPIN içerisinde ki değerle bitsel ve işlemine tabi tutarsın pin durumu 1 ise if mantıksal olarak doğrunır ve işlemler uygulanır. Ben yine bir shift register olan 4094 ile yaptığım programdan örnek vereyim sana;

#define data_set IOSET0=0x00000001
#define data_clr IOCLR0=0x00000001
#define stb_set  IOSET0=0x00000002
#define stb_clr  IOCLR0=0x00000002
#define clk_set  IOSET0=0x00000004
#define clk_clr  IOCLR0=0x00000004


Yukarıdaki şekilde entegre pinlerini giriş ve çıkış olarak yönlendirecek komutları tanımladım. Sonra bir for döngüsü kurdum ve çıkış vermek istediğim sayıyı bit bit gönderdim. Gönderirkende kontrol ettiğim bit değeri 1 ise data_set; dedim 0 ise data_clr dedim. Her bit göndörmemde de bir clock uyguladım "clk_set; clk_clr;"

Anlatabildim mi ?

X-Fi

#define led_pin  21 //  P1.21
#define in_pin   31 //  P1.31

#define in	((LPC_GPIO1 -> FIOPIN>>in_pin)&1)

#define led(x) ((x) ? (LPC_GPIO1->FIOSET| = (1<<led_pin): (LPC_GPIO1->FIOCLR =(1<<led_pin));

/* Kullanimi */

   led(1);
   led(0);

/* veya */

   led(!in);


LPC Cortex M3 lerde de bu şekilde kullanılıyor arm7 yede uyarlayabilirsiniz. led i 1,0 olarak değiştirebiliyorum diğer örnektede in pini okuyup tersini led pinine yazar.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

EMG81

Çok sağolun. Verdiğiniz bilgiler üzerine hemen denemeler yapıcam.

Not: Soruların devamı gelecek. :)

emrah

slm arkadaşlar keil de arkadaşların paylaştıgı kodları kopyalayıp derlemek istedim fakat yapamadım. programı kopyalayıp farklı kaydet yapıp   
orn.c   şeklinde kaydettim fakat compiler ikonu aktif olmadıgı için derleyemedim. nereyi atlamaktayım??

Nedenler

@emrahGS Öncelikle project menüsünden yeni proje oluşturup kullanacağın çipi seçeceksin. Projeni oluşturduktan sonra karşına boş bir sayfa gelecek. Onu dosya_ismi.c olarak kaydedeceksin. Daha sonra kodları oraya yapıştırarak derleyebilirsin. Ancak bunun için de kullanacağın çipi #include <lpc21xx.h> şeklinde programın en üstüne dahil etmelisin.