STM32F4 Discovery - Vizeler

Başlatan bunalmis, 24 Aralık 2011, 15:13:13

muhittin_kaplan

Bende Anlamaya Çalışıyorum..

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fryrmnd

hocam 3. soruda define ile cpu ve bus frekanslarını belirlerken Hz değerleriniz decimal olarak verip  System _Init() içinde tanıtılmasın şeklinde mi istediniz. yoksa define a RCC_CFRG ye atanması gereken hex değerini mi vermemizi istiyorsunuz. yani System_Init() içinde decimal hexadecimal çevrimi şeklinde mi yapıcaz. 

muhittin_kaplan

Bunalmış Hocam asker adamım.
Bana Sırasıyla Şurasını Şunu Burasnı Bunu Yap demen gerek Bu OSC ayarları için. 15 sene sonra zor oluyor liberal yaklaşımlar. :)

fryrmnd

bunalmış hocam isterseniz dilim döndüğünce ben yapayım osc ayarlarını muhittin hocama

z

Alıntı yapılan: fryrmnd - 24 Aralık 2011, 22:34:45
hocam 3. soruda define ile cpu ve bus frekanslarını belirlerken Hz değerleriniz decimal olarak verip  System _Init() içinde tanıtılmasın şeklinde mi istediniz. yoksa define a RCC_CFRG ye atanması gereken hex değerini mi vermemizi istiyorsunuz. yani System_Init() içinde decimal hexadecimal çevrimi şeklinde mi yapıcaz.

Diyelimki programin tepesinde

#define Fcpu 168000000
#define Fahb 168000000
#define Fapb1 84000000
#define Fapb2 42000000

yazdik.

Demekki yazacagimiz fonksiyon  PLL ve dividerlari set etmek icin bu verilerden yola cikacak,
RCC->CFGR, RCC->PLLCFGR  vs registerlere yuklenecek sayisal degerleri bulacak.

@Muhittinkaplan

Sanirim 3.soru cevaplandiginda RCC->CFGR, RCC->PLLCFGR registerlerine neden o sayilar yukleniyor daha iyi anlayacaksin.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fryrmnd

anladım hocam bir abdest namaz arası versem. sonra yazmaya başlasam o fonksiyonları.

muhittin_kaplan

Aynen Benimde Mola Vermem Gerekiyor.

GreeN

#include "STM32F4xx.h"

void SystemInit()
{
unsigned int i;

    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 = 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 = 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()
{
    RCC->APB2ENR|=0x00000002; // Timer8 CLK'u aktif edelim (84 Mhz)	 Rehber 117
    TIM8->CR1=0x0080;              // Otomatik Reload  Rehber 333
    TIM8->PSC =42000-1;           // Prescaler değerimiz 42000, Count frekansimiz = fCK_PSC / (Yuklenen Deger + 1) 42E6 / (42000) = 1000 Hz
    TIM8->ARR =1000;                // Counter, Decimal 1000 olunca basa donsun 1 sn demek
    TIM8->CR1|=0x0001;            // Counter Enable
 
    while(1)
      {
         if (TIM8->CNT > 500) GPIOD->ODR= 0x0000F000;     // Ledler yansin
         else GPIOD->ODR= 0x00000000;                            // Ledler sonsun
      } 
}
// Programin sonu

Dersi Kaçırdık ,Sorular çözülmüş sanırım ben 4. yapayım dedim yapayım dedim.
Timer 8 'i kullandım.
Terörü Lanetliyoruz.

fryrmnd

green hocam 3. yü yapsaydınız da rahatlatsaydınız bizi  ;D

mozkan87

Ben hala bir çözüm yöntemi bulamadım M,N,P yi nasıl hesaplatacağımıza dair.

GreeN

Alıntı yapılan: fryrmnd - 24 Aralık 2011, 23:25:49
green hocam 3. yü yapsaydınız da rahatlatsaydınız bizi  ;D
Yaf 3 çözülmemişmiydi :P
Çözelim abi...
Terörü Lanetliyoruz.

fryrmnd

N-> 64-432  arası
P->2,4,6,8      "
Q->2-15         "
M->2-63         "

değer alabiliyor. önce bir algoritmasını çözsem yarım yamalak c bilgim ile yaparım inşallah.  :)

z

PLL frekansinin Xtal, M, N cinsinden degerini veren bagintiyi yazin.

Daha sonra da CPU clk frekansi ile PLL frekansi arasindaki bagintiyi yazin.

Gerisi corap sokugu gibi gelmesi lazim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

Soru 3 nedir bulamadım başlıkta.