Timer ile ilgili bir soru...

Başlatan GreeN, 12 Eylül 2012, 17:47:22

GreeN

AHB frekansı 168 Mhz
APB1 frekansı 42 Mhz
.....
.....
TIM4->ARR = 65535 // auto reload
TIM4->PSC =1 ;       //Prescaler
TIM4->CR1|=0x0001; //TIM4 Start
.....
.....// diğer kodlar
TIM4->CR1&=~0x0001;	//TIM4 stop
counter_value =TIM4->CNT ;


Koda göre counter_value = 2300 çıkıyorsa bunun zaman olarak karşılığı nedir ?  (2300*(1/42Mhz) = 54,76uS) ????

Prescaler misal 2 olsaydı  , 2300*2/42Mhz =109,52uS sonucumu çıkacaktı ?

void DMA2_Stream0_IRQHandler ()
{
	int j;
	TIM4->CR1&=~0x0001;	//TIM4 stop
	counter_value=TIM4->CNT;
	Display();
	for(j=0;j<10000000;j++);
	TIM4->CNT&=0;
	TIM4->CR1|=0x0001; //TIM4 Start
	//DMA2->LIFCR|=0x20;// dma2 int flag temizleme
}


işleyen bir dizi kodun ne kadar sürede işlediğini görmek istiyorum . DMA kesme aktif olduğunda timer'ı durdurup değeri counter_value'ye alıyorum. sonra timer4 değerini sıfırlayı tekrar çalıştırıyorum.  conunter_value değeri sırasıyla  2345 , 2330 , 2300 ,2345, 2330 ... şeklinde her döngüde farklı değer alıyor. işleyen kod aynı olmasına rağmen . Bunun sebebi denir acaba ?
Terörü Lanetliyoruz.

GreeN

Alıntı yapılan: gerbay - 12 Eylül 2012, 19:18:10
hocam buna cevap verebilmek için tüm kodu görmek lazım, siz interrupt dışındaki zamanı interrupt içinde ölçüyorsunuz

int main(void){
	
	int i,j;
	arm_status status; 
	arm_cfft_radix4_instance_f32 S; 
	float32_t maxValue; 
	status = ARM_MATH_SUCCESS;
	
	LCD_IO_INT();
	ILI9326_init_3();
        ADC_trible_Config();
	DMA2_S0_IRQConfig();
	TIM_Config();
	LCD_SetTextColor(0x0F00);
	LCD_SetBackColor(0x0000);

         ADC_SoftwareStartConv(ADC1); 
	 TIM4->CNT=0;
         TIM4->CR1|=0x0001;
  while (1)
  {
		}
	
}


Yaptığım şu , adc çevrimi başlattığımda timer'ıda başlattım.
dma bufferı doldurunca kesme oluşturdum.
bundan sonra her dma kesmesine geldiğinde timer değerini aldım.
dma için ilgili bayrak temizlendiğinde tekrar N adet veriyi ram'e alıyor. (koşulsuz bu tekrarlanıyor.yani yapılan işlem her seferinde aynı)

Yapmaya çalıştığım adcden N adet veriyi nekadar sürede ram'e alabiliyorum .
Terörü Lanetliyoruz.