stm32f103c8 TIMER 2 ,3, 4 sorunum

Başlatan z, 17 Eylül 2022, 01:13:25

JOKERAS

Ha ha ha.Tornacı senii,bu basit şeyler seni kurtarmaz benim elimden.
Nasıl kıvıracağını şaşırdın.Seni iğdiş edeceğim.

Ve hala çözüm sunamadın.Havanda su dövmeye başladın.Ye-mi-yo-ruuuzzz!!!

Çözümün Altın anahtarı bende.

devrecii

Ben şimdi kart üzerinde denedim ,  @JOKERAS ın dediği gibi yapınca çalıştı sorun yok  :P

Büyük bir ihtimelle asm de hata yapıyorsun , hal küpühanesinde init yaparken bazı registerlere anlamsız şekilde iki defa aynı işlemi yapıyor, açıyor kapatıor çünkü işlemci hardware bunu istiyor diye anlıyorum.
 
Assembly de kod yazıyor artisliğin kime ? artıs ne arar la bazarda.

ahmet35

#77
Merhabalar konunun tamamını okumadım ama;

@z hocam TIM2' deki Auto-reload preload yapısına baktın mı? (Referance Manual Sayfa 299)

Bu preload' ı hiç kullanmadım fakat yapıyı doğru anladıysam faz farkı oluşturulabilir gibi geliyor bana.
ARPE aktif iken ARR değeri belirlendiğinde Timer ilk çalışmada Update Event henüz oluşamadığı için ARR 0' da kalacak.
CNT' ye, ARR(0) - CNT = 10us oluşturacak şekilde ilk değer verilip Timer başlatılırsa 10 us gecikme oluşabilir.
Tüm Timerlar aynı anda başlatılacak.

JOKERAS

#78
Benim dediğim bir şey yok daha.Çizdiğim Şema sadece bir başlangıçtı.
Belki çözer olayı diye ip ucu verdim.Ama garibim olayı çözemek yerine Çamur Siyaseti
yapmayı seçti.Sen nasıl anladın çalıştığını?Anlatıver sana zahmet.

Tekraren yazıyorum.Bunu z'nin anlattığı mantıkla çözmek imkansız.
z, ilkolul Çocuklarının mantığında,bunun bile farkında değil.
Şuraya bakarmısınız_Neymiş efendim Zaman farkı vererek Sırayla Timerlara
Satart veriyormuş.Ba ba ba.Ne kadar zor bir mantık.
Sorunun onunla alakası yok.Mantık kuran olayı çözer.
Ve o kadar basitki.Anlattığım zaman sizlerde hak vereceğinizden eminim.
z hariç O hiç bir zaman bunu kabul etmeyecek çamura yatacak.Söz verdiği halde
sözünden caydı.

Niye akşamı bekleyeyim?Scopla gözlemleyipmi yorum yapacaksın.
Ben akşamı beklemiyorum, Şakır şukur yazıyorum.İstediğin kadar gözlem yap.
Sonuçta avcunu yalayacaksın.
Düşünmek,Hayal etmek her şeyden hızlıdır bunuda unutma!


z

#79
@ahmet35

Dedigini aynen yapmis fakat sorun hala devam etmisti.

Fakat gercegi gormemi de sagladin.

Artik timerlara saymaya basla derken siralamanin onemi kalmadi.

Dedigin gibi ARR, update event olusmadan shadow registerdeki degeri yuklemedigi icin 0 kaliyor.
Bu durum olmasin diye ARR nin shadow ozelligini kaldirip dogrudan ARR'ye ilk degeri vermistim. (Ilk kodda aciklama satirinda da yaziyor)

Fakat !!!!!

ARR ye dogrudan deger yazinca ve tekrar shadow regi devreye alinca  shadow registere de deger yuklemeyince.  Ilk saymada olusacacak update isleminde  shadow rege deger yuklenmedigi icin
sorun oluyormus.  Aslinda frekans degismedigine gore  dogrudan ARR'ye yazinca shadowa da yaziliyor demektir. 

Fakat ARR'ye yazip ARR shadowa yazmayinca ne oluyorsa oluyor timerlari devreye alma siralamasi onemli hale geliyor. Burasi hala muamma.

Asagidaki kodlara bakarsaniz hem ARR registerine hem de ARR shadow registerine deger yuklendi ve timerlari hangi sirada baslatirsaniz baslatin artik faz farki korunuyor.

;***********************************************************************************************
; TIMER 4, 3, 2 PWM uretecek (Center PWM)
;***********************************************************************************************
 
TimerInit   LDR    R0, =TMR_BASE
 
            MOV    R1, #0x20                  ; ARR registeri not buffered
            STR    R1, [R0, #TIM2_CR1]
            STR    R1, [R0, #TIM3_CR1]
            STR    R1, [R0, #TIM4_CR1]
 
            LDR    R1, =PERYOD                ; ARR registerlerine derhal deger yukleyelim
            STR    R1, [R0, #TIM2_ARR]
            STR    R1, [R0, #TIM3_ARR]
            STR    R1, [R0, #TIM4_ARR]
 
            MOV    R1, #0x000
            STR    R1, [R0, #TIM2_CNT]
            STR    R1, [R0, #TIM3_CNT]
            STR    R1, [R0, #TIM4_CNT]
 
            MOV    R1, #0x7070                ; Pre Load disable, Mode=7
            STR    R1, [R0, #TIM2_CCMR1]
            STR    R1, [R0, #TIM3_CCMR1]
            STR    R1, [R0, #TIM4_CCMR1]
 
            STR    R1, [R0, #TIM2_CCMR2]
            STR    R1, [R0, #TIM3_CCMR2]
            STR    R1, [R0, #TIM4_CCMR2]
 
            LDR    R1, =PERYOD>>1             ; CH1 ve CH2 %50 pwm ile baslasin
            STR    R1, [R0, #TIM2_CCR1]
            STR    R1, [R0, #TIM3_CCR1]
            STR    R1, [R0, #TIM4_CCR1]
 
            STR    R1, [R0, #TIM2_CCR2]
            STR    R1, [R0, #TIM3_CCR2]
            STR    R1, [R0, #TIM4_CCR2]
 
            LDR    R1, =PERYOD-1
            STR    R1, [R0, #TIM2_CCR4]       ; Orta noktada event uretsin
            STR    R1, [R0, #TIM3_CCR4]       ; Orta noktada event uretsin
            STR    R1, [R0, #TIM4_CCR4]       ; Orta noktada event uretsin
 
            MOV    R1, #0x7878                ; Pre Load enable, Mode=7
            STR    R1, [R0, #TIM2_CCMR1]
            STR    R1, [R0, #TIM3_CCMR1]
            STR    R1, [R0, #TIM4_CCMR1]
 
            STR    R1, [R0, #TIM2_CCMR2]
            STR    R1, [R0, #TIM3_CCMR2]
            STR    R1, [R0, #TIM4_CCMR2]
 
            MOV    R1, #0xA0                  ; Artik ARR registeri buffered
            STR    R1, [R0, #TIM2_CR1]
            STR    R1, [R0, #TIM3_CR1]
            STR    R1, [R0, #TIM4_CR1]
 
            LDR    R1, =PERYOD                ; ARR SHADOW registerlerine de deger yukleyelim !!!!!!! iste suclu burasi. !!!!!!
 
            STR    R1, [R0, #TIM2_ARR]    ; ARR ye dogrudan yukleme yaptiysan ilk update icin shadow regin de ayni degerle yuklenmesi lazim.
            STR    R1, [R0, #TIM3_ARR]
            STR    R1, [R0, #TIM4_ARR]
 
            MOV    R1, #0x00
            STR    R1, [R0, #TIM2_CR2]        ; 
            STR    R1, [R0, #TIM3_CR2]
            STR    R1, [R0, #TIM4_CR2]
 
            MOV    R1, #0x00
            STR    R1, [R0, #TIM2_SMCR]
            STR    R1, [R0, #TIM3_SMCR]
            STR    R1, [R0, #TIM4_SMCR]
 
            MOV    R1, #0x10
 
            STR    R1, [R0, #TIM2_DIER]
            STR    R1, [R0, #TIM3_DIER]
            STR    R1, [R0, #TIM4_DIER]
 
            MOV    R1, #0x0011                ; cmp output enable (Ch1 ve CH2)
            STR    R1, [R0, #TIM2_CCER]
            STR    R1, [R0, #TIM3_CCER]
            STR    R1, [R0, #TIM4_CCER]
 
            MOV    R1, #0xA1
            STR    R1, [R0, #TIM4_CR1]        ; Timer 4 firla.
 
            MOV    R2, #1000
DLY1        SUBS   R2, #1
            BNE    DLY1
 
            STR    R1, [R0, #TIM2_CR1]        ; Timer 2 firla.
 
            MOV    R2, #1000
DLY2        SUBS   R2, #1
            BNE    DLY2
 
            STR    R1, [R0, #TIM3_CR1]        ; Timer 3 firla
 
            BX     LR
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#80
@JOKERAS

Bazen cok sululuk yapiyorsun. Agzinda ne geveliyorsan gevele de yaz artik.

Ben en iyisi bir fikra anlatayim. Fikra benimle seni anlatiyor.

Sehirler arasi giden otobuste kadin memesini cikartmis kucaginda aglayip duran bebegin agzina sokusturuyor ama bebek bir turlu susmuyormus.
Kadin da kiziyor bebege emecesen em emmeyecesen bak yanimizdaki amcaya verecem diye bebegi tehdit ediyormus.

Bu durum saatlerce surmus bir olmis iki olmus en sonunda koltuktaki adam hiddetlenmis, vereceksen ver be kadin Sakarya'da inecektim senin yuzunden taa Istanbul'a kadar geldim demis.

--------------------------

Sonucta yazacaksan yaz.


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

JOKERAS

#81
ilkokul Çocuklarının mantığı dememmi zoruna gitti?
Önce sen şu uslubunu düzelt sonra karşından Saygı bekle.

Sözde Çözmüşsünya.Daha benim fikrimi niye merak ediyorsun.
Benim fikrimin ARR ile uzaktan yakından alakası yok.ARR ne işe yarıyor
Center mod muhabbetinin olduğu kısımda anlatmıştım.

Eğer ben yanılmıyorsam bu bilgi, ömürünün sonuna kadar kullanacağın bir bilgi olacak.
Altın değerinde.Paha biçilemez Kaşıkçı Elmas'ı.Manyak manyak işler :'(

Çözdüysen Start aralarına verdiğin Zaman gecikmeleriyle oyna durumu gör.Bakalım olmuşmu?

z

Alıntı yapılan: JOKERAS - 23 Eylül 2022, 18:33:25....
Çözdüysen Start aralarına verdiğin Zaman gecikmeleriyle oyna durumu gör.Bakalım olmuşmu?



@JOKERAS

Sen soyle olmus mu?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#83
Arkadaslar hepinizin zamanini aldim. Hakkinizi helal edin.

Sorun yazilimda degil scop kaynakli imis. Isyerinde analog scop kullanarak kodlari test ettim.
Evde ise HP nin eski tip digital scopu ile test ettim.

Atelyem cok daginik ve masam mekanik calismalarla dolu oldugu icin Picoscopuma zarar gelmesin diye masadan kaldirmistim.

Yukaridaki videoyu cekmek icin scopu cikarttim ve ilk basta kodlarini verdigim programin bile sorunsuz calistigini gordum.

Analog scoplar iki kanal modunda iken bazen alternate/chop modunda sinyali farkli gosterebiliyor.

HP digital scopum da cok yetenekli degil. O da nasil olduysa bu projede sapitmis.


Netice olarak Timerlari farkli zamanlarda calistirarak uretilecek pwm sinyallerin orta noktalari arasinda dilediginiz faz farkini olusturabilirsiniz.

Ikinci verdigim kod sorunsuz. Yukaridaki mesajimi karaladim.

Picoscope ile ayni kodu dongude kalmayacak sekilde calisitirinca sorun oldugunu gordum. Donguye ikinci giriste sorun kalkiyor.

Fakat 2. yayinladigim kod da hic sorun yok.


Sorun tamamen anlasildi.


@JOKERAS icin cektigim videoda bir dongu kurmus ve Timerlarin arasinda parametrik bir delay yerlestirmistim. Dongu icinde delayin delay parametresini degistirerek faz farkini supuruyordum.

Her sey mukemmel gidiyordu.

Sonra bu loop isini kaldirdim. gene bahsettigim sorun basladi.

Neyse kisa keseyim.

Init asamasindan sonra Timerlari calistirip faz farki da olusturduktan sonra artik burayla alakasi olmayan bir rutinde bir seyi demek icin yazdigim iki satirlik kod parcasi Timer 3 counteri sifirliyormus ve boyle bir kod yazdigimi tamamen unutmusum.

Dolayisi ile en basta titizlikle ayarladigim faz farki bu satir nedeniyle bozuluyormus.

Eger timerlari calistirma siralamasini 4,2,3 yaparsam init ardindan bahsettigim timer sifirlamaya kadar gecen sure sans iste zaten 0 yada sifira yakin degere kadar saymis timeri sifirladigindan senkronizasyonda bozulmaya neden olmuyor yada dikkat cekecek kadar bozulma yapmiyormus.

Fakat 3 nolu timeri enable etme sirasini degistirirsem senkron problemi basliyormus.

Sonucta benim hatam.

Burdan cikarttigim sonuc su.

Bir hata ile karsilasildiginda hata ile ilgili kodlari yeni bos bir projeye tasiyip kodlari olabildigince minik hale getirmek gerekiyor.
Ancak boyle yapilirsa suclu koseye sikisiyor.

Ben ne yaptim Timer Init rutinine takildim orada sorun arayip durdum. Halbuki sorun Init sonrasi kodun ucra bir kisminda Timer counteri sifirlayan bir tuzak koddan ibaretmis.

Cektigim videoda da bu tuzak kod var. Fakat loop icinde surekli olarak init kodu calistirildigi icin tuzagin bozdugu durum biraz sonra yeniden duzeltiliyormus.


 


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

elektronik

Kim kazandı? Nusret'ten Tavuk döneri kim kime ısmarlıyor?.
Kim kaybettiyse kazanana yemek sepetinden ısmarlayabilir.

Yuunus

#85
@z ayiptir sormasi bu ne ise yariyor,.

z

#86
Alıntı yapılan: Yuunus - 23 Eylül 2022, 21:13:34@z ayiptir sormasi bu ne ise yariyor,.

Hah geldik zurnanin zirt dedigi yere.

Simdi de @JOKERAS biraz kudursun?

Neden boyle fazi kayik pwm cikislarina ihtiyac duydum acaba?

@yunus bu forum ortaminda kelimelerle anlatilacak bir konu degil. Tahtaya yazarak cizerek video cekmek lazim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

elektronik

#87
3 faz motor sürücü projesimi?

z

3 tane 2 fazli step motoru surme projesi.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

JOKERAS

Bak video çekiyorsun çektiğin videoda bile hakaret ediyorsun.
Sonrada Sululuk yapıyorsun,ileri geri konuşuyorsun diyorsun.Pes yaaa.
Farkındaysan Konu içinde asıl Konuyu tartışmıyoruz sayende.Geyik muhabbeti yapıyor,
birbirimizle sidik yarışına giriyoruz.Ki öyle bir derdim olmadığı halde ve sende bunu bildiğin halde.

Kaportacı.
Sen sus.
Bana bulaşma.
Sen tamircisin.
Sen anlamazsın.



Benim uslubumdan rahatsız olan bir kişi yok.
Senin bu berbat uslubun,Üyelere tepeden bakan tavrın Saysız uyenin Forumdan kopmasına sebep oldu.


Bir sürü konu oldu her konuda sen her zaman olduğu gibi olayı tartışmak yerine
kişiselleştirip hakaret boyutuna getirdin getiriyorsun.
Bak buraya not ediyorum!!!
Senin bu forumdaki mevcut uye ve daha sonra uye olacak bir çok kişi sırf senin bu
Tepeden bakan tavrın nedeniyle tartışma cıkacak yada foruma küsecek,yada kavga edecek.
Sen kendine,uslubuna bir bak sonra beni eleştir.

Ben bildiğimi sandığım,bak sandığım diyorum.Konulara yorum yaparım.
Ve her uyede sanırım aynı şekilde düşünüyordur.Ama sen oyle değilsin ne yazıkki.
Daha önceleride söyledim.Benim Ego ile,biliyor bilmiyor ile,kendini kasma ile
kıl tüy basit ve banal şeylerle işim olmaz.Bunları oldum olası komik ve banal bulurum.
Yahu ben kimimki?Ben sıradan bir Tv tamircisiyim.İşlemci ile tanışmam 10 yıl bile değildir.
Sizlerin eline değil ayağına su dökemem.Matematik bilmem,İngilizce bilmem.
Bunu da defalarca söyledim.Ayaklarım yere basmıyormuş.

Bu konuda da,konu gümbürtüye gitmesin tartışılsın diye Pdf'ini bile bu konu vasıtasıyla
incelediğim,çeviriden okumaya çalıştığım bir İşlemci için Saf temiz kalple yorum yaptım.
Sen ne yaptın?Benim algı ve bilgim senin kadar olmayabilir.Olmasıda beklenemez zaten.
Her zamanki gibi Tepeden bakan tavrınla sorduğun soruya yaptığım  yorumla başladın
Kişisel Hakaret,yafta,kaale almaz bilge tavırlar vs.
Halbuki soru soran ben olsam ilgi ve alakaları için konuya yazan herkese minnetar olurum.
Senin yaptığın gibi soru soranlarla dalaşmaya girmem.Vatandaş bildiğini yazmış diye düşünürüm.


Senin karşında çocuk yok,Emir erlerin yok,ezeceğin İnsanlar yok.
Benim senin dilinden maruz kaldığım hakaret ve yaftalara başkası olsa kavga çıkardı.
Ben Tartışma Farklı noktalar dallanacağını anladığım anda bile işi espiriye vurum ki
Karşımdaki kişi rencide olmasın diye.
Samimiyetine inandığım üyelerle daha samimi konuşurum,bazen onları kızdırırım,bazen takılır
espiri yaparım.Karşımdaki kişiyi farkında olmadan rencide edersemde özür dilemekten zerre çekinmem.
---------------------------------------
Bak yerden yere vurduğun,aşağıladığın Fasulye sayesinde bir şeyler yaptın.
Senin faz farklı Pwm üretmen benim umurumda bile değil.
Zaman farkı vererek yaptığını iddia ettiğin Faz farklı Pwm,benim mantığımda olmaz.
Bu yapın her zaman sorunlara gebe olacaktır diye düşünüyorum.
Ayrıca Zaman farkı vererek bunu çalıştırmayı düşünmek En basit yol.
Uzay mekiği değil yani.Bunu ilkokul çocukları bile düşünür.Düz mantık.

Madem bu kadar kolaydı bu kadar cevap yazan üyeyi neden yalandan yere mesgul ettin.
Yoksa böyle bir problemle karşılaşıp,sonra olayı çözüp,sonra bile bile üyeleri yanlış yönlendirip
soru sorup,filmin sonunda da Yapıp egonumu tatmin ediyorsun diye sorarlar adama.

Bana olup olmadığını soruyorsan mantığını ne yaptığını anlatman gerekiyor.
Aslında çizdiğim Şema çok güzel ip ucu içeriyor diye düşünüyorum.