Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: muhittin_kaplan - 01 Haziran 2008, 20:09:13

Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 01 Haziran 2008, 20:09:13
Evet Arkadaşlar Aradım taradım ama birtürlü bulamadım
18F4550 ile bir USB klavye yada Mouse yapmak istiyorum. Easy HID denilen bir programla ilgili olarak çalışmalarım oldu. Genel Olarak Bir Klavye Çalışması Nasıl Olur Yardım ederseniz Sevinirim
Başlık: USB Cihaz
Gönderen: ErsinErce - 01 Haziran 2008, 22:36:05
Protonun sitesine bakarsanız ilgili örnekleri bulabilirsiniz.
Ama bi yedeğide burda bulunsun Mouse la ilgili örnek zaten var

Klavye için gerekli örnek kodlar;

'****************************************************************
'*  Name    : USBPROJECT.BAS                                    *
'*  Author  : Cynetron                *
'*  Notice  : Copyright (c) 2008 *
'*          : All Rights Reserved                               *
'*  Date    : 26.02.2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

' select MCU and clock speed                                                                                                                                                                                                                                  
Device = 18F2550
XTAL = 48

' descriptor file, located in \inc\usb_18 - a copy
' is located in the same folder as this file
USB_DESCRIPTOR = "KBDDESC.INC"

' USB buffer...
Symbol USBBufferSizeMax = 8
Symbol USBBufferSizeTX  = 8
Symbol USBBufferSizeRX  = 8
Dim    USBBuffer[USBBufferSizeMax] As Byte

' some useful flags...
Dim PP0 As Byte SYSTEM        ' USBPOLL status return
Symbol CARRY_FLAG = STATUS.0  ' high if microcontroller does not have control over the buffer
Symbol ATTACHED_STATE = 6     ' is USB attached
Symbol TRNIF = UIR.3  ' low if USB Busy
Dim POSITION As Word
   
' ************************************************************
' * program starts here...                                   *
' ************************************************************
ProgramStart:
  GoSub AttachToUSB
 
' ************************************************************
' * main program loop                                        *
' ************************************************************
ProgramLoop:

USBPoll
POSITION = POSITION + 1
GoSub Choose
GoSub DoUSBOut
Goto ProgramLoop
Choose:
Select POSITION
Case 0
Str USBBuffer = 0,0,0,0,0,0,0,0       'Key 0
return

Case 1
Str USBBuffer = 0,0,$21,0,0,0,0,0    'Key 4
return

Case 2
Str USBBuffer = 0,0,$22,0,0,0,0,0   'Key 5
return
ENDSELECT
' ************************************************************
' * receive data from the USB bus                            *
' ************************************************************
DoUSBIn:
  USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
  Return
 
' ************************************************************
' * transmit data                                            *
' ************************************************************
DoUSBOut:
  Repeat
     USBPoll
  Until PP0 = ATTACHED_STATE
  USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
  Return

' ************************************************************
' * wait for USB interface to attach                         *
' ************************************************************
AttachToUSB:
  Repeat
     USBPoll
  Until PP0 = ATTACHED_STATE
  Return


LIST
; KBDDESC.INC
;
;
; This file contains a set of descriptors for a STANDARD Keyboard.
;
#DEFINE __EP0_BUFF_SIZE 8 ; 8, 16, 32, or 64
#DEFINE __MAX_NUM_INT 1 ; For tracking Alternate Setting
#DEFINE __MAX_EP_NUMBER 1 ; UEP1
#DEFINE __NUM_CONFIGURATIONS 1
#DEFINE __NUM_INTERFACES 1

#DEFINE __MODE_PP _PPBM0
#DEFINE __UCFG_VAL _PUEN | _TRINT | _FS | __MODE_PP ; Full-speed

#DEFINE __USB_USE_HID ; Inform the rest of the library subroutines that we're using a HID interface

; HID
; Endpoints Allocation
#DEFINE __HID_INTF_ID 0
#DEFINE __HID_UEP UEP1
#DEFINE __HID_BD_OUT __ep1Bo
#DEFINE __HID_INT_OUT_EP_SIZE 8
#DEFINE __HID_BD_IN __ep1Bi
#DEFINE __HID_INT_IN_EP_SIZE 8
#DEFINE __HID_NUM_OF_DSC 1

; ------------------------------------------------------------------------------
; This table is polled by the host immediately after USB Reset has been released.
; This table defines the maximum packet size EP0 can take.
; See section 9.6.1 of the Rev 1.0 USB specification.
; These fields are application dependent to be modified to meet your specifications.
;
__DeviceDescriptor
retlw (__EndDeviceDescriptor - __DeviceDescriptor) / 2 ; bLength Length of this descriptor
retlw __DSC_DEV ; bDescType This is a DEVICE descriptor
dt 0x10, 0x01 ; bcdUSB Revision 1.10 low byte, high byte
retlw 0x00 ; bDeviceClass
retlw 0x00 ; bDeviceSubClass
retlw 0x00 ; bDeviceProtocol
retlw __EP0_BUFF_SIZE ; bMaxPacketSize for EP0
dt 0xD8, 0x04 ; idVendor - 0x04D8 is Microchip VENDOR ID low byte, high byte
dt 0x00, 0x00 ; idProduct low byte, high byte
dt 0x01, 0x00 ; bcdDevice low byte, high byte
retlw 0x01 ; iManufacturer
retlw 0x02 ; iProduct
retlw 0x03 ; iSerialNumber
retlw __NUM_CONFIGURATIONS ; bNumConfigurations
__EndDeviceDescriptor

; ------------------------------------------------------------------------------
; This table is retrieved by the host after the address has been set.
; This table defines the configurations available for the device.
; See section 9.6.2 of the Rev 1.0 USB specification (page 184).
; These fields are application dependent to be modified to meet your specifications.
;
; Configuration pointer table
__USB_CD_Ptr
__Configs
db Low ___Config1, High ___Config1
db Low ___Config1, High ___Config1

; Configuration Descriptor
___Config1
retlw (__Interface1 - ___Config1) / 2 ; bLength Length of this descriptor
retlw __DSC_CFG ; bDescType2 = CONFIGURATION
__Config1Len
retlw Low ((__EndConfig1-___Config1) / 2) ; Length of this configuration
retlw High ((__EndConfig1 - ___Config1) / 2)
retlw 0x01 ; bNumInterfaces Number of interfaces
retlw 0x01 ; bConfigValue Configuration Value
retlw 0x04 ; iConfigString Index for this config = #01
retlw 0xA0 ; bmAttributes attributes - bus powered
retlw 0x50 ; Max power consumption (2X mA)
__Interface1
retlw (__HIDDescriptor1 - __Interface1) / 2 ; length of descriptor
retlw __DSC_INTF
retlw 0x00 ; number of interface, 0 based array
retlw 0x00 ; alternate setting
retlw 0x01 ; number of endpoints used in this interface
retlw 0x03 ; interface CLASS - assigned by the USB
retlw 0x01 ; boot device
retlw 0x01 ; interface protocol - Keyboard
retlw 0x05 ; index to string descriptor that describes this interface
__HIDDescriptor1
retlw (__Endpoint1 - __HIDDescriptor1) / 2 ; descriptor size (9 bytes)
retlw 0x21 ; descriptor type (HID)
retlw 0x00 ; HID CLASS release number (1.00)
retlw 0x01
retlw 0x00 ; Localised country code (none)
retlw 0x01 ; Number of HID CLASS descriptor to follow (1)
retlw 0x22 ; Report descriptor type (HID)
__ReportDescriptor1Len
retlw Low ((__EndReportDescriptor1 - __ReportDescriptor1) / 2)
retlw High ((__EndReportDescriptor1 - __ReportDescriptor1) / 2)
__Endpoint1
retlw (__EndConfig1 - __Endpoint1) / 2 ; length of descriptor
retlw __DSC_EP
retlw 0x81 ; EP1, IN
retlw 0x03 ; Interrupt
retlw 0x08 ; This should be the size of the endpoint buffer
retlw 0x00
retlw 0x0A ; polling interval (10ms)
__EndConfig1

__ReportDescriptor1
retlw   0x05
retlw   0x01    ; usage page (generic desktop)
retlw   0x09
retlw   0x06    ; usage (keyboard)
retlw   0xA1
retlw   0x01    ; collection (application)
retlw   0x05
retlw   0x07    ;   usage (Key codes)
retlw   0x19
retlw   0xE0    ;   usage minimum (224)
retlw   0x29
retlw   0xE7    ;   usage minimum (231)
retlw   0x15
retlw   0x00    ;     logical minimum (0)
retlw   0x25
retlw   0x01    ;     logical maximum (1)
retlw   0x75
retlw   0x01    ;     report size (1)
retlw   0x95
retlw   0x08    ;     report count (8)
retlw   0x81
retlw   0x02    ;     Input (data,variable,absolute)
retlw   0x95
retlw   0x01    ;     report count (1)
retlw   0x75
retlw   0x08    ;     report size (8)
retlw   0x81
retlw   0x01    ;     Input (constant)
retlw   0x95
retlw   0x05    ;     report count (5)
retlw   0x75
retlw   0x01    ;     report size (1)
retlw   0x05
retlw   0x08    ;     usage page (page# for leds)
retlw   0x19
retlw   0x01    ;     Usage minimum (1)
retlw   0x29
retlw   0x05    ;     Usage maximum (5)
retlw   0x91
retlw   0x02    ;     output (data,variable,absolute)
retlw   0x95
retlw   0x01    ;     report count (1)
retlw   0x75
retlw   0x03    ;     report size (3)
retlw   0x91
retlw   0x01    ;     output (constant)
retlw   0x95
retlw   0x06    ;     report count (6)
retlw   0x75
retlw   0x08    ;     report size (8)
retlw   0x15
retlw   0x00    ;     logical minimum (0)
retlw   0x25
retlw   0x65    ;     logical maximum (101)
retlw   0x05
retlw   0x07    ;     usage page (keycodes)
retlw   0x19
retlw   0x00    ;     usage minimum (0)
retlw   0x29
retlw   0x65    ;     usage maximum (101)
retlw   0x81
retlw   0x00    ;     input (data, array)
retlw   0xC0    ;   end collection
__EndReportDescriptor1


__langids
retlw   Low __lang_1
retlw   High __lang_1
retlw   Low __lang_2       ; String indexes of different languages
retlw   High __lang_2

__lang_1 ; English
retlw   Low  __String0     ; __langids
retlw   High __String0
retlw   Low  __String1_l1    
retlw   High __String1_l1
retlw   Low  __String2_l1
retlw   High __String2_l1

__lang_2
retlw   Low  __String0     ; Also point to LangID
retlw   High __String0
retlw   Low  __String1_l2
retlw   High __String1_l2
retlw   Low  __String2_l2
retlw   High __String2_l2

; String pointer table
__USB_SD_Ptr
__Strings
db Low __String0, High __String0
db Low __String1_l1, High __String1_l1
db Low __String2_l1, High __String2_l1


__String0
retlw   (__String1_l1 - __String0) / 2 ; Length of string
retlw   __DSC_STR ; Descriptor type 3
dt   0x09, 0x04     ; Language ID (0x0409 as defined by MS)
dt   0x04, 0x08 ; Some other language ID for testing

__String1_l1
retlw   (__String2_l1 - __String1_l1) / 2 ; Length of string
retlw   __DSC_STR ; Descriptor type 3
dt 'C', 0, 'y', 0, 'n', 0, 'e', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0
__String2_l1
retlw   (__String3_l1 - __String2_l1) / 2
retlw   __DSC_STR
dt   'U', 0, 'S', 0, 'B', 0, ' ', 0, 'K', 0, 'e', 0, 'y', 0, 'b', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0
__String3_l1

__String1_l2 ; Language 2, Chinese. Strings can be totally different than english
retlw   (__String2_l2 - __String1_l2) / 2 ; Length of string
retlw   __DSC_STR ; Descriptor type 3
dt 'C', 0, 'y', 0, 'n', 0, 'e', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0
__String2_l2
retlw   (__String3_l2 - __String2_l2) / 2
retlw   __DSC_STR
dt   'U', 0, 'S', 0, 'B', 0, ' ', 0, 'K', 0, 'e', 0, 'y', 0, 'b', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0
__String3_l2
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 04 Haziran 2008, 23:18:52
deneyemedim ama teşekkür ederim
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 04 Haziran 2008, 23:24:31
Peki Pc tarafında herhangi birşey yapmamız gerekmiyormu ?
Başlık: USB Cihaz
Gönderen: ErsinErce - 04 Haziran 2008, 23:50:03
Hayır HID device olarak otomatik tanıyor driver yüklemenize gerek kalmıyor ve gönderdiğiniz karakterleri direk almaya başlıyor.

İyi Çalışmalar
Başlık: USB Cihaz
Gönderen: ilker_32 - 10 Haziran 2008, 14:25:59
Mause + Klavye hakkında,

http://rapidshare.com/files/121417440/Mouse_control.rar

veya

http://rapidshare.com/files/170077726/Mouse_control.rar
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 11 Haziran 2008, 14:59:58
herkese teşekkür ederim
2550 yada 4550 de kodlarda fark yaparmı tanımlamalar haricinde
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 15 Ekim 2008, 14:59:50
Yardımlarınız İçin Tşk Ederim.
Klavye için Kodları çalıştırdım İstediğim Tuş u gönderiyorum.(Bilgiyi Değil)
Yanlız Pc den Herhangi bir Bilgiyi PIC e Gönderemedim. Bir Butona basınca herhangi bir ledi Yaksam Dahi Olur.(Pc Tarafında Kodlama Ve Programlamada Problem Yaşamam) Usbin fonksiyonunu aramadığım yer kalmadı nerde hata yapıyorum anlamadım.
İyi Çalışmalar.
Başlık: USB Cihaz
Gönderen: wsxwsx - 15 Ekim 2008, 18:37:58
Pcde kullanacağın program nedir?

easyhid ile otomatik kod üretince bunların örneğide oluşuyor. kodun eksiği şudur. içinde ne yapıplmasını anlatmış ama yapmamış
send (buffer, boyut) gibi gönderirsin demiş
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 19 Ekim 2008, 23:02:36
istediğim datayı gönderip bunu lcd de göstermek yada istediğim port a bağlı led i yakmak
vb60, .net 2005 ve .net 2008 yüklü burada sıkıntı yaşamam yani dll kullanımında vs de
Başlık: USB Cihaz
Gönderen: wsxwsx - 20 Ekim 2008, 10:25:19
DErleyici USB demoları ve easy hid  tarafından üretilen otomatik projeler çalışıyor. öncelikle bunlardan 1 adet deneyin. zor bir şeyyok. göreceksiniz. Ben pice sayı gönderdim mesela 2 gönderdim pic bunu 2 ile çarpıp geri gönderdi. ekrana yazdım. zor birşey yok. demoları deneyin.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 21 Ekim 2008, 13:41:40
sitede jabba adında bir projede kullanılmış bir dll dosyasıyla bağlantı kurdum. Bunu vb.2005 kullanarak yaptım. yanlız dikkat ettim rastgele zamanlarda pic e göndermede pic tarafı yant vermiyor.ve progam duruyor. şimdi burada akıma gelen osc ile ilgili bir prblem olması.(20 MHz lik cristall kullanıyorum)
xtall=48 komutu nu kullandığımda normal olarak çalışıyor (bir müddet sonrayanıt vermeyerek) -20Mhz crystall-
xtall=20 komutunu kullanıyorum (cristal im 20 MHz olduğu için) burada hiç usb tanımıyor
bundan kaynaklanabilir mi ?
Başlık: USB Cihaz
Gönderen: wsxwsx - 21 Ekim 2008, 14:21:19
O arkadaş konuyu gereksiz yere dallandırmış. hazır , saat gibi çalışan örneklere bakın pişman olmazsınız. derinlemesine bilgi işinzii zorlaştırır.

Bread bord üzerinde yapıp  vbasic demoyu çalıştırman sadece 10 dakikanı alır. led yak söndür , müzik çaldır hiç sorun değil. pic senin gönderdiğin komuta göre uygun göreceğin işi yapar
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 21 Ekim 2008, 15:30:14
Projeyi Çalıştırdım Yanzlı Dediğim Gibi Belli Bir Müddet Sonra İletişim Kesiliyor.. Onun Sebebi OSC olabilirmi Acaba. Birde vb60 değilde .net daha çok işimi göreceği için onu kullanmayı tercih ettim.
Başlık: USB Cihaz
Gönderen: wsxwsx - 21 Ekim 2008, 16:08:09
böyle bir sorun vardı  hatırladım. sebebi şu .en az 1 ms içinde usb rutini çağırılması gerekiyor. eğer çok gecikilirse bağlantı kesiliyor. bu amaçla sınırsız bir döngü gerekir. Bir de MCLR pinini beslemeye bağlamak, usb 3.3 volt üreten pine 470n F bağlamak gerek. hatırladığım sorunlar bunlar. 470n kısmı çok önemli demişlerdi. gerçekten öyleymiş.

şimdi aşağıdaki gibi bir döngüde USBin kullanıp timeout olarak 10 saniye verdiysen bu arada 10 saniye içinde pcden hiç bir komut gelmediyse USB bağlantısı kesin olarak kopacaktır. zaten 1msden fazla beklememelisin.

while 1=1
'bazı işler ...
USBOut 3, USB_BUFFER, Auto
wend


aşağıdaki gibi yaparsan sorun olmaz

while 1=1

Repeat
   USBIn 3, BUFFER, AUTO        
Until  inFLAG = ..  
 Repeat  
   USBOut 3, BUFFER, AUTO    
 Until  sendFLAG = ..

wend

burada flag, gönderme ve alma işleminin bittiğini bildiren bitlerdir. pic aldığı veriyi aynen geri gönderecektir.

2. repeat ten önce BUFFER[2] =  BUFFER[2] +3
dersen bu dizinin 2 nolu baytını 3le toplayıp geri gönderir
Başlık: USB Cihaz
Gönderen: wsxwsx - 22 Ekim 2008, 18:34:16
Nasıl oldu durum? sorun devam ediyor mu
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 23 Ekim 2008, 11:35:46
Deneme Fırsatım Olmadı
Griple Boğuşuyorum.
Sizin Dll için Msn Den Halledemeyeceğiz. Buradan Devam Edelim İSterseniz..
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 25 Ekim 2008, 22:13:10
Problem Sanırım Benim Daha Yeni öğrendiğim OSC Ayarlarından
Pll diye bir reg dan ayar yapılması gerekiyormuş.. yani anlayacağınız aklıma gelen problem yani Osc den
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 27 Ekim 2008, 08:43:26
PIC den PC ye Bilgi Gönderirken Yapmak İstediğim Aslında Klavye Gibi Bazı Tuşlarının Gönderilmesi. Bunun Örneklerini Yukarda Örnekleri Verildi Yaptım Çalıştırdım.
PC den PIC e veri Gönderirken, Klavye Olarak Description Atadığımız İçin PC den PIC e veri gönderemiyorum (Normal Description Tanımlama Yaptığımda Gönderebiliyorum)
Yapmak İstediğim Pcden Gönderdiğim Bilgileri Sanki Klavyeden Geliyormuş Gibi PIC in Bana Geri Çevirmesi... Nasıl Çözeceğiz Anlamadım...
Başlık: USB Cihaz
Gönderen: wsxwsx - 31 Ekim 2008, 17:20:51
Normalde klavyenin  ledlerini yakabilmek için bilgisayar klavyeye veri gönderir. Klavye bunları kendi kendine yakıp söndürmez. PCden gelen komuta göre yakıp söndürür.

Bu ledleri yakmak için gerekli komut nasıl gönderiliyor ona bakmak gerek. O zaman  aynı şekilde PICe veri gönderebilirsiniz.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 31 Ekim 2008, 22:33:39
Yani Kısacası Klavye Olarak tanıtıp (desc klavye olarak) Bilgi Gönderemiyorum (Caps,Scroll Vs Dışında) Olarak Anlıyorum.
Peki Klavye Olarak Tanımlamadan Nasıl Olurda Klavye Gibi Bilgi Gönderebilirim.
Başlık: USB Cihaz
Gönderen: wsxwsx - 31 Ekim 2008, 22:46:11
picden gelen bilgiler nereye gelecek.  bu bilgileri alıp sonra ekranda başka biryere yazacak ek bir program olacak mı? öyle olacaksa  klavye gibi göstermek şart değildir. Yok eğer ekrandaki notepad gibi  bir yere  yazsın diyorsan mecburen klavye gibi göstereceksin. Ama bu cihazın bilgisayrdan veri alamayacağı anlamına gelmez. şimdi veri alabilen örneğe bakarak klavye kodlarına bu alma işini ekleyeibliriz.

anladığım kadarıyla 2. bir endpoint  açılacak . biri bilgisayara gönderiken bu 2.si alacak. çok zor iş değil bu. benzeterek yaparsın. proteusta usb simulasyonu çalışıyordu. kolayca denersin.

Önceki sayfada 2. mesajda ki klavye kodu bilgisayardan veri alabilir.  usbin demişl. bununla alırsın.

Yalnız şöyle birsorun var. Alet klavye gibi bilgisayara takılınca windwos bununla bağlantıya geçmiş oluyor. siz ayrı bir programdan buna nasıl veri göndereceksiniz. Yerinizde olsam klavye gçbç göstermeyibırakıp kendi programımı yazarım.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 31 Ekim 2008, 23:03:12
Proje Kabaca Şöyle
.Net Altında Yazılmış Bir Programdan Sırasıyla Berlenmiş Karekterleri PIC e Göndereceğim. Daha Sonra PIC bu aldığı bilgileri Windows Altında Herhangi biryere (Not defteri, Word Açk Olan Herhangi biryer) Yazacak.
Başlık: USB Cihaz
Gönderen: wsxwsx - 31 Ekim 2008, 23:21:15
bu işi anlayabilmemiz çok zor. ama muhtemelen bunlara gerek yok. pic bunları alıp birşeyler yaparak geri yazacaksa, bunu bilgisayardaki program zaten yapamaz mı? yok eğer dongle gibi birşeyse klavye gibi görünmesinin gerekiğini  anlayamdım. klavye gibi görünmesi gerçekten şart mı? Bir uygulama gelen verileri alsın ne istiyorsan yapsın. istersen copy paste yapar...
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 31 Ekim 2008, 23:24:05
Pc deki programla (Sendkeys vs) ile Olmamalı Cihazdan geri gelmeli. Dongle gibi bişey yapmam gerek.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 31 Ekim 2008, 23:27:19
Pic Klavye Gibi basmalı, Pic e Program tarafından Gönderdiğim karakterleri
Başlık: USB Cihaz
Gönderen: wsxwsx - 31 Ekim 2008, 23:28:44
pekiklavye gibi olması neden? kolay olması gelen verileri test amacıyla görebilmen için mi?

halbuki bunlara hiçgerekyok. veriyi gayet hızlı şekilde okuyup yazabilirsin gerekirse uygulamaya katılacak bir DLL, ocx yaparsın. yazılan veri şifrelenir. öyle yazılır. lisans vs ne istersen yazarsın.

Programın çalışma süresini de yazdırtırsın. deneme süresi bitince kilitlensin. bunların dangılın atasını yapabilirsin.

klavye gibi görünemsine gerek yok.

dangıl yapacaksan DLL içinde şöyle bir fonksiyon olur. gönderdiğin string kodlanarak geri gelir.

kodlu bilgi = kodla(gidecekstring)
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 01 Kasım 2008, 00:12:04
Eğer Klavye Olmazsa Sadce O Vendor ve İdyi Kullanan Programla alışveriş Yapabilir. Buradan aldığım veriyi Program vasıtasıyla işleyip Göndereblirim. Oysa sistemde Bir "Cop" Dolaşıyor  Key Gönderen programları Yakalayıp Durduruyor. Ben Bunu Aşmak İçin Sanki sistemdeki bir Klavyeden Giriş Yapılıyor Gibi Göndeeceğim "Key" leri
Başlık: USB Cihaz
Gönderen: wsxwsx - 01 Kasım 2008, 00:35:13
keyleri pice gönderdin . diyelim. PC tarafında çalışan program senin kontrolünde mi? oradan istediğn veriyipice gönderebiliyor musun?

Bir de PIC aynı anda birden fazla alet gibigösterebilir kendisini.klavye ve joystik gibi.

bence sen öncelikle picden, capslock tuşu gönder bu sırada bilgisaayr ona led yakması için komut gönderecektir. bu gelen komutu alman  zor değil. sınırsız bir döngü yaparsın veri gelene kadar sürekli USBin yaparsın.

Anladığım kadarıyla güçlü bir koruma mekanizması olan yazılımı dışarıdan picle kırmaya çalışıyorsunuz. pic keyleri deneyerek tutturacak :)

ama meraketme bunu düşünen adam gecikmede koymuştur. saniyede 100 tane key deneyemezsin.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 01 Kasım 2008, 00:46:54
yok 100 tane key göndermeme gerek yok adımı yazdırsam yeter. :D
program benim ontrolümde olacak o kolay. Cihz Kandini Klavye Olarak Tanıttığından Bilgi Gönderemiyorum. (Klaye Tek Yönlü Ya)
bileşik cihaz nasıl yaparız soru bu sanırım.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 01 Kasım 2008, 01:29:46
peki aynı USB hat üzerine iki PIC kullanabilirmiyz.(Vendor Ve Pro ID ler Farklı) Yani PIC 1 Klavye PIC 2 Usb Devce olarak tanınacak ve kendi aralarında ileişimde olacaklar.
Başlık: USB Cihaz
Gönderen: wsxwsx - 01 Kasım 2008, 11:12:24
Yaparsın.  bir usb huba  2 adet usb picli cihaz bnağlarsın. bu huba bağlı picler ayrıca kendi arasında bağlıdır. usb hub + 2 adet pic li kart hepsini bir kutuya koyarsın tek bir cihaz gibi görünür
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 03 Kasım 2008, 19:23:33
peki combined yada composite usb devices nasıl yaparız. yani bununla ilgili bir desc dosyas felan mı var ?
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 27 Kasım 2008, 23:00:31
evet uzun araştırma ve kodlama sonucunda yaptıklarım.
USB ile Mouse
Usb İle Klavye
Usb İle HID
18f2550 yada 4550 ile RB0 ve TMR0 kesmeleri
bunların hepsi ayrı ayrı çalşıyor. yanlız herhangi bir kesme rutini içerisine bu usbout konutunu yazdığımda ya usb çalışmıyor ya kesme. prblemi bulamadım.
(yapmak isediğim rb0 da int oluştuğunda verdiğim bilgiyi usb den gönderecek)
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 28 Kasım 2008, 01:31:38
Sanırım Birşeyler Yakalamaya Başladık
Mikroelektronk in MicroBasic derleyicisinde nedense int. kapatmışlar.
Burası Önemli

' Disable all interrupts
 ' Disable GIE, PEIE, TMR0IE, INT0IE,RBIE  
 INTCON  = 0
 INTCON2 = $F5
 INTCON3 = $C0
 ' Disable Priority Levels on interrupts
 RCON.IPEN = 0
 PIE1 = 0
 PIE2 = 0
 PIR1 = 0
 PIR2 = 0


program hid_test

dim k as byte
dim userRD_buffer as byte[64]
dim userWR_buffer as byte[64]

sub procedure interrupt
 asm
   CALL _Hid_InterruptProc
   nop
 end asm
end sub

sub procedure Init_Main
[B] ' Disable all interrupts
 ' Disable GIE, PEIE, TMR0IE, INT0IE,RBIE  
 INTCON  = 0
 INTCON2 = $F5
 INTCON3 = $C0
 ' Disable Priority Levels on interrupts
 RCON.IPEN = 0
 PIE1 = 0
 PIE2 = 0
 PIR1 = 0
 PIR2 = 0 [/B]

 ' Configure all ports with analog function as digital
 ADCON1 = ADCON1 or $0F

 ' Ports Configuration
 TRISA = 0
 TRISB = 0
 TRISC = $FF
 TRISD = $FF
 TRISE = $07

 LATA = 0
 LATB = 0
 LATC = 0
 LATD = 0
 LATE = 0

 ' Clear user RAM
 ' Banks [00 .. 07] ( 8 x 256 = 2048 Bytes )
 asm
   LFSR    FSR0, $000
   MOVLW   $08
   CLRF    POSTINC0, 0
   CPFSEQ  FSR0H, 0
   BRA     $ - 2
 end asm

 ' Timer 0
 T0CON = $07;
 TMR0H = (65536 - 156) >> 8
 TMR0L = (65536 - 156) and $FF
 INTCON.T0IE  = 1            ' Enable T0IE
 T0CON.TMR0ON = 1
end sub


'** Main Program **

main:
 Init_Main()
 Hid_Enable(@userRD_buffer, @userWR_buffer)

 do
   for k = 0 to 255
     ' Prepare send buffer
     userWR_buffer[0] = k

     ' Send the number via USB
     Hid_Write(@userWR_buffer, 1)
   next k
 loop until FALSE

 Hid_Disable
end.
Başlık: USB Cihaz
Gönderen: ground - 28 Kasım 2008, 16:39:01
Alıntı yapılan: "muhittin_kaplan"evet uzun araştırma ve kodlama sonucunda yaptıklarım.
USB ile Mouse
Usb İle Klavye
Usb İle HID
18f2550 yada 4550 ile RB0 ve TMR0 kesmeleri
bunların hepsi ayrı ayrı çalşıyor. yanlız herhangi bir kesme rutini içerisine bu usbout konutunu yazdığımda ya usb çalışmıyor ya kesme. prblemi bulamadım.
(yapmak isediğim rb0 da int oluştuğunda verdiğim bilgiyi usb den gönderecek)

neden kesme anında göndermeye çalışıyorsun bilgiyi?

rb0 int oluştuğunda (muhtemelen saydırma yapıyorsun) yapacağın işlemi yap..

usb den gönderme olayını int gerek yok..

gerçek zamanlı çalışma ise kastın verilerin doğruluğu kesme anında arttıracağın sayacın değerini görmektir.
atıyorum 100khz lik bir sinyali ya da bir sayaç arttırıyorsan sayacı o hızda takip edebilmen zaten imkansız.

amaç bu işin scadasıysa sen verileri doğru oku 10msn de bile ekranda göstersen kafi..
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 28 Kasım 2008, 19:52:26
neden kesme anında göndermeye çalışıyorum ?
çümki projede 1bytlık bir bilgiyi parelel olarak başka bir cihazdan alacağım v bunu klaye formatında usb den göndereceğim. yanii önce bilgiyi koyup porta, sonra kesmeyi çalıştırarak bu bilgiyi usbeden göndereceğim.
Başlık: USB Cihaz
Gönderen: wsxwsx - 28 Kasım 2008, 23:08:08
Diyelim 2 tane pic kullandın. piclerden biri klavye gibi olsun. bu, bazı bilgileri bilgisayara gönderiyor.

Bilgisayar bu cihaza değilde diğer usbden bağlı öbiür pice birşeyler gönderiyor. sonra picler kendi aralarında haberleşiyorlar ve bir iş yapılacak. o iş nedir? gene bilgisayara bilgi mi gönderilecek? yok bilgisayardan bilgi gelecekse Klavye gibi olmayan öbür pice gelecek diyelim.

O pic ne şekilde görünecek. Bilgisayar bunu ne zannedecek ki bilgi gönderecek? USB bellek olmaz. HID sınıfı olacak . Her durumda bilgisayarın bir pice birşeyler gönderebilmesi gerek. Ama bu senin bilgisayarda öyle bir durum yok sanırım.

Ya da şöyle sorayım bu özel bilgisayar,  ne tür cihaz cihazalara bilgi gönderebilir. Böyle bir tür var mı? (HID sınıfı cihazlara gönderir diyeceksen, bunun alt sınıfı nedir?)
Başlık: USB Cihaz
Gönderen: ground - 28 Kasım 2008, 23:10:34
Alıntı yapılan: "muhittin_kaplan"neden kesme anında göndermeye çalışıyorum ?
çümki projede 1bytlık bir bilgiyi parelel olarak başka bir cihazdan alacağım v bunu klaye formatında usb den göndereceğim. yanii önce bilgiyi koyup porta, sonra kesmeyi çalıştırarak bu bilgiyi usbeden göndereceğim.

yanlış anlama sadece kesme ile göndermenin gerekliliğini sorguluyorum.

paralel olarak bilgiyi alıyorsun.. herhangi bir portuna bağladın girişleri..
döngü hızına göre bu bilgi refresh ediyor kendini.

şimdi..

1.bu bilgi hızlı gitmesi içinmi kesme ile gönderilmek isteniyor? herhangi bir olaya bağlı olarakmı gitmesi isteniyor.?

2.bu olay atıyorum rb0 kesme ise (inen ya da çıkan) olay anları ne kadar anlık durumlarda tekrarlıyor.?

klavye gibi uygulamalarda tuşlara basıp bırakma süresi ana döngünüzde bu usb bufferlarını istediğiniz hızda güncellemenize yetmeyecekmi?

kesme ile tuşa basıldığını fark ettiğiniz anda bunu herhangi bir registere yazıp bu registerdeki bilgiyi ana döngünüzde işleyip göndermek size yetmiyecekmi acaba?
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 29 Kasım 2008, 13:27:06
(http://img88.imageshack.us/img88/3480/adsz1vu3.jpg)
yapmak istediğim bu.
usb için yazdığım Hıd programından belli olmayan aralıklarda bigiler gelmekte bu bilgileri ben Pic1 in portuna aktarabiliyorum. bunu aktarıp diğer pic e "bilgiyi porta koydum" demek için kesme kullanmayı düşünüyorum. diğer pic bu bilgiyi alıp usb klavye modunda pc ye gönderecek. sorunda tam burada başlıyor. ya kesme ya usb rutinleri çalışmıyor. çünki usb den klavye gibi belli dataları gönderiyorum. kesme işleminide yaptım yanlız ikisinii aynı anda kullandığımda..

       Device 18F2550
       XTAL=20
       
'-------USB Tanımlamalar---------------------------------------      
       USB_DESCRIPTOR = "KBDDESC.Inc"
       ALL_DIGITAL = TRUE
' USB buffer...
       Symbol USBBufferSizeMax = 8
       Symbol USBBufferSizeTX  = 8
       Symbol USBBufferSizeRX  = 8
       Dim    USBBuffer[USBBufferSizeMax] As Byte

' some useful flags...
       Dim PP0 As Byte SYSTEM        ' USBPOLL status return
       Symbol CARRY_FLAG = STATUS.0  ' high if microcontroller does not have control over the buffer
       Symbol ATTACHED_STATE = 6     ' is USB attached
       Symbol TRNIF = UIR.3        ' low if USB Busy
       Dim POSITION As Word
       
'-------Genel Tanımlamalar---------------------------------------
       TRISC=0
       PORTC=0
       TRISB=%00000001
       PORTB=0
       ALL_DIGITAL true
'-------TMR0 int Tanımlamaları-----------------------------------
       INTCON = %10010000  ' Enable rb0 interrupts
       On Interrupt GoTo Kesme

'-------Ana Program----------------------------------------------
ProgramStart:
       GoSub AttachToUSB

anaProgram:
       USBPoll
       GoTo anaProgram
               
ProgramLoop:
           USBPoll
           If POSITION > 9 Then
              POSITION=0
           Else
               POSITION = POSITION + 1
           EndIf
           GoSub Choose
           GoSub DoUSBOut
           Return
       
Choose:
       Select POSITION
           Case 0
               Str USBBuffer = 0,0,$27,0,0,0,0,0   'Key 0
               
           Case 1
               Str USBBuffer = 0,0,$1e,0,0,0,0,0   'Key 1
           Case 2
               Str USBBuffer = 0,0,$1f,0,0,0,0,0   'Key 2
           Case 3
               Str USBBuffer = 0,0,$20,0,0,0,0,0   'Key 3
           Case 4
               Str USBBuffer = 0,0,$21,0,0,0,0,0   'Key 4
           Case 5
               Str USBBuffer = 0,0,$22,0,0,0,0,0   'Key 5
           Case 6
               Str USBBuffer = 0,0,$23,0,0,0,0,0   'Key 6
           Case 7
               Str USBBuffer = 0,0,$24,0,0,0,0,0   'Key 7
           Case 8
               Str USBBuffer = 0,0,$25,0,0,0,0,0   'Key 8
           Case 9
               Str USBBuffer = 0,0,$26,0,0,0,0,0   'Key 9
       EndSelect
       Return
       
DoUSBOut:
      Repeat                        
           USBPoll      
      Until PP0 = ATTACHED_STATE
      USBOut  0, USBBuffer, USBBufferSizeTX, DoUSBOut
      Return
     
AttachToUSB:
      Repeat                        
         USBPoll      
      Until PP0 = ATTACHED_STATE
      Return
       
'-------KESME Alt Programı---------------------------------------
       Disable
Kesme:
       GoSub ProgramLoop
       Resume
       Enable
       End
Başlık: USB Cihaz
Gönderen: wsxwsx - 29 Kasım 2008, 14:03:34
Bu özel sistemde, HID cihaza bilgisyarın veri gönderebilme ihtimali hiç yok gibi.

Öncelikle bunu garantilediğiniz takdirde diğer kısımların bir anlamı olabilir.

HID program , HID cihaza veri göndersin. Sonra isterse kapansın. HID cihaz bu veriyi alabiliyor mu? Aldıysa bildirsin. ( mesla bir led yakarak  )

1 bayt bile gönderebildiyseniz, sistemin geri kalan kısımlarına ilerleyebilirsiniz.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 29 Kasım 2008, 14:15:56
evet gönderebiliyorum istediğim porta aktarabiliyorum şu an
Başlık: USB Cihaz
Gönderen: jaco33 - 29 Kasım 2008, 14:51:33
merhaba,
rica etsem;
kullandığınız, fuse'leride içinde olan hex dosyası varsa verebilir misiniz?
ne oldugu hiç önemli değil yeter ki çalışsın.  yalnız hex istiyorum zira benim donanımımda mı bir sorun var yoksa başka bir şey mi bir türlü anlıyamadım.
(18f4550 USB).
Başlık: USB Cihaz
Gönderen: jaco33 - 29 Kasım 2008, 14:59:04
bu easyhid'i de kuramıyorum pc'ye bir türlü :?:
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 29 Kasım 2008, 15:18:17
fuse ları programlayıcıda ayarlıyorum hiç kod a gömmedim.
ama problem nedir belki yardım edebilirim.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 29 Kasım 2008, 15:23:48
easyhid protonla beraber kurulu geliyor..
Başlık: USB Cihaz
Gönderen: jaco33 - 29 Kasım 2008, 15:33:44
yaptığınız herhangi bir hex dosyasını verebilir misiniz?
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 29 Kasım 2008, 15:48:14
rapid e yüklüyorum linki veririm birazdan
Başlık: USB Cihaz
Gönderen: jaco33 - 29 Kasım 2008, 15:52:20
çok teşekkür ederim.

ne diyim. alçak gerilim(220), yüksek gerilim
(34KV)'de bir sorununuz olursa büyük ihtimal yardımcı olabilirim sanırım.(belki zaten biliyorsunuzdur da içimden geldi yani.)
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 29 Kasım 2008, 15:54:06
lazım olursa high voltage probe isterim :)
Başlık: USB Cihaz
Gönderen: jaco33 - 29 Kasım 2008, 15:55:07
büyüğünden mi küçüğünden mi  :D
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 29 Kasım 2008, 16:27:22
Proton+ proteus (http://rapidshare.com/files/168553332/proton___proteus_setup.rar.htm)
Başlık: USB Cihaz
Gönderen: jaco33 - 30 Kasım 2008, 08:38:29
yine çalıştıramadım. bir led yak söndür yapayım dedim. o da olmadı.
programı yuklediğine dair o.k. veriyro ama boardda bir hareket yok.
16f628 de prog ve testte sorun olmuyor. kristali değiştirdim yine olmadı.
yeni bir prog.kartı alsam mı diye düşünüyorum.
Başlık: USB Cihaz
Gönderen: jaco33 - 02 Aralık 2008, 07:43:18
prog.kartı ve usb girişi(yaptıgım kartta)arızalıymış. şu anda tanıyor.
hem micro c ile hem de proton ile.

yardımlarınız için teşekkur ederim.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 04 Aralık 2008, 02:06:43
Pc ye Format Attım şimdi Proteus ta Hid Yüklediğimde Sürücü İstiyor. Deli Olacam :( Bir İlmi Mi Var ?
Başlık: USB Cihaz
Gönderen: jaco33 - 04 Aralık 2008, 06:54:10
mchid.dll dosyasını system32'ye attınız mı?
belki bundandır.

paylaşırsanız sevinirim.
Başlık: USB Cihaz
Gönderen: jaco33 - 04 Aralık 2008, 07:01:19
proteus ta 4550'yi göremedim. yerine hangi pic'i kullanmamiz gerek?
usb'yi çıkarmak için ne yazmamız lazım ve nereye?(pick devices'de göremedim)
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 04 Aralık 2008, 17:38:47
4550 yide 2550 yide kullanabiliyorum
Başlık: USB Cihaz
Gönderen: jaco33 - 04 Aralık 2008, 17:51:51
tebrik ederim.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 04 Aralık 2008, 18:06:40
:D
yok o manada değil
herikiside lib. de var demek isdim.
Başlık: USB Cihaz
Gönderen: jaco33 - 04 Aralık 2008, 18:12:27
verdiğiniz dosyada mı(Proton+ proteus)?

bir de diğer sorularıma yanıt verebilir misiniz?

(http://img367.imageshack.us/img367/8373/picst5.jpg)
Başlık: USB Cihaz
Gönderen: a.zorba - 04 Aralık 2008, 19:00:35
7,2 sp 6 yı yükle yukardaki lınk le gelen 7,1


http://www.hizliresim.com/2008/12/4/5581.bmp
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 05 Aralık 2008, 09:34:37
Alıntı Yapbir de diğer sorularıma yanıt verebilir misiniz?
sorular ?
Başlık: USB Cihaz
Gönderen: jaco33 - 05 Aralık 2008, 11:03:25
mchid.dll dosyasını attınız mı? eğer öyleyse sorun çözüldü mü?

az evvel proteus indirdim. 6 7,2. fakat program sessiz sedasız bir anda çıkıyor. normal mi? patch yaptım ve ok verdi.
Başlık: USB Cihaz
Gönderen: muhittin_kaplan - 05 Aralık 2008, 23:31:35
Proteus 7.2 SP 6  (http://rapidshare.com/files/170618355/Proteus_7.2_Sp6_Updated-Fixed_07-2008.rar.htm)