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.







17/10/2009 19:27
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.
22/06/2011 21:23
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!
5/07/2011 20:46
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ı.