Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

18F2550 USB

Başlatan z, 25 Mayıs 2009, 17:00:54

z

PIC-C ile 18F2550 usb ornekleri ariyorum.

PC tarafinda driver icin microchipin ne tur destekleri var?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

dokuman yok dnecek kadar az. ben protonla yazıyorum..
seri portu ne çok seviyormuşuz

wsxwsx

Pic C den kasıt Microchip C18 ise  microchip çeşitli örnek vermiş.  

Microchip Application Libraries v2009-03-24

eğer 64kbayt /sn hız yeterliyse  ek sürücü gerekmeden HID aygıt olarak kullanabiliyorsunuz.

Ancak burada verilen mouse demo gibi örnekler tek yönlür. eğer 2 yönlü uygulama gerekirse (kesin gerekir)
C:\Microchip Solutions\USB Device - Bootloaders\HID - Bootloader\HID Bootloader - Firmware for PIC18 Non-J Devices

bootloader projesini alıp size gerekmeyen  kodları silerek muradınıza erebilirsiniz. ana döngü içinde bootloader ksıımlarını silebilir veya kendi fonksiyonlarınızıı ekleyebilirsiniz. ancak *.lkr dosyasını 2550 için uyarlamak gerekiyor. mevcut BootModified.18f4550.lkr  dosyayı projeden kaldırarak C:\MCC18\lkr\18f2550.lkr dosyasını  BootModified.18f4550.lkr gibi uyarlamak kullanmak gerekir. (galiba) USB Bootloader fonksiyonları kullanılmayacaksa modified olanı kaldırarak yerine C:\MCC18\lkr\18f2550.lkr dosyasını  eklemek mümkün olsa gerek.

eğer  hız yetmezse,  diğer demolar da mevcut. onları modifiye ederek kendi projenizi yaparsınız.

C:\Microchip Solutions\USB Device - WinUSB - Generic Driver Demo

Peki ben yaptım mı? hayır. Bootloaderi silme işini yaptım. ayıkladım. ancak kendi fonksiyonlarımı yazacak C bilgim yok. yazamıyorum.

Proton la kolayca oluyor. HID sınıfı aygıtı okumak için Easy HID ile oluşan delphi projeyi modifiye ettim. picden gelen verileri alarak sabit diske yazabiliyorum.


muhittin_kaplan

@wsxwsx
aslında tam aradığımda böyle bir yapı "İki Yönlü HID"
yapmaya çalıştığım ve ara vermek zorunda kaldığım Klavye Projesiydi. Bunun Bir Örneği Varmı Acaba?
Yani Klavyeye Pc den USB aracılııyla Klavye ye bilgi göndermek gibi

wsxwsx

FxDev,
Size nekadar hız gerekli? 64kb/sn işinizi görüyor mu?  cevap evetse HID sınıfı yapabilirsiniz. hazır bileşenler var. DLLe gerek yok. windowsun içine gömülü. sadece delphi vb ortamda kullanmak için uygun componenetleri edinerek işinizi görebilirsiniz

http://www.google.com.tr/search?hl=tr&q=HIDKomponente&meta=&aq=f&oq=

Şimdi  desen ki bana illa DLL gerekli. hemen yazabilirsin. Delphi kullanarak DLL bu bileşenden elde edilebilir. içine sizin cihazın vendor ID si ve Product ID sini koyacaz hap gibi birşey yapacaz. dışarı çıkacak fonksiyonlar şöyle olacak.
Cihazvarmi()
Cihazabaglan()
Cihazdanbilgigeldi(dizi:byte array)
cihaz gonder(dizi:byte array)
Bu fonksiyonları salladım. İhtiyaca göre kendiniz yaparsınız. Ama zaten cihazla haberleşecek uygulamanız olacaksa dışarıdan DLL yapmaya gerek yok. belki DLL den kastınız driver olabilir. HID sınıfı için durum bu. Bence HID olmayıp başka sınıflarda olabilir onlara da driver gerekmez. Örneğin USB ses kartı, modem gibi çok sayıda sınıf var.  Bu sınıflar için de kendimiz driver yazmamıza gerek yok. Alet bilgileri formalitesine uygun şekilde gönderiyorsa, ses kartı veya başka bir cihaz gibi okunabilir.

Dikkat etmemiz gereken konu bu sınıfa uygun şekilde aletimizi tanımlayabilmek verileri de ona göre göndermek. (Detayını ben de bilmiyorum ama yapılması gereken bu)

Muhittin, yukarıda bahsettiğim microchip bootloader  projesinden elde edilir. ben modifiye ettiğim projeyi derledim. ve sorunsuz olarak in ve out olmak üzere 2 adet endpoint göründü. (usbview ile baktım)

Yani aynı anda hem giriş hem çıkış oldu cihaz.  ve ek bir sürücü gerekmedi. pickit2 gibi otomatik algılandı. Şimdi bilgisayar pickit2 yi algılıyorsa  bu şekilde yola devam edebilirsiniz. Ancak Klavye olarak gösterilmeyecek. HID sınıfı genel bir cihaz olacak.  Pickit2 neyse senin cihaz da o. Zaten pickit2 de bootloader içeriyor. öncekimesajda bahsettiğim bootloader projesinden yapılmış gibi duruyor. Bu resimde blink yerine sizin fonksiyonlar gelecek

teknikelektronikci

protonda hid usb örnekelri var c nin altinda örnekelrebakiniz ama dll ve driver konusu epey bi zor sanirim hazirlari ile yetincez
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

ibo1973

usbli projeler seri porta göre hem daha modern hemde çok daha problemsiz ve sorunsuz oluyor

1- usbli bir proje yapıcaksanız usb li projenin usb kısmı için en önemli kısım descriptors kısmıdır descriptors kısmından usb ile ilgili her türlü ayarları projenize göre yapılandırmanız gerekir ama bu kısımın bir çok config ayarı bulunmaktadır hatta bu configler birbirleri ile çoğu durumda etkileşimlidir ve bu configlerin bence en kolay ayarlanma yolu asm ile yapılır

2- descriptors neleri içerir

usb ile ilgili olan her türlü veri girişi cihazın uç noktaları veri yolları cihazın hızı voltajı giriş çıkısları kaç byte nerden giricek nereden çıkıcak hatta nereye gidicek vendor idnize göre hangi diriver yüklenicek(başlangıçta oldukça karışık gelebilir iyi descriptors yapmak için bilgi mutlaka şart en azından 1ay gibi zaman bunun üzerinde kafa patlatmak mantığını anlamay uğraşmak lazım )

peki bu konuda kafa yormak istemiyorsak napabiliriz ?

internette bir sürü descriptors var yapıcağımız iş eğer sadece usbden bir kaç byte veri alıp bir kaç byte veri göndermek işe internette bunula ilgili binlerce hazır descriptors bulunabilir işinizi gören descriptors bulunduktan sonra kalanı çok kolay program içinde verileri gönderir ve alırsınız gelen ve giden veriye göre işinizi yaptırısınız.

tabi kısmındada hangi programlama bunun yanında birde bilgisayar kısmı var bilgisayarda hangi programlama  diline yatkınsanız o dille kulanıcağınız bir dll hazır bulucaksınız yada kendiniz yazıcaksınız (kendiniz yazma kısmı acemiler için tavsiye etmem hazır bulmak işinizi baya bi kolaylaştırır) yani sizin verdiğiniz Vendorid den gelen bilgileri okuyabilicek bir dll ve sizin Vendorid nize veri göderen bir dll bunlarıda kurduktan sonra bilgisayar kısmıda kolay oda sizin hayal gücünüza kalmış

neticede
usb ile ilk defa tanışıyorsanız inanılmaz derecede karışık gelebilir başlarda (ama biz elektronikçilerin genelde bi huyu vardır bi işe başladıkmı akşamı ederiz ama canımız sıkılmaz yinede zaten bu özellik yoksa iş çok sıkıcı olabilir)

birde kaynak sorunu var türkçe kaynak zaten yok desek yeridir yabacı kaynaklardada genelde çok öğretici bilgi bulmak zor konu karışık ve iç içe girmiş aslında anlatmasıda zor sabırla uğraşmanızı tavsiye ederim eğer

1-eğer bilgisayarda iyi kötü bir programlama biliyorsanız
2- pic kısmında iyi kötü bir programlama bilginiz varsa
3- elektroniktende anlarım diyorsanız
sizin için işin püf noktası usb ile ilgili descriptors da ve bilgisayar kısmında usb için bir dll dosyasında bitiyor.

konuyla ilgilenen herkeze kolay gelsin.

z

Hitech kullandigim icim yeni projedemde USB rutinlerinin de Hitech de yazilmis olmasini istiyordum. Boylece uygulama programimi kolayca mevcut ornek koda yapistirabilegim. Ancak bugune kadar PIC18F2550 icin Hitech de yazilmis USB ornek bulamadim.

Hic olmazsa simdilik isim gorulsun diye aklima soyle bir cozum geldi.

Gerci bu da az ugrastirici değil.

2550 de calisan yalin bir usb orneginin derlenmis kodlarindan geri  kazanimla asm elde edebilir ve bu kodlari hitech icine inline asm yoluyla gomebilirim.

Burada sorun derleyiciden derleyiciye degisen ve cakisan ram adreslemesi. Ancak bunu bayagi bir ugras ardindan asacagimi dusunuyorum.

Herhangi bir dilde yazilmis, calistirilip denenmis  PIC18F2550 USB icin oldukca sade bir ornek ve islemciye gomulecek derlenmis kodlarini ariyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com