ARM'ye Nasıl Başlanır?

Başlatan Kadir Can(16F84), 27 Ağustos 2011, 19:46:57

Kadir Can(16F84)

Arkadaşlar,
Kaynak olarak sadece datasheet yeterli mi?
Datasheet'i biraz okudum, içinde pek örnek kod bulunmuyor.
Sadece datasheet yeter diyorsanız, datashhetten nasıl faydalanmam gerektiğini de anlatır mısınız?
Ayrıca IDE ile gelen örnek programları da incelemek faydalı olacaktır.
Başka kaynakları da araştırıyorum ama ne Assembly ne de C konusunda pek bir kaynak bulamadım.
Eğer sizin kullandığınız kaynaklar varsa( Özellikle Assembly, C de olabilir. ), adresini paylaşır mısınız?

MC_Skywalker

#61
ARM başlamak için yapman gerekenler bana göre basitçe şöyle:
1. https://www.keil.com/demo/eval/arm.htm bu adresten keil uvison un kısıtlısürümünü indirmek.
2. forumda şu konuda paylaşılan https://www.picproje.org/index.php/topic,35096.0.html LPC1343 kartını yapmak
3. şu konuda bahsedilen uygulmaları okumak https://www.picproje.org/index.php/topic,28357.0.html
4. şu adresteki kitabı okumak http://www.barissamanci.net/Makale/13/lpc2000-programlama-klavuzu/

C öğrenmek için aşağıdaki kaynaklardan faydalana bilirisin.
Alıntı Yap
C Derneğinin hazırlamış olduğu C ders notları

pdf şifresi   cdernek

http://hotfile.com/dl/85833422/8af0351/cdersi_cdernek.pdf.html kendim upload ettim.


Kaan Arslan-A dan Z ye C klavuzu 526 sayfa türkçe
http://rapidshare.com/files/53355257/C_Dili.rar.html linki test etmedim.

untumuşum birde bu var
http://web.inonu.edu.tr/~mkarakaplan/ckitabi.pdf
« Son Düzenleme: 30 Kasım 2010, 00:05:56 Gönderen: MC_Skywalker »

Verdiğim kitapta ki konular ve örnekler ARM7 için fakat çok az değişiklikle aynı kodu Cortex-M serisinde de kullana bilirisin
ARM7 (LPC2xxx) örneği;

#include <LPC21xx.H> 						//islemcinin kaynak dosyasi ekleniyor.
/* Gecikme Fonksiyonu */
void Gecikme (long int sure)
{
long int i,k;								// 16 bitlik i 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++)
		{}
	}
}
/* Ana Fonksiyon */
int main (void) {
IODIR0 = 0x00000001; 						//giris cikis ayarlama komutu 1 cikis 0 giris
											// 1. biti cikis digerleri giris
while (1)
	{										//sonsuz döngü
		IOSET0 = 0x00000001; 				//1. biti 1 yap
		Gecikme(500); 						//bekleme yap (yaklasik 500 msn - 12Mhz de)
		IOCLR0 = 0x00000001; 				//1. biti 0 yap
		Gecikme(500); 						//bekleme yap (yaklasik 500 msn - 12Mhz de)
	}
}


Cortex-M3 (LPC17xx) örneği;
#include <LPC17xx.H> 						//islemcinin kaynak dosyasi ekleniyor.
/* Gecikme Fonksiyonu */
void Gecikme (long int sure)
{
long int i,k;								// 16 bitlik i 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++)
		{}
	}
}
/* Ana Fonksiyon */
int main (void) {
LPC_GPIO1->FIODIR = 0x000000FF; 						//giris cikis ayarlama komutu 1 cikis 0 giris
											// 1. biti cikis digerleri giris
while (1) 
	{										//sonsuz döngü
		LPC_GPIO1->FIOSET = 0x00000001; 				//1. biti 1 yap
		Gecikme(500); 						//bekleme yap (yaklasik 500 msn - 12Mhz de)
		LPC_GPIO1->FIOCLR = 0x00000001; 				//1. biti 0 yap
		Gecikme(500); 						//bekleme yap (yaklasik 500 msn - 12Mhz de)
	}
}


LPC13xx ile ilgili kaynak

Datasheet http://ics.nxp.com/products/lpc1000/datasheet/lpc1311.lpc1313.lpc1342.lpc1343.pdf
User Manual http://ics.nxp.com/support/documents/microcontrollers/?scope=LPC1343&type=user
Errata http://ics.nxp.com/support/documents/microcontrollers/?scope=LPC1343&type=errata

Örnekler http://ics.nxp.com/support/lpcxpresso/zip/examples.lpc13xx.zip
CMSIS kütüpanesi http://ics.nxp.com/support/lpcxpresso/zip/library.cmsis.lpc13xx.zip
Stack kullanımının izlenmesi ile ilgili örnek http://ics.nxp.com/support/lpcxpresso/zip/examples.stack.usage.lpc13xx.zip

kartın şeması http://ics.nxp.com/support/lpcxpresso/pdf/lpc1343.schematic.pdf

Erol YILMAZ

Alıntı yapılan: Kadir Can(16F84) - 05 Eylül 2011, 13:54:13
Arkadaşlar,
Kaynak olarak sadece datasheet yeterli mi?
Datasheet'i biraz okudum, içinde pek örnek kod bulunmuyor.

Datasheet değil USER MANUAL lazım...

Kadir Can(16F84)

MC_Skywalker Hocam;
C biliyorum.
Stellaris EK-LM3S811 satın aldım ve şu anda kargolanıyor. :)
Kitim hazır yani. :)
Tavsiyelerin için teşekkür ederim.Bundan sonraki geliştirme kitimi kendim hazırlayacağım.
O zaman bana lazım olacak bilgiler var.
Tekrar teşekkür ederim.
allegro Hocam;
User Manual'i araştırdım, bu yetecek gibi görünüyor.Teşekkür ederim. :)

Kadir Can(16F84)

Kitim geldi arkadaşlar. :)
Şimdi kurulumları yapıyorum.
Birazdan örnek programlarla çalışmaya başlayacağım.

Erol YILMAZ


MC_Skywalker

hayırlı olsun, güle güle kullan.

Kadir Can(16F84)

Teşekkürler arkadaşlar.
Code Composer Studio örnek programları derlemedi.Bir hata veriyor.Şu an onunla ilgileniyorum.
Eğer düzelmezse KEIL'e geçeceğim.

-Hasan-

Merhaba arkadaşlar;

Ben de şunu merak ettim; ARM ' a başlarken LPC2138 (ARM7 İşlemci) ile mi başlanmalı? yoksa LPC1768 (Cortex M-3 İşlemci) ile mi başlanmalı?

Cevaplarınız için şimdiden teşekkürler.

Erol YILMAZ

Arm7 serisi çekirdekler Cortex m3 ten önce tasarlandı ve Cortex M3 genel olarak "daha iyi" özelliklere sahip.

Kadir Can(16F84)

Hocam User Manual'i okudum.
Şimdi datasheete bakıyorum.
Yapmam gereken başka şeyler var mı?

Erol YILMAZ

Alıntı yapılan: Kadir Can(16F84) - 13 Eylül 2011, 14:55:03
Hocam User Manual'i okudum.
Şimdi datasheete bakıyorum.
Yapmam gereken başka şeyler var mı?

denemelere başlayabilirsin :)

Kadir Can(16F84)

Denemelere başladım hocam ama hep StellarisWare kullanıyorum.
Ben kendi yazılımımı kütüphane bağımsız yazmak istiyorum.
Bu nedenle azıcık daha datasheet karıştırmam gerekiyor.

Erol YILMAZ

ARM da nedense çok fazla register var.  PIC16 PIC18 gibi sade değil :)

GreeN

Afedersiniz yeni başlık açmak istemedim. ARM işlemcilerde ADC hızları hangi rakamlarda ? 400Ksps 10bit vs... DSP uygulamalar için özel bir serisi var mı?

Birde pipline olayının dezavantajının (dallanmalarda) bize ne kaybettirdiğini anlamadım.



Terörü Lanetliyoruz.