LPC1768 de PWM frekansı nasıl ayarlanır

Başlatan berkay_91, 27 Nisan 2016, 16:58:58

berkay_91

aşağıdaki kodlarla duty cycle ı istediğim gibi değiştirip 247.4 kHz lik pulsler üretiyorum, frekansı 1 Mhz e çıkarmak için ne yapmam gerek?

#include "lpc17xx.h"
#include "type.h"

#define SBIT_CNTEN     0 
#define SBIT_PWMEN     2
#define SBIT_PWMMR0R   1
#define SBIT_LEN1      1
#define SBIT_PWMENA1   9
#define PWM_1          0 //P2_0 (0-1 Bits of PINSEL4)

void Gecikme (long int sure);
void PWM_init();

void Gecikme (long int sure){
	
long int i,k;	// 16 bitlik i ve k degiskeni tanimlaniyor.
	
for (i=1;i<=sure;i++) 						
	{
		for (k=0;k<=12000;k++); // 12 mhz için
		
	}
}

void PWM_init(){ // 247.4 kHz
	
    LPC_PINCON->PINSEL4 = (1<<PWM_1);  // Cofigure pins(P2_0 for PWM mode.  
    LPC_PWM1->TCR = (1<<SBIT_CNTEN) | (1<<SBIT_PWMEN); // Enable Counters,PWM module 
    LPC_PWM1->PR  =  0x0;               /* No Prescalar */
    LPC_PWM1->MCR = (1<<SBIT_PWMMR0R);  /*Reset on PWMMR0, reset TC if it matches MR0 */
    LPC_PWM1->MR0 = 100;                /* set PWM cycle(Ton+Toff)=100) */
    LPC_PWM1->PCR = (1<<SBIT_PWMENA1); // Enable the PWM output pins for PWM_1
}

int main(void)
{
       SystemInit();
       PWM_init();
    
    while(1)
    {
			      
            LPC_PWM1->MR1 = 25; // duty cycle
            LPC_PWM1->LER = (1<<SBIT_LEN1); // Trigger the latch Enable Bits to load the new Match Values 
            
	    Gecikme(3000);
			      
	    LPC_PWM1->MR1 = 75; // duty cycle
            LPC_PWM1->LER = (1<<SBIT_LEN1); // Trigger the latch Enable Bits to load the new Match Values 
            
	    Gecikme(3000);
        }
    }

mistek

PWMFrekansı= İşlemci Çalışma Frekansı/(Prescaler+1)/Match Register Değeri(Hassasiyet)

Örnek olarak = 25MHz/(9+1)/6250= 400hz olacak

Şu konuda PWM örneği yapmıştım. https://www.picproje.org/index.php/topic,50728.msg381864.html#msg381864
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R