Döngü süresini nasıl ölçeriz ?

Başlatan Maxim, 16 Nisan 2008, 10:21:29

Maxim

gerçekten çok gerekiyor ,
ben picbasic veya proton+ kullanıyorum .

döngü süresini sürekli görmemiz gereken durumlar oluyor ,

yani

loop:
..
..
..
goto loop

dediğimiz zaman döngünün looptan başlayıp tekrar loop a geldiği zamanki süre veya buna döngü zamanıda diyebiliriz . kaç ms veya kaç us ?

bunu hassas bir şekilde ölçmek için bir kalıp yokmudur ,kolayca her kodumuza ekleyebileceğimiz ? tabi kod yazma bitiminde bunu kaldırıcaz .

watchdog timer bu iş için kullanılabilirmi ?
interrupt gerekiyorsa ne yapmak gerekir ?

selamlar

iyonosfer

Ben C kullanıyorum.
Döngü süresini ölçmek istiyorsan timer kullanabilirsin. Veyahut derleyici yazdığın kodlara karşılık asembly kodlarını listeleyebiliyorsa kodların kaç instruction sürdüğünü hesaplayarak. kristal frekansına göre süreyi hesaplayabilirsin.
Program içerisinde yapmak istiyorsan örnek

int16 sayac;

set_timer1(0);
while (x>=0) {   // döngü başlangıcı
..
..
..
..

} // döngü sonu
sayac = get_timer1();


Timer prescalar değerini ayarlaman gerekiyor tabi.
Blog Sayfam: www.teknobakis.com

z

İşlemcinin boştaki i/o pinlerinden birisini bu işe ayır.

Döngüye her girişte bu bitin konumu tersine çevir. Scop ile bu pine baktığında kare dalga göreceksin. Bu sinyalin yarı peryodu döngü sürene karşılık gelir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Erol YILMAZ

Z nin dediği duruma benzer olarak direkt olarak döngü frekansını görmek
istersen boştaki bir pini her döngüde bir kere birkaç mikrosaniye 1 yap.
Bu sinyali skopla görebileceğin gibi, frekansmetre ile de ölçebilirsin.

Maxim

Bu I/O pin olayı çok güzel bir tüyo ,
kolay gelsin arkadaşlar
hepinize teşekkürler

Maxim

bakın bugün ne buldum ,

proteus`,ta eğer programı proton plus ile yazdıysak biliyorsunuz satır satır çalıştırabiliyoruz .

programı satır satır çalıştırdığınızı düşünün ,
hangi satırdan başlamak istiyorsanız o satırın üzerindeyken F9 tuşuna basarak o satırı işaretliyoruz ,satırın kenarında küçük bir kırmızı yuvarlak beliriyor .

sonra normal bir şekilde programı çalıştırıyoruz ,
program sizin o işaretlediğiniz satıra geldiğinde duruyor ,
hemen aşağıda süre bilgisini bir yere not edin ,

stop etmeden tekrar programı run`layın ,
program gene aynı yerde duracak ve geçen süreden bir önceki süreyi
çıkarırsanız döngü zamanını bulabilirsiniz ,

tabiki bu gerçek kadar hassas bir zaman olmasa bile gayet işe yarayacaktır diye düşünüyorum , en azından benim işime yaradı .

tabiki program içerisine timer koymak veya boş bir pinden süreyi ölçmekte işe yarıyor ,ben pin kullanarak ölçtümde ama buda fena değil .

aklınızda bulunsun .

not :F9 ile işaretlediğiniz satırın üzerinde tekrar F9 tuşuna basarak o satır işaretini kaldırıyorsunuz .