Aklıma gelen ilginç bir soru HID USB senkronizasyon

Başlatan z, 02 Ağustos 2015, 07:54:34

z

Birbirinin aynı iki tane HID cihaz yaptık. Cihazın kodlarını dilediğimiz gibi yazabiliyoruz.

Her iki cihazın işlemcisinde de aynı yazılım var.

Cihazlar farklı zamanlarda PC'ye takılacaklar.

Her iki usb cihaz üzerinde birer led var.

Her iki cihaz da bu ledleri bilink ettirecekler.

Soru. Scopun bir kanalını  1. lede, diğer kanalını da 2. lede bağladığımda ledlerin aynı anda yanıp aynı anda söndüklerini göreceğim.

Yani usb cihazları nasıl birbirine senkron ederim.

Cihazlar sadece usb porta takılıdır kendi aralarında ayrıca kablo vs haberleşme durumu yoktur.

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

Karamel

hocam bilgisayar programindan ayni anda led blink message i gonderirseniz olur gibi duruyor bence?


usb device 1 takilimi? evet led blink 1;
usb device 2 takilimi? evet led blink 1;

biraz beklesin

usb device 1 takilimi? evet led blink 0;
usb device 2 takilimi? evet led blink 0;

biraz beklesin


bu sekil olursa bence senkron olurlar?

mufitsozen

hocam PCden USB cihaziniza ilk/her/periodik(tasariminiza kalmis) yolladiginiz paketin icine Windows'un GetTickCount64 yada GetTickCount fonksiyonu ile aldiginiz degeri koyun. Cihazlarin timertick'lerini de buna senkron edin.

gerisi kolay.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

z

Bu çözüm eşzamanlamada ne kadar doğruluğu garanti eder?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mufitsozen

Alıntı yapılan: z - 02 Ağustos 2015, 09:21:35
Bu çözüm eşzamanlamada ne kadar doğruluğu garanti eder?

milisaniye cinsinde senkron olabilirsiniz.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Icarus

Abi USB bildiğin gibi polling yapan bir interface, polling zamanı ise hem windows hemde USB Host controller tarafından belirleniyor.

Eğer user-mode'u bırakıp, kernel mode'da çalışan bir program yazarsan (Windows kernel-mode'da Real-Time destekler):
Low-Speed device'lar için en yüksek(hızlı) 8ms çözünürlükte, High-Speed device'lar içinde en yüksek 1ms çözünürlükte işlem yapabilirsin.
Fakat "en yüksek" dememin sebebi şu: Hem devamlı programın real-time'da kalamaz + Windows'un pek çok mekanizması senin programını beklemeyemez ve ona senkronize olamaz.

muhittin_kaplan


z

Bu soru da fikir cimlastiği.

Muhittin kaplan HID yapı zaten int transfer yapabiliyor. Ne işimize yarayacak bu?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Icarus

Yanlız USB Interrupt'larının CPU Interrupt'u gibi olmadığını, sadece "mantıksal" olarak bulduklarının altını çizmek isterim
"An Interrupt request is queued by the device until the host polls the USB device asking for data"

ErsinErce

İlk bağlanmada Sistem saatini 2-3 defa gönderebileceğiniz en yüksek çözünürlükle mcuya gönderin hocam, mcuda yazılım ile senkronizasyonu saglayin