döngü de komut işleme zamanı hesaplama?

Başlatan fractal, 23 Şubat 2009, 17:32:03

fractal

arkadaşlar ccs c kullanıyor.herhangi bir döngüde komutlar işlenirken gecen süreyi nasıl bulurum?ve delay_cycle(x) komutu daha cözünürlüğü yüksek yoksa timer kesmesi kullanmakmı iyi?
Restantum cogniscutur Quantum deligutur

arslan74

Alıntı yapılan: "fractal"arkadaşlar ccs c kullanıyor.herhangi bir döngüde komutlar işlenirken gecen süreyi nasıl bulurum?ve delay_cycle(x) komutu daha cözünürlüğü yüksek yoksa timer kesmesi kullanmakmı iyi?

Proteus ISIS ile yapabilirsin.

Salih

C/ASM List sayfasına bakarak döngüdeki komut sayısını öğrenebilirsiniz. Komut işleme süresi bilindiğine göre. Komut işleme süresi ile toplam komut sayısını çarparak bulabilirisiniz. Eğer istediğinizi yanlış anlamadıysam böyle bir çözüm öneriyorum.

vebsel

eğer asmde hesaplama zor geliyorsa ve bir komut dizesinin ne kadar
zaman tuttuğunu hesaplamak için ben şu yöntemi kullanıyorum komut
dizisinin başında porttan bir biti high a çekip komut dizisinin bitiminde o portun bir bitini low a çekiyorum buradan osiloskop ile bakıp oradan hesaplıyorum

fractal

bunu şu iş için kullanmayı düşündüm.step motor sürüyorum.hızlanma ve yavaşlama rampalarım aynı aynı sayıda puls  çıkıyor.tam 1 tur dönmek için hızlan ve yavaşla rampası arasında bekleme koyuyorum. bhu arada max hızda gidiyorum.max hız yani max frekansım  adım oranım 3200.örneğin adım 0,5 tur dönmem gerekiyorsa. frekansımda pwm 5khz ise saniyede  5000/3200 tur atması lazım.ozaman 0.5 tur için ne kadar zaman geçmesini buluyorum.örneğin  diyelimki 200ms.
ama gerçekte bu 200 ms tutumuyor.proteusta  3200 puls göre bu süreyi atyarklıyorum olmuyor.motor kayıyor.ama3204 puls yapınca 150 devir artırdım kaymadı.şimdi bu zamanı ben nasıl ayarlarım bu komut işleme zamnındamı okluyor.sadece araya delay_ms(xxx).diyorum.hadi 1 tur için yaptım.zamanı 2 katına çıkarıncada 2 tur atmıyor.yine deneyerek bulmak kalıyor...
Restantum cogniscutur Quantum deligutur