STM32F407 Cortex M4 şamataları

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

Klein

@muhittin
Çalışmaması için bir sebep yok gibi görünüyor. Belki benim de gözden kaçırdığım bir yer vardır. 
gelen PWM'in genişliği çok uzun olabilir. 
Biraz sonra kiti kurar bir denerim. Debug modda ortaya çıkar.

muhittin_kaplan

20ms lik peryotta %10 ile %20 duty. ama çalıştıramadım.

Klein

sorun bu satırda GPIOC->MODER  &=0xFFFF2FFF;// ilk bakışta farkedilmesi gereken bir satır. Güzel saklanmış :)

Açılışta MODER registerimiz 0x00000000  0xFFFF2FFF ile & yaptığımızda yine sıfır.  CCR1'de var sıfır :)

GPIOC->MODER  |=0x00002000; şeklinde düzeltirsen çalışır.

muhittin_kaplan


Klein

TIM3->CCMR1 |= 0x0002; //CCR 1 için Giriş kaynağı TI2 seçildi
Bu satırı
TIM3->CCMR1 |= 0x0001; //CCR 1 için Giriş kaynağı TI1 seçildi
şeklinde düzeltirsen peiyot ölçümü de yapar. Yanlışlıkla kaynağı TI2 seçmişiz.

muhittin_kaplan

Hocam Orayı Fark ettim ama kendime güvenmediğimden "Vardır bir bildiği, Her moku da sormayalım artık" diyerek es geçmiştim.

pcb

arkadaşlar 12864 grafik ekran ile uğraşıyorum , ekrana yazdırma komutu
printf( "Please input two numbers to be multiplied: " ); şeklinde mi ?

GreeN

Alıntı yapılan: pcb - 24 Ocak 2012, 12:45:22
arkadaşlar 12864 grafik ekran ile uğraşıyorum , ekrana yazdırma komutu
printf( "Please input two numbers to be multiplied: " ); şeklinde mi ?
kullandığın kütüphanede fonksiyon ne olarak isimlendirilmişse o şekilde kullanabilirsin. putchr(); vs de olabilir.
Terörü Lanetliyoruz.

pcb

kullandığın kütüphanede fonksiyon ne olarak isimlendirilmişse o şekilde kullanabilirsin. putchr(); vs de olabilir.

aşağıda ki kod daki gibi mi ?

/* Public Functions */
extern void init_ks0108(void);
extern void gotoxy_ks0108(unsigned char, unsigned char);
extern void putc_ks0108(unsigned char);
extern void puts_ks0108(unsigned char*);
extern void cls_ks0108(void);

GreeN

puts_ks0108("deneme");
putc_ks0108(d);
putc_ks0108(e);
putc_ks0108(n);
putc_ks0108(e);
putc_ks0108(m);
putc_ks0108(e);

evet bunlar gibi.
Terörü Lanetliyoruz.

mcan

#835
Selamlar,
Bu gün systick olayını denemek istedim. Bazı dökümanlar okudum ancak hala anlamadım systick bir timer mi yoksa sadece kesmemi? Eğer kesme ise bunun diğer kesmelerden bir farkı varmı? Bu kesmeyi işletirken işlemci işini gücünü bırakıp bu kesmeyimi işliyor? Yani her 1 us de bir systick içindeki değişkeni update etmek istersek işlemciyi saniyede 1 milyon kere işini kesmiş mi olacağız?

muhittin_kaplan

sanki evet. ama bu tik zamanlayıcı vs için değilde multitasking yapmak için konulmuş gibi geliyor bana.

z

Alıntı yapılan: mcan - 24 Ocak 2012, 21:12:06
Selamlar,
Bu gün systick olayını denemek istedim. Bazı dökümanlar okudum ancak hala anlamadım systick bir timer mi yoksa sadece kesmemi? Eğer kesme ise bunun diğer kesmelerden bir farkı varmı? Bu kesmeyi işletirken işlemci işini gücünü bırakıp bu kesmeyimi işliyor? Yani her 1 us de bir systick içindeki değişkeni update etmek istersek işlemciyi saniyede 1 milyon kere işini kesmiş mi olacağız?

Sys Tick, timer ozellikleri acisindan diger timerlardan ekstarasi yok hatta eksikleri var. Fakat bu timer dogrudan CPU ya int yolluyor. Timer ile CPU arasinda NVIC yok.

User modunda bu timera ulasma sansiniz yok. Cekirdek kodlar yazip bununla olaylari yonetmek icin kullaniliyor. User moddaki programlarin bu timera erismesi mumkun olmadigindan
zamanlamanin bozulmasi mumkun degil.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mcan

Alıntı yapılan: bunalmis - 24 Ocak 2012, 22:00:09
Sys Tick, timer ozellikleri acisindan diger timerlardan ekstarasi yok hatta eksikleri var. Fakat bu timer dogrudan CPU ya int yolluyor. Timer ile CPU arasinda NVIC yok.

User modunda bu timera ulasma sansiniz yok. Cekirdek kodlar yazip bununla olaylari yonetmek icin kullaniliyor. User moddaki programlarin bu timera erismesi mumkun olmadigindan
zamanlamanin bozulmasi mumkun değil.
Hocam bu timer arada nvic olmadiği için  işlemcinin zamanından sadece 1 cycle mi alıyor contex saving filan yapılmıyormu? Birde bu bir timer ise interrupt aktif etmesek nasıl bir şekilde kullanırız? User modundan başka hangi modlar var ve o modlara geçiş nasıl oluyor.

z

1 cycle degil tabiki. Context saving islemini yapmak NVIC in isi degil zaten bu isi CPU yapiyor. Sys Tick interruptin onceligi cok yuksek.  Butun espirisi bu.

User mod yerine protected mod var. Zaten su anda yazdigimiz kodlar protected modda. User moda gectikmi geri donus yok. Ancak privileged seviyede tekrardan protected moda gecebiliriz. Mod gecis isleri control register uzerinden yapiliyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com