Rng modulu calısma hızı??

Başlatan everygelem, 01 Temmuz 2013, 13:25:44

everygelem

Merhabalar
stmf32f4 discovery de yeniyim. z hocanın derslerindeki bir konuda takıldım. RNG(rastgele sayı uretecisi) modulu ile 256 lık bir diziyi besliyorum. bunuda tmr7 ile süresini ölçerek yapmak istiyorum.
tmr7 enable yapıp tim7->cnt degerini bir değişkene atıyorum, daha sonra rng ile 256lık diziyi doldurup tekrar tim7->cnt degerini ikinci bir değişkene yazıyorum.
kafam bu noktada takılıyor. ilk degişken j = 9 iken ikinci değişken k=18843 oluyor. normalde cnt degeri 2000 de bir sıfırlaması gerekmez mi     TIM7->ARR =2000; ile ? bir l diye bir değişken ekledim oda l=18853 oluyor. bir satırdaki komut işleme hızı burdan yaklaşık olarak bulunabilirmi?

#include "STM32F4xx.h"	

void SystemInit()
{
	unsigned int i;

    (*((int*)0xE000ED88))|=0x0F00000;  
    for (i=0;i<0x00100000;i++);          // OSC oturtma ve kurtarma rutini
    RCC->CFGR |= 0x00009400;         // AHB ve APB hizlarini max degerlere set edelim
    RCC->CR |= 0x00010000;            // HSE Xtal osc calismaya baslasin        
    while (!(RCC->CR & 0x00020000));// Xtal osc stabil hale gelsin
    RCC->PLLCFGR = 0x07405408;      // PLL katsayilarini M=8, N=336, P=2 ve Q=7 yapalim
//  RCC->PLLCFGR = 0x07402A04;     // PLL katsayilarini M=4, N=168, P=2 ve Q=7 yapalim
    RCC->CR |= 0x01000000;            // PLL calismaya baslasin  (Rehber Sayfa 95)
    while(!(RCC->CR & 0x02000000)); // Pll hazir oluncaya kadar bekle
//  FLASH->ACR = 0x00000705;        // Flash ROM icin 5 Wait state secelim ve ART yi aktif edelim (Rehber Sayfa 55)
    FLASH->ACR = 0x00000605;        // Flash ROM icin 5 Wait state secelim ve ART yi aktif edelim (Rehber Sayfa 55)
    RCC->CFGR |= 0x00000002;        // Sistem Clk u PLL uzerinden besleyelim
    while ((RCC->CFGR & 0x0000000F) != 0x0000000A); // Besleninceye kadar bekle
    RCC->AHB1ENR |= 0x0000000F;    // GPIO A,B,C,D clock'u aktif edelim 
    GPIOD->MODER = 0x55000000;     // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (LEDler icin)
    GPIOD->OSPEEDR= 0xFFFFFFFF;   // GPIOD nin tum cikislari en yuksek hizda kullanacagiz 
} 

int main()
{
		int Random [256];
	  volatile u16 i;
	  volatile uint32_t j,k,l;
	  RCC->APB1ENR|=0x00000020; // Timer7 CLK'u aktif edelim (42 Mhz)
    TIM7->CR1=0x0080;              // Otomatik Reload
    TIM7->PSC =42000;           // Prescaler degerimiz 42000, Count frekansimiz = fCK_PSC / (Yuklenen Deger + 1) 42E6 / (42000) = 1000 Hz
    TIM7->ARR =2000;                // Counter, Decimal 1000 olunca basa donsun 1 sn demek
    TIM7->CR1|=0x0001;            // Counter Enable
 /*******random 256 adet sayi uret*******/

    RCC->AHB2ENR |= 0x40;        // RNG modulunun clock'unu aktif edelim 
    RNG->CR=0x04;                    // RNG modulu calismaya basladin
    j=TIM7->CNT;
    for(i=0;i<256;i++)                 // 256 adet random sayi uretilsin
     {
       while (!(RNG->SR&1));        // kullanilabilir sayi olusumunu bekle
       Random [ i ] = RNG->DR;
   }
	/******************/
    k=TIM7->CNT;
    l=TIM7->CNT;
	 while(1)
      {
	} 

}