mikrosaniye cinsinden bekletme nasıl olur?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
mikrosaniye cinsinden bekletme nasıl olur?
stepmotor kontrolü için paralel portun bir bitinden kare sinyal göndermem gerekiyor, bunun içinde mikrosaniye cinsinden bekletme komutu lazım, bunu döngüyle yapabilirim belki ama oda bilgisayardan bilgisayara değişir(CPU hızına göre) oda benim işimi görmüyor...
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Merhabalar,
belki asm ile mümkün. ama delphide böyle bir şey olacağını sanmıyorum.
ancak biryerde görmüştüm şimdi tekrar arattım.
http://www.prodelphi.de adresi belki sana yardımcı olabilir. micro second bekle yada micro saniylerde işlemler yapmak için endüstriyel bir takım eklentiler veriyor. bir incelemek lazım.
oldu ya incelersen bizede bilgi ver lütfen.
Saygılar...
belki asm ile mümkün. ama delphide böyle bir şey olacağını sanmıyorum.
ancak biryerde görmüştüm şimdi tekrar arattım.
http://www.prodelphi.de adresi belki sana yardımcı olabilir. micro second bekle yada micro saniylerde işlemler yapmak için endüstriyel bir takım eklentiler veriyor. bir incelemek lazım.
oldu ya incelersen bizede bilgi ver lütfen.
Saygılar...
En son Murat DİCLE tarafından 04 May 2006 09:54 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Windows realtime bir işletim sistemi değildir. Bu yüzden mikrosaniye ölçeğinde beklemeler yaratmak da mümkün değil.
Bilgisayarlarda ve entegre dediğimiz devrelerde ilginç olan bir konu da, bu sistemlerin de kaos teorisi ile bağdaştıabileceğimiz davranışlar göstermesi. Esasen termodinamik kanunları ile son derece örtüşen bu davranışlar, bilgisayarın aynı koşullarda, aynı işlemleri iki kez tekrarlaması halinde her seferinde farklı zamanlarda işlemi bitirmesi ile sonuçlanıyorlar. Dolayısıyla aynı işlemler için hep aynı işlemci zamanının gerçekleşmesini beklemek de doğru değil.
"High resolution timer" anahtar kelimeleri ile hiç olmazsa görece 1 milisaniyelik kesinliğe ulaşabileceğin bileşenler bulabilirsin.
Daha kesin çözüm tabii ki bir elektronik devre ile step motoru sürmektir. Sana düşen sadece step motoru sürecek olan devreye komutlar göndererek işinin bitmesini beklemek olacaktır.
Bilgisayarlarda ve entegre dediğimiz devrelerde ilginç olan bir konu da, bu sistemlerin de kaos teorisi ile bağdaştıabileceğimiz davranışlar göstermesi. Esasen termodinamik kanunları ile son derece örtüşen bu davranışlar, bilgisayarın aynı koşullarda, aynı işlemleri iki kez tekrarlaması halinde her seferinde farklı zamanlarda işlemi bitirmesi ile sonuçlanıyorlar. Dolayısıyla aynı işlemler için hep aynı işlemci zamanının gerçekleşmesini beklemek de doğru değil.
"High resolution timer" anahtar kelimeleri ile hiç olmazsa görece 1 milisaniyelik kesinliğe ulaşabileceğin bileşenler bulabilirsin.
Daha kesin çözüm tabii ki bir elektronik devre ile step motoru sürmektir. Sana düşen sadece step motoru sürecek olan devreye komutlar göndererek işinin bitmesini beklemek olacaktır.
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
valla merakımdan bi arama yaptım.
Torry.net te şu kodu buldum. şuan denemedim.
bu örnekte 0.2 mili saniye yada 200 micro saniye oluyor
herhalde öyledir..
ilaveten buradaki HiResTimer komponentine bak
http://www.blue-xplosion.de/englisch/index.htm
saygılar...
Torry.net te şu kodu buldum. şuan denemedim.
Kod: Tümünü seç
// Wait 0.2ms
procedure PerformanceDelay;
var
hrRes, hrT1, hrT2, dif: Int64;
begin
if QueryPerformanceFrequency(hrRes) then
begin
QueryPerformanceCounter(hrT1);
repeat
QueryPerformanceCounter(hrT2);
dif := (hrT2 - hrT1) * 10000000 div hrRes;
until dif > 2;
end;
end;

ilaveten buradaki HiResTimer komponentine bak
http://www.blue-xplosion.de/englisch/index.htm
saygılar...
mutlaka öyledir ancak bilgisayarda bir elektroniktir, sabit bir zaman saykılı vardır, buna göre işlem yapılır ve mikroişlemciler mikrokontrolörlere göre fazlaca hızlıdır... ortalama bir mikrokontrolör 20 Mhzde çalışabilirken, bugün CPU lar 3Ghz de sinyal işleyebilir ve oluşturabilir... yapacağım en son şey bir döngü kurarak tekrar sayısını arayüzden optimum seyiyeye ayarlamak(gerek bilgisayar hızına, gerekse adım aralığına göre)... yardımlarınız için teşekkürler...
Hayır, bilgisayarları birer entegre gibi görmeyin. Windows realtime değildir derken söylemek istediğim anlaşılmamış.
Windows gibi multitasking yapan işletim sistemleri görevleri sırayla, belirli zamanlayıcılara göre işletirler. Sizin uygulama thread'inizin çalışması tam da zamanlayıcınız işletilirken durdurulup 40 ms'liğine işlemci gücü başka uygulamaya aktarıldığında ne yapacaksınız?
Yani Windows gibi bir OS'da işlemciye hiçbirzaman %100 sahip olamazsınız. Diğer görevleri de yerine getireiblmek için işletim sistemi sizin uygulamanızın çalıştığı process'i durdurup diğer göreve geçecektir. Çok görevlilik (multitasking) bu şekilde yapılabiliyor.
Windows gibi multitasking yapan işletim sistemleri görevleri sırayla, belirli zamanlayıcılara göre işletirler. Sizin uygulama thread'inizin çalışması tam da zamanlayıcınız işletilirken durdurulup 40 ms'liğine işlemci gücü başka uygulamaya aktarıldığında ne yapacaksınız?
Yani Windows gibi bir OS'da işlemciye hiçbirzaman %100 sahip olamazsınız. Diğer görevleri de yerine getireiblmek için işletim sistemi sizin uygulamanızın çalıştığı process'i durdurup diğer göreve geçecektir. Çok görevlilik (multitasking) bu şekilde yapılabiliyor.
- uğur alkan
- Üye
- Mesajlar: 227
- Kayıt: 29 Ağu 2004 04:49
- Konum: Istanbul
http://www.torry.net/quicksearchd.php?S ... &Title=Yes
seninle aynı şekilde motor sürmek için kullanıyorum ve oldukça başarılı...
(us) olarak bekletme yapabilirsin. (min 1us)
işini fazlasıyla görür. Windows realtime olmayabilir ama 3GHz lik bir işlemci için saniyenin milyonda biri çok büyük bir zaman, yani windows
1us de çok fazla iş yapabiliyor, senin timerda rahat rahat çalışıyor.
1ns (nano) saniyede belki zamanlar sapıtabilir ama 1us şu an işlemciler ve windows için sorun olmuyor. Pulseları osilaskop ile inceledim gayet temiz ve başarılı.....
Kolay gelsin
seninle aynı şekilde motor sürmek için kullanıyorum ve oldukça başarılı...
(us) olarak bekletme yapabilirsin. (min 1us)
işini fazlasıyla görür. Windows realtime olmayabilir ama 3GHz lik bir işlemci için saniyenin milyonda biri çok büyük bir zaman, yani windows
1us de çok fazla iş yapabiliyor, senin timerda rahat rahat çalışıyor.
1ns (nano) saniyede belki zamanlar sapıtabilir ama 1us şu an işlemciler ve windows için sorun olmuyor. Pulseları osilaskop ile inceledim gayet temiz ve başarılı.....
Kolay gelsin
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
burada bilgisayar kullanmanın amacı 3Ghz lik bir işlemci ile motor sürmek diil, mikrokontrolör yazılımıyla vakit kaybetmektense bilgisayar yazılımı daha mantıklı geliyor... bu zaten bir öğrenci projesi, endüstriyel uygulamalarda genelde RS-232 haberleşmesi kullanılıyor... yinede yardımlarınız ve önerileriniz için için teşekkür ederim...
- uğur alkan
- Üye
- Mesajlar: 227
- Kayıt: 29 Ağu 2004 04:49
- Konum: Istanbul
Endüstriyel uygulamalarda step motorlar için RS-232 yeterli olabilir ama
saniyede 100.000 adım atan bir servo motor için seri portun motora yetişmesi imkansız daha yüksek hızlı veri yoları kullanılıyor CAN bus veya
Paralel Port daha ötesinde kesme kullanan özel PCI kartlar....

saniyede 100.000 adım atan bir servo motor için seri portun motora yetişmesi imkansız daha yüksek hızlı veri yoları kullanılıyor CAN bus veya
Paralel Port daha ötesinde kesme kullanan özel PCI kartlar....

Bazen sert rüzgarlar eser başını öne eğmekten asla korkma