STM32F407 Cortex M4 şamataları

Başlatan bunalmis, 16 Ekim 2011, 17:14:50

z

Yazılımla bir pini 80 Mhz de toggle ettim. ART daki sorun kendini nasıl gösteriyor anlamadım.

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

kck87

Alıntı yapılan: gambit1244 - 20 Ekim 2011, 17:58:27
arkadaşlar kitten nerden baksanız 100 150 kişi sipariş verdi
bu arkadaşlar denemeleri yapmıyormu acaba
yoksa kitin gelmesinimi bekliyorlar
sanki 10 15 kişi ugraşıyormuş gibi geldi bana nedir durumlar
yada herkez problemsiz debug işlemlerini clock ayarlarını yaptı oyüzden yeni konularımı bekliyor anlamadım
yada ben sınıfın en inek öğrencisiyim heralde  :-[

simule denemelerini yapmaya çalışıyorum, uygulama için kitin gelmesini bekliyorum bende, akşamları 1 saat kadar bakabiliyorum sabahları da malum çalışıyoruz, pek zamanımız da kalmıyor açıkçası, ama inatla öğrenmeyi istiyorum, allahım tamamına erdirir inşallah.
@bunalmış hocamızın yadıklarını sürekli okuyor ve anlamaya çalışıyorum, anlamadanda saçmasorular sormak istemiyorum. mikroişlemci hakkında yüzeysel bilgim var, arm ile başlamak bayaa kasıntılı bir süreç olacak.



Alıntı yapılan: sigmoid - 20 Ekim 2011, 18:49:43
bunalmis hocam, çalışmalar için çok teşekkürler. Yoğun olduğum için forumu ancak akşamları yarım saat kadar bakabiliyorum. Doğal olarakta bazı şeyleri kaçırmaktan korkuyorum. Bu yazdıklarınızı bir ara pdf olarak toplarsanız çok güzel olur.

Birde  ARM konusunda mutlaka okuyun dediğiniz kitaplar hangileridir? Ebook olması tercihimdir. İngilizce Türkçe farketmez.

Yeni işe başladığımdan bir yoğunluktur gidiyor. Fırsat bulunca ve kartlar gelince bende az çok elimden geldiğince foruma birşey eklemek isterim.

@sigmoid arkadaşım seninle aynı durumdayız, yeni işe girdim yoğunve zamanım yok :)
dediğin gibi dersleri pdf olarak ouşturup yayınlamak daha güzel olur.

 nickim'in terör örgütünün kck yapılanması ile alakası yoktur. bazı arkadaşlarımdan butarzda duyumlar aldım.

Prof.EleCTroN

ART 'ın çalışmasını yada yapısını detaylıca anlatan bir dökümana rastlayan var mı?

z

#63
Şu ana kadar ratlamadım.

Fakat bazı ipuçları var bunları yorumlayınca şöyle çalışıyor olabilir.

CPU en büyük hızda çalışırken (168Mhz) flash roma ancak 6 clkda bir erişebiliyor. Daha açık ifadeyle 6wait state var ve her flash okumadan sonra 6 clk bekleme var.

Adamlar Flashı 32bit değil 128 bit yapmışlar. Yani bir çıpıda 4 tane 32 bit okuyor. Böyle olunca CPU ikinci okumayı 6 clk sonra yapsa bile

Elinde zaten daha sonra ihityaç duyacağı kodlar hazırda bekliyor oluyor.

Dediğim gibi şimdilik bu bir yorum. Detaylı bilgi bulursak aslını öğreniriz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#64
Aşağıdaki örnek programı Keil ders başlığında son konuda vermiştim.

#include "STM32F4xx.h"

void SystemInit()
{
    RCC->AHB1ENR |= 0x00000008;    // GPIOD donanımının clock sinyalini uygulayalım
    GPIOD->MODER = 0x55000000;     // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (Ledler bu pinlerde)
    GPIOD->OSPEEDR= 0xFFFFFFFF;   // GPIOD nin tum cikislarinı en yuksek hizda kullanacagiz
}

int main()
{
    while(1)
   {
     GPIOD->ODR= 0x0000F000;     // Ledler yansin
     GPIOD->ODR= 0x00000000;     // Ledler sonsun
   }
}


C dersleri başladığında göreceğiz fakat şimdiden RCC->AHB1ENR  şeklinde satır görürsek bunun, RCC register grubunun bir üyesi olan AHB1ENR registeri anlamına geleceğini bilelim. Yanı sonuçta bu bir register. Bu registeri Rehberde RCC_AHB1ENR olarak bulabilirsiniz.

Deneme kitindeki ledler  D portunun 15, 14, 13 ve 12 nolu bitleriyle kontrol ediliyor.

     GPIOD->ODR= 0x0000F000;     // Ledler yansin
     GPIOD->ODR= 0x00000000;     // Ledler sonsun

Yukarıdaki kodlar 32 bitlik D portuna 0x0000F000 ardından da 0x00000000 yazıyor.

Yani ilk satır 4 ledin hepsini birden yakıyor, sonraki satırda hepsini birden söndürüyor.

Şimdi SystemInit fonksiyonundaki

    RCC->AHB1ENR |= 0x00000008;    // GPIOD donanımının clock sinyalini uygulayalım
    GPIOD->MODER = 0x55000000;     // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (Ledler bu pinlerde)
    GPIOD->OSPEEDR= 0xFFFFFFFF;   // GPIOD nin tum cikislarinı en yuksek hizda kullanacagiz

satırlarına bakın.

Rehber dokumanda  RCC_AHB1ENR, GPIOD_MODER ve GPIOD_OSPEEDR registerlerin anlatıldıkları sayfaları bulun.
Neden bu registerlerin içine yukarıdaki sayıları yüklediğimin cevabını bulmaya çalışın.

Bu çok önemli bir çalışma. Muhakkak uğraşın.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mozkan87

Alıntı yapılan: Prof.EleCTroN - 21 Ekim 2011, 14:34:09
ART 'ın çalışmasını yada yapısını detaylıca anlatan bir dökümana rastlayan var mı?
Ben bu sabah bu dökümanın(Doc ID 15687 Rev 4) 9 sayfasını inceledim bulduğum en ayrıntılı döküman bu.

t2

#66
Dersi boşverin şamata daha güzel  olmuş.  ne lazımsa pat diye sorulabilir. Umarım ben de bir şeyler sorup öğrenebilirim. kit mit de almadık  ama daha iyi bir kit  çıksın şöyle yapacağım işlere uygun olsun istiyorum. ne iş yapacağım da belli  değil ondan

muhittin_kaplan

elimde st32f100 kiti vardı. keil i kurup üzerinde stlink ile led yakıp söndürdüm. ama port atamalarını felan anlamadım.

MC_Skywalker

ST MCU larda registerlere değeri direk yazıyoruz değilmi. NXP LPC MCUlarda olduğu gibi bit işlemi yapmıyoruz.

gambit1244

ustalar dma ünitelerimiz kaç adet bu işlemcide
dma1 ve dma2 var ama 8stream yazıyor 2x8 mi  yani
yoksa 2mi :S
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

yamak

Alıntı YapAşağıdaki örnek programı Keil ders başlığında son konuda vermiştim.

#include "STM32F4xx.h"

void SystemInit()
{
    RCC->AHB1ENR |= 0x00000008;    // GPIOD donanımının clock sinyalini uygulayalım
    GPIOD->MODER = 0x55000000;     // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (Ledler bu pinlerde)
    GPIOD->OSPEEDR= 0xFFFFFFFF;   // GPIOD nin tum cikislarinı en yuksek hizda kullanacagiz
}

int main()
{
    while(1)
   {
     GPIOD->ODR= 0x0000F000;     // Ledler yansin
     GPIOD->ODR= 0x00000000;     // Ledler sonsun
   }
}
Hocam burada SystemInit() main fonksiyonunu içinde çağırılması gerekmiyo mu?

z

#71
Alıntı yapılan: MC_Skywalker - 21 Ekim 2011, 20:14:30
ST MCU larda registerlere değeri direk yazıyoruz değilmi. NXP LPC MCUlarda olduğu gibi bit işlemi yapmıyoruz.

Bit işleminden kastın oku modifiye et yaz ise STM de de aynı şeyleri yapabilirsin.

Şu anda en basit kodla başladık. İşlemci reset rutininden çıkar çıkmaz registerleri modifiye etmeye başladı.

Eğer modifiye edilmiş registerlerde tekrar bazı değişiklikler yapılacaksa o zaman zaten oku modifiye et ve yaz tercih edilir.

Bunu mu demek istedin?

@Yamak

Hayır SystemInit fonksiyonu Startup dosyasından çağrılıyor.
Eğer mainden sen çağırmak istiyorsan, SystemInit fonksiyonuna bir şey yazma ve örneğin Init() diye bir fonksiyon oluştur ve içine yukarıdaki SystemInit kodlarını yaz ve main fonksiyonundan sen Init() i çağır.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

MC_Skywalker

bir IO yu seçeceğimiz zaman onu and or gibi bir işle tabi tutup değeri registere yazıyordu.
tam emin değilim mbed ile uğraşınca bunları unuttum.
mbed de herşey tanımlı

z

#73
Tamam işte ayni şeyden bahsediyoruz. 
İlk programı olabildiğince sade şeçtim. Sanırım bundan daha basit örnek kod da yazılamaz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

MC_Skywalker

2 DMA ünitesi var.
Her bir üniterye 8 veri akışı aynı andda FIFO olarak erişebilir.

benim anladığım bu.