STM32F407 Cortex M4 şamataları

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

gambit1244

mc_skywalker
örnek süper olmuş bende tam aynı orneklerin cortexm3 olanını bulmuştum onların üzerine bu tam cuk oldu
hem m3 ile m4 arasındaki farklarıda kavradım bügün cok verimli bi gün oldu sayenizde :))

1. porta clock ver  (var yada yok)
2.portun modunu seç (input*general purpose output*alternate function*analog)
3. portun hızını seç (2-25-50-100)mhz  burdaki bilgiyi anlamadım eğer kondansatorunuz 15pf ise max80 veririm mi demek istiyor?
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

ilhan_mkp

RCC->AHB1ENR |= 0x00000008; yazdık çünkü portd yi kullanabilmemiz için clock sinyalinii portdye vermemiz gerekiyormuş AHB1ENR cloğu portla tatıştıracak çöpçatan reg burası oluyor pekiya neden 0x00000008 yazdık
çünkü portd RCC->AHB1ENR registerinin 4 bitine denk geliyor ikilik yazılımda şöyle oluyor 00001000
hex olarakta 8 e tekabül eder
0x00000008 buradan geldi diye yorumladım

çok yanlış yorumlamış olabilirim ama ben bu satırdan bunu anladım
???

omereliusuk

#92
  GPIOD->MODER = 0x55000000;     // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (Ledler bu pinlerde)
burada her pin için 4 farklı tip var eğer yanlış anlamadıysam.
0101010100000000000000000000000
00 reset(giriş varsayılan)
01 çıkış
10 alternatif kullanım 'artık farklı amaçlar için '
11 analog mod

biz çıkış olarak tanımladık. yani 01 olarak kullandık. kalanlar ise giriş olarak tanımlanmış oldu öyle mi?

NecroCapo

GPIOD_MODER için:

Alıntı Yap00: Input (reset state)
01: General purpose output mode
10: Alternate function mode
11: Analog mod

Pic'lerde TRIS'ler ya output(0) ya da input(1) olurdu. Buradaki diğer seçenekler (10 ve 11) ne anlama geliyor ? Hem analog hem input olmuyor mu yani :P

Bir de kullanmadığımız pinleri neden output'a çekmedik ?

ilhan_mkp

#94
GPIOD->MODER = 0x55000000 yazdık çünkü GPIOx_MODER port tanımlamalarının yapıldığı reg 0x55000000 neden yazdık?

Bits 2y:2y+1 MODERy[1:0]: Port x configuration bits (y = 0..15)
These bits are written by software to configure the I/O direction mode.
00: Input (reset state)
01: General purpose output mode
10: Alternate function mode
11: Analog mode

pdf'nin ilgili bölümünden bir bölüm pin yönlenlendirmesi iki bit tarafından sağlanıyor görünüyor

ilgili pdf'nin tablo18'inden anladığım kadarıyla GPIOD->MODER registerinin 31,30=pin15,29,28=pin14,27,26=pin13,25,24=pin12
şeklinde ayar seçeneği sunuyor
55000000 i ikilik olarak ele alırsak 010101010000000000000000000000000
01: General purpose output mode notuna göre çıkış

ben daha ilemciyi incelemedim ama anladığım kadarıyla portlar 16bit
arm belki öğrenemeyeceğim ama pdf okumaya alışacağım kesin

ilk önce yanlış yapmışım düzelttim hesap makinasıyla çevirince en yüksek biti 0 olursa göstermiyor 31 bit oluncada saymadım 10 diye algıladım aynı haaya düşmeyin die yazmak istedim

NecroCapo senin yanıtı okuyunca bitleri saydım ;D

z

Alıntı yapılan: ilhan_mkp - 22 Ekim 2011, 00:31:47
RCC->AHB1ENR |= 0x00000008; yazdık çünkü portd yi kullanabilmemiz için clock sinyalinii portdye vermemiz gerekiyormuş AHB1ENR cloğu portla tatıştıracak çöpçatan reg burası oluyor pekiya neden 0x00000008 yazdık
çünkü portd RCC->AHB1ENR registerinin 4 bitine denk geliyor ikilik yazılımda şöyle oluyor 00001000
hex olarakta 8 e tekabül eder
0x00000008 buradan geldi diye yorumladım

çok yanlış yorumlamış olabilirim ama ben bu satırdan bunu anladım
???

Aynen dedigin gibi.

Yalniz 4. bit demek yerine 3. bit de. Cunku en dusuk bit, B0 bitidir ve buna 0. bit deriz.
Kurs notlarinda bitlerden bahsederken en dusuk bite 0. bit diyecegiz.

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

z

#96
Alıntı yapılan: NecroCapo - 22 Ekim 2011, 01:00:05
GPIOD_MODER için:

Pic'lerde TRIS'ler ya output(0) ya da input(1) olurdu. Buradaki diğer seçenekler (10 ve 11) ne anlama geliyor ? Hem analog hem input olmuyor mu yani :P

Bir de kullanmadığımız pinleri neden output'a çekmedik ?

00: Input (reset state)
01: General purpose output mode
10: Alternate function mode
11: Analog mode

Ledlerin bagli oldugu pinlere denk gelen port bitlerini moder registerinde 01 ile tanimlayarak o pini output yaptik.
Diger pinleri input yaptik. Output da yapabilirdiniz. Ancak;

Deneme kartinin semasini acip pinlerin bir baska cipin outputuna bagli olmadigindan emin olmaniz gerekir. Aksi halde ciplerin cikislari birbirine baglanirsa birisi 1 digeri 0 ise
port pinlerinden yuksek akim akarak ciplerin o pinleri hasar gorebilir. Bu nedenle boyle bir durumla karsilasmamak adina diger pinleri input tanimladik.

10: Alternate function mode

Bu, portun ilgili pininin farkli amacla kullanilacagini tanimlar. Mesela atiyorum bu pin pwm cikisi olabilir. Timer clk girisi olabilir vs. (Alternatif amaclar)

11: Analog mode

Eger bir pin hem port hemde Analog inp yada output ozelligine sahipse ve biz bu pini analog amacli kullanacaksak bu durumda bu pini 11 ile tanimlariz.

MODER = MODE Register

Yani pinin  modunu belirleyen register demek.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ilhan_mkp

#97
Yalniz 4. bit demek yerine 3. bit de. Cunku en dusuk bit, B0 bitidir ve buna 0. bit deriz.
Kurs notlarinda bitlerden bahsederken en dusuk bite 0. bit diyecegiz.
[/quote]

o konuda tereddütte kalmıştım dediğiniz gibi kullanarım

not:bu alışkanık otomasyom panolarından kalan bir durum plc çıkışları x0 dan başlar bağlı röleler r1 diye numara almaya başlar cad programlarından kalan alışkanlıklar nasıl beceriyorum bilmiyorum ama alakasız şeyleri baz alabiliyorum

z

GPIOD->OSPEEDR= 0xFFFFFFFF

Evet bunu yorumlayacak varmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ilhan_mkp

#99
GPIOx_OSPEEDR portların çıkış hızını ayarlayan register ffffffff değeri ikilik olarak 11111111111111111111111111111111 olur

Bits 2y:2y+1 OSPEEDRy[1:0]: Port x configuration bits (y = 0..15)
These bits are written by software to configure the I/O output speed.
00: 2 MHz Low speed
01: 25 MHz Medium speed
10: 50 MHz Fast speed
11: 100 MHz High speed on 30 pF (80 MHz Output max speed on 15 pF)

GPIOx_MODER registerindeki gibi bir pini iki bit etkiliyor
hızımız bitler 11 olduğundan 100 MHz High speed on 30 pF (80 MHz Output max speed on 15 pF) burada yazanı olmayan ingilizcemle anladığım kadarıyla bir kondansatör değeriyle belirleniyor
örneği çok incelemedim oscdenmi nereden geliyor onada yarin bakayım
tam hızı bilmek için nereden geldiğini bulmam lazım

bu arada benim keil ne yaptıysam hata veriyor sanırım benim pcnin komaya girişiyle alakalıbir durum :'(


z

#100
00: 2 MHz Low speed
01: 25 MHz Medium speed
10: 50 MHz Fast speed
11: 100 MHz High speed on 30 pF (80 MHz Output max speed on 15 pF)

OSPEEDR a birseyler yazinca ne oluyor da oluyor portun pinlerinin calisacagi frekans degisiyor?

Bu bilgi hic bir yerde yok. Son derece ilginc bir soru.

Adamlar sirf bu is icin register koymuslar.

Ledlerin bagli oldugu Pinleri toggle etme frekansim 4Mhz iken scopla yaptigim gozlemlerde, bu registerin bitlerinin 00 yada 11 olmasinin hic bir farkini goremedim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

iyildirim

Bu 30pF ve 15pF olayını anlamadım.

Eğer pine bağlı kapasitif yükten bahsediliyorsa tersi olması gerekmez mi?. Yani 30pF lık yükte daha yavaş çalışması..

Yada 30pF, 15pF ile ne kasdediliyor.

aslan_korhan

#102
Bende iyildirim'in yazdığını yazacaktım fakat olayın ters olduğunu fark edince vaz geçtim.
Belki yanlış yazılmıştır.
Çıkış hattının Kapasitesi olması gerekli. 100MHz'de 15pF 80MHz'de ise 30pF. Diğer türlü çok mantıksız olur...


Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

MC_Skywalker

Şöyle bir gözlemde bulundum;

STM32F407 kontrolcüsününün D portunu saat darbesini alcak şekilde ilgili kaydedici kurarak aktif ettik ve diğer portlara saat darbesi uygulamadık. Dijital dünyada saat darbesi yoksa işlem yoktur, yani bekleme konumunda olup o anki durumunu korur.

Burdan yola çıkarsak diğer portlar uyukuda buda bu mcu'nun güç tüketimin düşürür.

muhittin_kaplan

Bence bu frekans olayida guc tuketimiyle alakali