USB y PIC 18F2550 Desarrollo de proyectos en ASM

#82
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.
talvez al master de Meta le quedo claro pero seria muy interesante q nos enseñes como se hace ese string de identificación :D
un saludo master (y)
 
#83
En el manual voy a explicarlo todo , lo que pasa es que no he tenido tiempo para ponerme...la facultad me tiene atado de las manos...solo puedo brindar ayuda en el foro no he tenido tiempo para aportar nada. Espero entiendan.
 
#84
No se preocuope, cuando puedas poco a poco vas investigando.

Recuerdo ver un circuito sobre 8 salidas a relés y 8 entradas digitales sin LCD, solo indicaciones por Led con un 16F876 y un FTD para hacer conversión COM--USB en aquel entonces.

Tenía una EEPROM muy pequeña y era alguna de esta. Sólo contenía el nombre del dispositivo, si le quitas físicamente esa EEPROM, funcionaba igual el circuito, lo único que te aparece mensaje dispositivo desconocido y nada más.

Poco a poco vas investigando, ya llegará los resultados con tus pruebas.
 
#85
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.
Aunque para eso vas a necesitar un PIC con capacidad de Host
 
#88
oe la programacion donde esta ?¿
Todo el desarrollo de la programación quedó relegada para un estudio más profundo...ya que hay que estudiar todo el protocolo desde 0 para poder hacer un desarrollo conciso de lo que es el puerto USB. Debido a esto todo el desglose del tema USB con ASM ha quedado en stand by hasta que yo adquiera un conocimiento más profundo ...o ...hasta que otro pueda desarrollarlo por decirlo de alguna manera...más profesional y enfocado.
 
#89
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
 
#90
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
Es cuestión de que le cargues el firmware en el microcontrolador desde el proteus y listo...el simulador se encargará del resto. Igual si necesitas algo más detallado podrías buscar en internet como se configura...hay muchos tutoriales.
 
#94
amigo Moyano Jonathan por favor podrias sacar un tutorial sobre como manejar los glcd's con ASM ya que los lenguajes de nivel alto solo pueden hacer eso mas no el ASM:enfadado:
 
#95
Perdon ?
Pero si el C es sacado del ASM
Yo estoy trabajando ahorita en una GLCD 160x80 Touch, resistiva, con un PIC18F4550, primero voy a configurarlo para modo texto y despues le metere graficos, todo en ASM, se ve dificil pero no lo es tanto; cuando le avance mas si quieres te digo como le hise.
 
Bueno, como veo que el hilo va algo lento voy a aportar un Descriptor USB para que podáis ir estudiándolo,
y que posteriormente podríamos incluirlo en nuestros programas ASM:

Código:
;
;(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
 
Última edición por un moderador:

Temas similares

Arriba