USB Kullanımı ... ?

Başlatan mustafa_cmbz, 03 Aralık 2014, 14:25:12

mustafa_cmbz

Usb programı neden hep :

Alıntı YapAttachToUSB:
Repeat                        
USBPoll      
Until PP0 = ATTACHED_STATE
Return

kısmında dönüp duruyor ?

Kabil ATICI

Öncelikle bilgisayarınız bir donanım takıldığını belirtiyor mu? Belirtmiyorsa, işlemcinin USB bacaklarına bağlı pull-up veya Pull-down dirençleri olması gerekir, bunların aktiflenmesi gerekir.
D- ile +5V arasına eklenen 1K5 direnç USB1.1 belirler
D+ ile +5V arasına eklenen 1K5 direnç USB 2.0 olmasını sağlar.
bunun gibi.
Bu bölüm tamamsa usb aygıt takıldığında bilgisayar kim olduğunu anlamak için iletişim kurmaya çalışır. kuramazsa bilinmeyen aygıt olarak tanımlar.

Bu noktaya gelebildiyseniz iş programlarda biter. Bilgisayar usb cihaz ile iletişim kurup gerekli haberleşmelerden sonra driver yüklemesini ister. Bundan sonrasını zaten biliyorsunuz.
ambar7

mustafa_cmbz

Hocam bahsettiğiniz dirençleri şemaya dökebilirmisiniz? İlk kez usb ile uğraşıyorum araştırdığım kadarı ile şuana kadar incelediğim şemalarda bu dirençlere hiç rastlamadım

Evet şaun kart üzerindeki pic usb kablosunu taktığımda üzerindeki ledler çıkış veriyor fakat pc de donanım olarak tanınmıyor hocam..

Kabil ATICI

O dirençler var fakat pic, gibi elemanlarda o dirençler internal (iç) eleman olarak var. Ancak FT232BL gibi entegrelerle uğraşırsanız dışarıdan takmanız gerekir. Aynı şekilde o dirençler FT232RL entegresinde içine gömülmüş.
http://elektronikvelemciler.blogspot.com.tr/2009/12/ft232bl-usb-seri-donusturucu.html
buradaki R8 olarak tanımlanan dirençtir.

D- ile +5V arasına eklenen 1K5 direnç USB1.1 belirler
D+ ile +5V arasına eklenen 1K5 direnç USB 2.0 olmasını sağlar.
bu şekilde pull-up ile hiç bir alet bağlamasanız bile bilgisayar bir USB bağlantısı olduğunu bildirir.
ambar7

t2

#4
Programın aynı yerde dönüp durması, muhtemelen programın diğer kısmıyla ilgilidir.

Descriptor dosyada bir hata yapılmışsa, bilgisayar cihazı tanımayacak 
Until PP0 = ATTACHED_STATE

şartı sağlanmadığı için program sönüp duracaktır.
ATTACHED_STATE, bilgisayarın tanıma  işleminin tamamlanması olsa gerek.


mesaj birleştirme:: 03 Aralık 2014, 15:26:38

USB Pic kullanıyorsanız d+ d- uçlarına ayrıca direnc  bağlamaya gerek yok. bu dirençler  dahili.  proton örneklerde otomatik ayarlanmıştır.

mustafa_cmbz

'****************************************************************
'*  Name    : USBPROJECT.BAS                                    *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 03.12.2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

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


' Device Fuse configuration
CONFIG_START
'OSC 	= HS		; HS Oscillator
FCMEN	= OFF		; Failsafe Clock Monitor Disabled
IESO	= OFF		; Int/Ext Oscillator Switch Over Disabled
PWRT	= ON		; Power Up Timer Enabled
'BOREN	= OFF		; Brownout Reset Disabled
WDT		= OFF		; Watchdog Timer Disabled
WDTPS	= 1			; Watchdog Postscaler: 1:1
MCLRE	= ON		; MCLR Enabled
LPT1OSC	= OFF		; T1 Oscillator Disabled
PBADEN	= OFF		; Port B A/D Enable Port B<4:0> digital on RESET
'CCP2MX	= PORTC		; CCP2 Mux Muxed with RC1
STVREN	= ON		; Stack Overflow Reset Enabled
LVP		= OFF		; Low Voltage ICSP Disabled
XINST	= OFF		; XINST Disabled
DEBUG	= OFF		; Background Debugger Disabled
CP0		= OFF 		; Code Protection Block 0 Disabled
CP1		= OFF 		; Code Protection Block 1 Disabled
CP2		= OFF 		; Code Protection Block 2 Disabled
CP3		= OFF 		; Code Protection Block 3 Disabled
CPB		= OFF 		; Boot Block Code Protection Disabled
CPD		= OFF 		; Data EEPROM Code Protection Disabled
WRT0	= OFF 		; Write Protection Block 0 Disabled
WRT1	= OFF 		; Write Protection Block 1Disabled
WRT2	= OFF 		; Write Protection Block 2 Disabled
WRT3	= OFF 		; Write Protection Block 3 Disabled
WRTB	= OFF 		; Boot Block Write Protection Disabled
WRTC	= OFF 		; Configuration Register Write Protection Disabled
WRTD	= OFF 		; Data EEPROM Write Protection Disabled
EBTR0	= OFF 		; Table Read Protection Block 0 Disabled
EBTR1	= OFF 		; Table Read Protection Block 1 Disabled
EBTR2	= OFF 		; Table Read Protection Block 2 Disabled
EBTR3	= OFF 		; Table Read Protection Block 3 Disabled
EBTRB	= OFF 		; Boot Block Table Read Protection Disabled
CONFIG_END


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



symbol LED_1 = PORTA.0
symbol LED_2 = PORTB.5

' 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
     
     
TRISC=%00000000
TRISB=0
PORTB=0
PORTC=%00000000

     
' ************************************************************
' * main program loop - remember, you must keep the USB      *
' * connection alive with a call to USBPoll, USBIn or USBOut *
' * every couple of milliseconds or so                       *
' ************************************************************

HIGH LED_1

GoSub AttachToUSB

ProgramLoop:
 
HIGH LED_2

   GoSub DoUSBIn
   GoSub DoUSBOut
   GoTo ProgramLoop
  
' ************************************************************
' * receive data from the USB bus                            *
' ************************************************************
DoUSBIn:
   USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
   
   Return
   
' ************************************************************
' * transmit data                                            *
' ************************************************************
DoUSBOut:   
   USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
   Return

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



kodun tamamı yukarıdaki gibi.Gündüz kodun tamamını atıcaksın code tag ta sıkıntı vardı sanırım.Şimdi paylaşayım istedim.

Usb ile ilgili bu durumu nasıl aşarız ?

Visual basic vs. tarafını hiç bi şekilde başlangıç yapmadım sadece benimde merak ettiğim donanım olarak pc ye bağlantı yaptığımda donanım olarak tanıyacakmı tanımayacakmı onu merak ediyordum denemelerim sonucunda hiç bir şekilde donanım değişikliği olmadığını gördüm.


t2

#6
Çalışan örnek projeyi adım adım değiştirerek ilerleyebilirsiniz. Her defasında kopyasını alın.

Kod başka include dosyalara da bağımlıdır. Descriptor vs. Bunlarda ufak hata olsa çalışmaz. En iyisi calisan örnekle başlamak.

Belki de kristal farklı kullanıldı VUsb ucu mu ne var. oraya 470nF bağlanacak. Bu ihmal edilmiş olabilir mi?

MCansız

mustafa hocam bu kodları siz oluşturduysanız (esayusb hid wizard ile)  oluşturulan kod direk işlemciye yüklenir ve usb bağlantısı yapıldığındaq hid aygıt olarak direk tanınır (aygıt ismi product name bölümündeki isimdir) eger usb tanınamadı hatası alıyor iseniz vdd ve vss arasına 100nf koyun

mustafa_cmbz

' select MCU and clock speed                                                                                                                                                                                                                                   
Device = 18F4550
Xtal = 48	

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

Symbol LED_1 = PORTA.0
Symbol LED_2 = PORTB.5



' 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
 High LED_1     
' ************************************************************
' * main program loop - remember, you must keep the USB      *
' * connection alive with a call to USBPoll, USBIn or USBOut *
' * every couple of milliseconds or so                       *
' ************************************************************
GoSub AttachToUSB
ProgramLoop:
High LED_2
   GoSub DoUSBIn
   GoSub DoUSBOut
   GoTo ProgramLoop
  
' ************************************************************
' * receive data from the USB bus                            *
' ************************************************************
DoUSBIn:
   USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
   Return
   
' ************************************************************
' * transmit data                                            *
' ************************************************************
DoUSBOut:   
   USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
   Return

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


Hocam kodu bu şekilde isis'in usb driverlerini yükledikten sonra simulasyonda denediğimde isiste usb soketi taktığım gibi pc donanım olarak buluyor.

Fakat realde pice bu kodu yükleyip taktığımda bir kıpırtı yok.Donanım olarak tanınmadı bile demiyor.

VUSB ucuna 220nf bağladım hocam illa 470nf mı olması gerekiyor acaba ?


t2

470nf şart değil. 100nf bile oluyor. belki pic bozuktur.

Kabil ATICI

Sanırım donanım bağlantılarının doğru olduğunu kabul ederek.
ambar7

t2

D+ D- uçları proteusta tersmiş. Gerçek devrede bunların yeri değişmesi gerekiyordu.
belki sorun budur

MCansız

Alıntı yapılan: t2 - 04 Aralık 2014, 15:06:14
D+ D- uçları proteusta tersmiş. Gerçek devrede bunların yeri değişmesi gerekiyordu.
belki sorun budur

bu ilk başlarda benimde başıma gelmişti proteusta d- d+ ya d+ d- bağlamışım simülasyonda çalışıyordu ama gerçekte çalışmamıştı düzeltince çalıştı

mustafa_cmbz

vallahi hocam soketten değil direk usb kablo kesip direkt lehimledim gene tık yok.Şuan işteyim bakalım eve gidince devam edicem.Bu tarz birşeyi daha önce çalıştıran oldumu acaba ? boşuna mı uğraşıyorum nette bir çok uyuglama var ama neden hiç biri çalışmıyor.?