Künye

Okuduğunuz yazı ARM7 Uygulamaları Kategorisi altında 14/03/2009 Tarihinde Kutay Tarafından Yazıldı

Yazı Seçenekleri : Yazıyı yazdır | Pdf Kayıt | Arkadaşına Gönder | Yazıyı Paylaş | Geri izleme | Yorum takibi

Etiketler : , , , ,

pwm_kucukpic

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 &amp; 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.
abcd0001abcd0003abcd0005abcd0006abcd0007abcd0008800x600