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.
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?
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.
Bu çözüm eşzamanlamada ne kadar doğruluğu garanti eder?
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.
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.
hocam kesme iletişim yöntemini araştırın,
http://www.beyondlogic.org/usbnutshell/usb4.shtml#Interrupt (http://www.beyondlogic.org/usbnutshell/usb4.shtml#Interrupt)
Bu soru da fikir cimlastiği.
Muhittin kaplan HID yapı zaten int transfer yapabiliyor. Ne işimize yarayacak bu?
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"
İ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