arm7 port işlemleri

Başlatan burak_82, 16 Mayıs 2008, 19:42:01

burak_82

Arkadaşlar ARM7 LPC2148 de port işlemleri ile ugraşıyorum.

IODIR,IOSET,IOCLR,IOPIN registerlerinin ne işe yaradığını buldum ama  FIOMASK,FIOPIN,FIOSET,FIOCLR registerleri ne işe yarar çözemedim. Bir de portlara 8 bitlik olarak direkt erişmek mümkünmüdür?

ise

fast io için kullanılır  portun hızlı işlem yazması istendiğinde kullanılır. aynı şekilde fast interrupt ta vardır   fiq   irq olarak 2 tanedir

burak_82

Bu registerlere birşey yazdığımda porta etkisi olmuyor. Hızlı derken kastettiğiniz nedir?

z

Diyelimki 16 bit portu okuyup senin için önemli bir bitin 1 yada 0 oluşuna bakacaksın.

Ne yaparsın?

Portu okursun ve bunu 16 bitlik özel bir veri ile maskelersin ve sonuca bakarsın.

Diyelimki porttan 1234H okudun. Sen 0. bitin durumunu merak ediyorsun.

1234H ile 0001H i AND işlemine tabii tutup sonuca bakarsın.

FastIO işlemlerinde bu işi hardware yaptırıyorsun. FIOMASK değerine 0001H yazar ve  portu FIO tipi komutla okursan doğrudan maskelenmiş değeri okumuş olursun. Artık Maskeleme ile senin uğraşmana gerek kalmaz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

strom

Yani hocam ARM işlemciler pic gibi donanımsal olarak bit bit okuyamadığından dolayı böyle bir kolaylık sağladılar, öyle mi?

BenC

Alıntı yapılan: "burak_82"Bu registerlere birşey yazdığımda porta etkisi olmuyor. Hızlı derken kastettiğiniz nedir?

Harici RAM veya benzeri bir hafıza bağladığınızda, kesmelerde vs çok yüksek hız gerektiren uygulamalar yaptığınızda hızlı giriş çıkışı kullanmak gerekir. Led bağlamakla, buton bağlamakla aradaki farkı görebileceğimizi zannetmiyorum.
ŞEHİT KANIYLA ALINMIŞ BU GÜZELİM VATANIN TOPRAKLARI KARIŞ KARIŞ SATILIYOR!!  VATAN HAİNİ OLMA!!

strom

Hocam kastettiğiniz hız çevrim saykılı olarak hız mı yoksa tetiklenme hızı mı?Yani kazancı çevrim saykılını düşürürerek mi veriyor?
Sanırım tetiklenme hızından bahsediyorsunuz.Çünkü RISC mimarisinde veri yollarında bekleme olmadığı için her iki durumda da aynı komut süresi geçerli olmalı.
Tabi Fast portlarda ki donanımsal olarak yapılan maskelemeyi saymazsak.

Analyzer

Selam,

Fastio için SCS register'ini ayarlamanız gerekir.

Analyzer
Üşeniyorum, öyleyse yarın!

death_free

Selam Benim bi sorum olacak Portun bir bitinin 1 yada 0 oldugunu nasıl sorgulayabilirim (gcc de )

Kolay gelsin.
<<<<<Aslana sormuşlar ensen niye kalın ? Aslan : "Kendi işimi kendim görürüm " demiş>>>>  World Of Warcraft Cataclysm  /// REalm : Frostmane  Nightwalkér

BenC

Alıntı yapılan: death_free - 16 Haziran 2010, 16:39:58
Selam Benim bi sorum olacak Portun bir bitinin 1 yada 0 oldugunu nasıl sorgulayabilirim (gcc de )

Kolay gelsin.

#define Buton (1 << 14) 		// Butonun bağlı olduğu pin port0.14

#define Buton_Dir IODIR0		// Butonun bağlı olduğu pini yönlendirme 
#define Buton_Set IOSET0		// Butonun bağlı olduğu pini set etme
#define Buton_Clr IOCLR0		// Butonun bağlı olduğu pini clr etme
#define Buton_Pin IOPIN0		// Butonun bağlı olduğu port

		// Butonu okumak için çeşitli yollar mevcut LPC2148 in datashhetinde mevcut.
		// Bunlardan birtanesi 
		
		 if (Buton_Pin  & Buton) 
		 	{
				return 1;
			}
		 else
			{
				return 0;
			}

ŞEHİT KANIYLA ALINMIŞ BU GÜZELİM VATANIN TOPRAKLARI KARIŞ KARIŞ SATILIYOR!!  VATAN HAİNİ OLMA!!