Nxp-Arm7 PWM
|Pwm uygulaması : LPC2148’in 6 tane pwm portu var, hepsi birbirinden bağımsız olarak kullanılabilir. Kullanımıda oldukça basit registerlere sahip. Aşağıya pwm2 portunu %50 duty cycle ile aktif eden bir program ekliyeceğim. Aynı şekilde diğer pwm portlarınıda istediğiniz duty cycle’da çalıştırabilirsiniz. (Pwm2 pini P0.7’dir)
#include void sistem_setup(void); void DLY_MS(long ms); void pwm_init (void); #define P0_0 0x00000001 int main(void){ sistem_setup(); // SCS = 0x03; // fast I/O moduna geelim PINSEL0=P0_0<<15; // PWM portları seçilir pwm_init(); while(1); } void pwm_init (void){ PWMPR=0; // PWMTC , her Pclk+1'de artar PWMMCR=0x02; // PWMMR0 seçilir PWMMR0=3000; PWMMR2=1500; // PWM2 için duty cycle %50 PWMLER=0x5; // PWMMR0, PWMMR2 değerlerini latch et PWMPCR=0x400; // PWM2 output enable PWMTCR=0x09; // timer start ve PWM enable edilir } void sistem_setup(void){ // Processor clock=5*12Mhz=60Hz PLL0CFG=0x24; // PLLCON ve PLLCFG registerleri ierigi 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 gibi bagla PLL0FEED=0xAA; // Feed process PLL0FEED=0x55; MAMCR=0x2; // MAM full Enable MAMTIM=0x4; // MAM fetch cycles = 4CCLK VPBDIV=0x02; // PCLK = 30 MHz } void DLY_MS(long ms){ long i; unsigned int j; for (i = 0; i < ms; i++ ) for (j = 0; j < 7500; j++ ); }
3 PWM portunu kullanarak kaliteli RGB ledlerle istediğiniz rengi elde edebilirsiniz. Bazı resimler aşağıdadır.
3 Yorum
Hocam siten gerçekten çok iyi.
Benim gibi yeni başlıyacaklara inanılmaz güç veriyor.
Bir gelişme kartı satın aldıktan sonra projelere başlıycam inş.
Keşke herkes böyle paylaşımcı olsa. Ülkemiz ancak böyle kalkınır.
Hocam öncelikle paylaşımlarınız için çok teşekkürler.
Ben ARM ile çalışmaya yeni başlayacağım ve açıkçası hızlı ilerlemem gerekiyor. Bu açıdan bana tavsiye edebileceğiniz kaynak veya program var mı?
Teşekkür ederim!
Merhaba,
Arm’a başlıyacaksın ama hangisine? Önce işine uygun işlemci araştırmakla başla. Bir sürü arm tabanlı işlemci(NXP, ST, TI) var ve hatta arm versiyonları da (Arm7, Arm9, Arm cortex M3, Arm cortex M0) farklı.