Ccs C usb kütüphanesi hakkında

Başlatan eistain_54, 09 Mayıs 2012, 17:47:15

eistain_54

İyi çalışmalar.Kütüphanede ve aslında helpde yer alan bazı kısımları anlamadım.Yani çalışma mantığı olarak nedir?

#DEFINE USB_HID_DEVICE  TRUE // sadece pcye veri göndereceğimiz zaman mı aktif oluyor?Pcden veri alan uygulamalarda da görüyorum?
#if __USB_PIC_PERIF__  //nedir?
#include <pic18_usb.h>   //Bunu 18f2550 kullanırken ekliyor muyuz?Aslında özetle nedir?
#include <usb.c>  // Bunda anlamadığım bunun birde .h olanı var.Sadece onu dahil edenlerde var.Ne anlam taşır?

usb_init_cs();  /birde usb_init(); olanı var.O tamam da bu nedir?

usb_task(); // Özel kılan nedir?Yani bazı uygulamarda var bazılarında yok?

usb_put_packet(x,y, z, USB_DTS_TOGGLE)  //Sanırım usbden veri gönderiyor.Putc gibi.Ama kullanım şekli nedir?Yani x y z ve sonrakinin yerinde ne olmalı?

usb_get_packet(1, in_data, 2); //buda sanırım degisken=getc(); gibi ancak parantez içindeki durumlar nedir?Degiskenin ilk adresinden itibaren 2 byte gibi mi?



Sadece pc ye veri gönderen bir uygulamada hangi kütüphaneleri dahil etmek gerekir?İkili iletişimde neleri?Şimdi diyeceksiniz ki kardeşim bunlar zaten helpde var.Biraz ingilizceyle çözülür.Buraları inceledim ama anlamadım.Netten araştır bulursun diyceksiniz.Onu da yaptım örnekler içinde açıklama olanı bulamadım.Adım adım usb anlatımı var incele diyceksiniz.Önümde açık.Onlarla ilgili bişey bulamadım.Zaten o c18 ile hazırlamış.Aslında burda anlamadığım nokta bu fonksiyonların kullanım şekilleri.Bunların özetlenmesi yada yol gösterilmesi konusunda yardım bekliyorum.Teşekkürler.İyi çalışmalar.
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

pea

Aslında Ccs'in Usb örneğini incelerseniz her şeyi çözersiniz.Yine de elimden geldiğince yardımcı olayım.

İlk 2 satırdaki kodlar , sanırım adı Usb_Desc_HID olan bir kod dosyasından alıntı.Bu dosyada USB HID sınıfının tanımlamaları bulunuyor.Ürün kimliği , veri uzunlukları , cihaz seçimi vs.
pic18_usb.h dosyasında , 18F serisinin alt katman usb ayarları var.Burayı kurcalamaya gerek yok.Sadece projede bulunacak , Usb.c kullanıyor bunu.
Usb.c , Usb'nin asıl döngülerini , kesmelerini , kontrolünü ayarlayan kısım.İçerisinde usb.h'ı da ekliyor zaten.usb.c olmadan olmaz

usb_init_cs komutu , Usb_init'in Connection Sense(bağlantı algılama) fonksiyonlu hali.Usb bilgisayara bağlandığı anda , usb donanımını hazırlıyor.Cihaz sürekli bilgisayara bağlı olacaksa Usb_init kullanmanızı öneririm.

usb_task , Usb bağlantısını kontrol eden bir komut.Connection sense kullanıldıysa bağlantı durumunu kontrol etmeye yarıyor.Cihaz sürekli bağlı olacaksa gerek yok.
usb_put_packet ; x=Seçilen Endpoint.Sanırım birden fazla Usb desteği olan Pic'lerde işlevi var.Tek usb için 1 koymak yeterli.
                             y=Data paketi.HID ayarlarında belirttiğimiz uzunlukta olabilen bir Byte dizisi olacak.(Max 64 byte)
                             z=Paket uzunluğu.Ayarlanan paket uzunluğu.

usb_get_packet'te de durum aynı.1 , bizim Endpoint'imiz.in_data , tampon'dan okunan gelen data paketimiz.3. seçenek de okunacak max uzunluk.Yani dediğiniz gibi.Ama HID için ayarlanan max alma uzunluğunu ayarlamak tercih edilebilir.

eistain_54

@pea.Gerçekten çok faydalı oldu.Teşekkür ederim.Bahseettiğiniz gibi örnekleri incelemiştim ancak çok fazla anlamadığım için sordum.Şimdi bazı yerlerde görüyorum ki usb_init_cs(); kullanmadan ana program içinde main fonksiyonunda while içine değil; usb_task kullanmış.Birde arada sırada pcye bağlayabilirim cihazı.Yani sürekli bağlı olmayabilir.Bu durumda sanırım usb_init_cn(); eklemek gerekli?Ben text göndermek istesem bunu nasıl düzenleyebilirim acaba?Yani pcden metin göndermek istiyorum.Bir text box içindeki veriyi sürekli saymam mı gerekiyor?yani
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

pea

Amaç sadece Usb haberleşmek değil , bilgisayar dışında işlevi olacaksa _CS ve _task komutlarını kullanmak daha doğru olur.Ancak bu halde kullanmadım , bilmiyorum.
Metin göndermek için de karakter karakter göndermek lazım.Paketin her byte'ına birer Char gelecek şekilde yollanabilir.Bir de direkt String yollayıp okuma fonksiyonları var , Pic tarafında usb_gets ve usb_puts var mesela.

Mucit23

#4
merhaba arkadaşlar

CCS nin usb kütüphanesini bende inceliyorum. Geçen usb ile ufak bir uygulama yaptım. Veri gönderme ve alma işlemlerini yapabiliyorum. Kütüphane hakkında bazı öğrenmek istediğim konular var.

Mesela Ben sürekli USB bağlantısını kontrol etmek istiyorum. Yani bağlantı kesildiği zaman haberim olması lazım. Bu durumda main programı içerisinde sürekli usb_task() Fonksiyonunumu çağırmam gerekiyor. Bağlantı kesildiğini nasıl algılarım?

Mucit23

#5
Arkadaşlar Bu konuda birazcık bilgiye ihtiyacım var. CCS de daha yeniyim bu yüzden kodlar özellikle USB ile ilgili kodlar bana pek birşey ifade etmiyor.
USB cihazının bilgisayara bağlı olup olmadığını, Daha doğrusu bağlantının kesilip kesilmediğini sürekli bilmem gerekiyor. Bunun için ne yapmalıyım??

İyi Çalışmalar dilerim.


Mucit23


Recep METE

Önemli bilgiler , kaybolmasın istedim.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

MCansız

Alıntı yapılan: Mucit23 - 05 Eylül 2012, 17:23:52
merhaba arkadaşlar

CCS nin usb kütüphanesini bende inceliyorum. Geçen usb ile ufak bir uygulama yaptım. Veri gönderme ve alma işlemlerini yapabiliyorum. Kütüphane hakkında bazı öğrenmek istediğim konular var.

Mesela Ben sürekli USB bağlantısını kontrol etmek istiyorum. Yani bağlantı kesildiği zaman haberim olması lazım. Bu durumda main programı içerisinde sürekli usb_task() Fonksiyonunumu çağırmam gerekiyor. Bağlantı kesildiğini nasıl algılarım?


bende bu olayı araştırıyorum usb olayını micro c ve protonda denedim sadece usb odaklı projeler yapabiliyorum ama devrem usb takılmadanda çalışması gerekiyor ve pc den veri gelmeyince işlemci bekliyor ve diger işlemler yarıda kalıyor protonda ve microc de aynı sıkıntıyı yaşıyorum
bunun için rtos kullanmak sorunu çözer kanısındayım osa rtosu biraz araştırıcam