Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Esto quiere decir que no se ha detectado al dispositivo. Cuando un dispositivo USB es conectado al host, el mismo lo enumera y muestra un string identificatorio que nos indica nos indica el fabricante, información del dispositivo,etc.
Lo que podés guardar en la EEPROM es el string de identificación y luego con una pequeña función leer la memoria cuando conectamos el dispositivo a la PC.
Moyano Jonathan la data que estas dando es muy pero muy valiosa para muchas de las personas que se interesan por manejar cosas por USB.
Actualmente estoy con la idea de desarrollar un circuito capas de extrer fotos de una webcam con PIC para utilizarla como camara de video sin tener que depender de una PC, y enviar la imagen a un TV o monitor.
Gracias a tu informacion voy a poder entender y comprender el funcionamiento del modulo USB que utiliza el PIC, y con el poder manejar la camara.
Si te intreza el proyecto podriamos desarrollarlo juntos y aprender del mismo.
Desde ya muchas gracias por tu aporte tan valioso para la comunidad.
oe la programacion donde esta ?¿
holas muchachos del foro les felicito por sus respuestas que hacen..
bueno mi pregunta es lo siguente
estoy realizando un proyectos con pic18f4550 puerto usb hasta por momentos ya lo hice el firmware en ccs , quiero simular con proteus y labview entonces no se como configurar o nose segun que lei un foro tenemos que configuarar el virtual usb, donde puedo conseguir o descargar una mano por favor muchachos graciasssssssss
Pues no se si hallan visto, aqui podemos sacarle jugo para programar USB en ASM, que contrario a lo que muchos dicen, conozco a personas que lo han hecho, incluso pueden hacer FFT y programar pic18/24 y DSPIC en ASM, lo dejo para que vean que onda.
http://pe.ece.olin.edu/ece/projects.html
No entiendo eso ????¡Si memoria y velocidad quieres ganar, en ensamblador has de programar!
No entiendo eso ????
Seguimos esperadote Jonathan.
Felicitaciones por el post.
Andres.
;
;(c) L. Serrano [URL="http://www.analogicsensors.com/"]www.analogicsensors.com[/URL]
;
;
;Incluir este archivo en el archivo ASM del programa que realicemos.
;
;Variables Globales que deben ser declaradas como externas, EXTERN,
; en el archivo ASM del programa que realicemos.
GLOBAL InicioDescriptor,Device,Configuration1
GLOBAL Report1,FinReport1,String0,String1,String2,String3
#define ID_FABRICANTE 0x04D8 ;Microchip 04D8
#define ID_PRODUCTO 0x000A ;Familia PIC18
#define FABRICANTE 'w','w','w','.','a','n','a','l','o','g','i','c','s','e','n','s','o','r','s','.','c','o','m'
#define PRODUCTO 'U','S','B',' ','1','8','F','2','5','5','0'
#define N_SERIE '0','0','0','1'
#define NUM_CONFIGURATIONS 1
#define NUM_INTERFACES 1
#define bcdUSB 0x0200 ; USB Version 2.0
#define bcdDevice 0x0100 ; Version de Nuestro Dispositivo
#define ReportCountIn 8 ; Reporte de Entrada 8 campos
#define ReportCountOut 3 ; Reporte de Salida 3 campos
#define bMaxPacketSize 8 ; Maximo tamaño del paquete EP0: 8, 16, 32, o 64
#define wMaxPacketSize 8 ; Maximo tamaño del paquete para el EP
#define bMaxPower 25 ; Consumo del dispositivo=2*bMaxPower=50mA
#define bInterval 10 ; Intervavalo muestreo 10ms
; tipos de descriptor standard
#define DEVICE 1
#define CONFIGURATION 2
#define STRING 3
#define INTERFACE 4
#define ENDPOINT 5
; tipo de descriptor de clase HID
#define HID 0x21
#define REPORT 0x22
#define PHYSICAL 0x23
; tipo reporte de clase HID
#define INPUT 0x01
#define OUTPUT 0x02
#define FEATURE 0x03
; offsets desde el inicio del registro de datos de configuracion
#define bmRequestType 0x00
#define bRequest 0x01
#define wValue 0x02
#define wValueHigh 0x03
#define wIndex 0x04
#define wIndexHigh 0x05
#define wLength 0x06
#define wLengthHigh 0x07
DescriptorDevice code
InicioDescriptor
Device
db 0x12, DEVICE ; bLength, bDescriptorType
dw bcdUSB ; bcdUSB (byte L), bcdUSB (byte H)
db 0x00, 0x00 ; bDeviceClass, bDeviceSubClass
db 0x00, bMaxPacketSize ; bDeviceProtocl, bMaxPacketSize
dw ID_FABRICANTE ; idVendor (byte L), idVendor (byte H)
dw ID_PRODUCTO ; idProduct (byte L), idProduct (byte H)
dw bcdDevice ; bcdDevice (byte L), bcdDevice (byte H)
db 0x01, 0x02 ; iManufacturer, iProduct
db 0x03, NUM_CONFIGURATIONS; iSerialNumber, bNumConfigurations
Configuration1
db 0x09, CONFIGURATION ; bLength, bDescriptorType
db 0x29, 0x00 ; wTotalLength (byte L), wTotalLength (byte H)
db NUM_INTERFACES, 0x01 ; bNumInterfaces, bConfigurationValue
db 0x00, 0xA0 ; iConfiguration (none), bmAttributes
db bMaxPower, 0x09 ; bMaxPower*2=consumo dispositivo en mA, bLength(inicio Interface1)
db INTERFACE, 0x00 ; bDescriptorType, bInterfaceNumber
db 0x00, 0x02 ; bAlternateSetting, bNumEndpoints (excluyendo EP0)
db 0x03, 0x00 ; bInterfaceClass (HID code), bInterfaceSubClass
db 0x00, 0x00 ; bInterfaceProtocol, iInterface (none)
HID1
db 0x09, HID ; bLength, bDescriptorType
db 0x01, 0x01 ; bcdHID (byte L), bcdHID (byte H)
db 0x00, 0x01 ; bCountryCode (none), bNumDescriptors
db REPORT,(FinReport1-Report1-1); bDescriptorType, wDescriptorLength (byte L)
db 0x00, 0x07; wDescriptorLength (byte H) ,bLength(inicio Endpoint1)
db ENDPOINT, 0x81 ; bDescriptorType, bEndpointAddress (EP1 IN)
db 0x03, low wMaxPacketSize; bmAttributes (Interrupt), wMaxPacketSize (byte L)
db high wMaxPacketSize, bInterval ; wMaxPacketSize (byte H), bInterval
Endpoint2
db 0x07, ENDPOINT ; bLength, bDescriptorType
db 0x01, 0x03 ; bEndpointAddress (EP1 OUT), bmAttributes (Interrupt)
dw wMaxPacketSize ; wMaxPacketSize (byte L), wMaxPacketSize (byte H)
db bInterval ; bInterval
Report1
db 0x06, 0xA0 ;0x06, 0xA0, 0xFF Usage Page (Vendor Defined),
db 0xFF, 0x09 ;0x09, 0x01 Usage ID (Vendor Defined)
db 0x01, 0xA1 ;0xA1, 0x01 Collection (Application)
db 0x01, 0x09 ;0x09, 0x03 Usage ID (Vendor Defined) ; El Reporte de Entrada
db 0x03, 0x15 ;0x15, 0x00 Logical Minimum (0)
db 0x00, 0x26 ;0x26, 0x00, 0xFF Logical Maximum (255)
db 0xFF, 0x00 ;
db 0x75, 0x08 ;0x75, 0x08 Report Size (8 bits),
db 0x95, ReportCountIn ;0x95, ReportCountIn Campos del Reporte(ReportCountIn campos de entrada),
db 0x81, 0x02 ;0x81, 0x02 Input (Data, Variable, Absolute),
db 0x09, 0x04 ;0x09, 0x04 Usage ID (Vendor Defined), ; El Reporte de Salida
db 0x15, 0x00 ;0x15, 0x00 Logical Minimum (0),
db 0x26, 0xFF ;0x26, 0x00, 0xFF Logical Maximum (255)
db 0x00, 0x75 ;0x75, 0x08 Report Size (8 bits)
db 0x08, 0x95 ;
db ReportCountOut, 0x91 ;0x95, ReportCountOut; Campos del Reporte (ReportCountOut campos de salida),
db 0x02, 0x09 ;0x91, 0x02 Output (Data, Variable, Absolute)
db 0x05, 0x15 ;0x09, 0x05 Usage ID (Vendor Defined) ; El Reporte de Caracteristicas
db 0x00, 0x26 ;0x15, 0x00 Logical Minimum (0)
db 0xFF, 0x00 ;0x26, 0x00, 0xFF Logical Maximum (255)
db 0x75, 0x08 ;0x75, 0x08 Report Size (8 bits),
db 0x95, 0x00 ;0x95, 0x00 Campos del Reporte de caracteristicas,
db 0xB1, 0x02 ;0xB1, 0x02 Feature (Data, Variable, Absolute),
db 0xC0 ;0xC0 End Collection
FinReport1
String0
db String1-String0, STRING ; bLength, bDescriptorType
; wLANGID[0] (byte L), wLANGID[0] (byte H)
db 0x0A, 0x0C ; Spanish
db 0x09, 0x04 ; US-English
String1
db String2-String1, STRING ; bLength, bDescriptorType
dw FABRICANTE
String2
db String3-String2, STRING ; bLength, bDescriptorType
dw PRODUCTO
String3
db FinDescriptor-String3, STRING ; bLength, bDescriptorType
dw N_SERIE
FinDescriptor
END