TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Trust en 09 de Agosto de 2008, 16:06:00

Título: Codigo 18f2550 y usb con Mikrobasic
Publicado por: Trust en 09 de Agosto de 2008, 16:06:00
Hola, despues de conseguir hacer funcionar mi 18F2550 gracias a navaismo, me he decidido a conectar mi pic al pc mediante usb. He estado horas buscando en este foro ,en el foro de Mikroe (que es en ingles) y en algun sitio mas y he conseguido recopilar informacion muy interesante como puede ser un programa que sirve para controlar 8 servos por usb.

El problema esta en que los codigos que he visto son complicados y no los consigo entender. La conexion pic-pc por RS232 es bastante facil porque con un minimo de lineas se consigue la conexion. Pero por usb la cosa cambia muchisimo.

Lo que necesito (y tambien lo que necesita cualquier persona que este en mi lugar) es un codigo que sirva unicamente para conseguir encender un led. Seria algo como enviar algo sencillo por VB6 y recibirlo en el pic con un programa hecho en MKB.

Lo del programa en VB6 creo que lo puedo conseguir porque hay muchos sitios donde se habla de esto, pero en MKb los ejemplos que he visto son complicados y no se que parte extraer para hacer un programa sencillito.

Si me podeis orientar os lo agradecere un monton.

Saludos.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: navaismo en 12 de Agosto de 2008, 20:31:51
Hola yo intentaria primero entender el ejemplo de la ayuda de MKB que es un poco mas sencillo, lo que si es que el HID de MKB trabaja con interrupciones por lo que tendras que estudiarlo mas a fondo.

Por ello prefiero la conexion con el EasyHID de Proton y PBP
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: Trust en 13 de Agosto de 2008, 16:23:20
Hola navaismo, muchas gracias.

Ahora estoy probando el ejemplo USB_HID_test, que hay en la carpeta Examples\EasyPIC5\Extra Examples\USB HID\P18F4550 y veo que es un programa bastante sencillo y se puede entender. El proton hace tiempo que no lo uso.

Lo que me falta es saber la configuracion del oscilador  para el Winpic, he visto la pagina Conceptos y explicaciones (http://www.garcia-cuervo.com/picmania.garcia-cuervo.net/Conceptos.php#USB4Mhz), que lo explica muy bien para un cristal de 12 MHZ y para un cristal de 20 MHZ pero para un cristal de 4 MHZ que es el que yo uso no lo acabo de entender como configurarlo en el Winpic.

He probado varias configuraciones en el Winpic pero no me funciona, cuando conecto el pic por usb al pc, me sale un mensaje diciendome No se reconoce el dispositivo USB.

Saludos.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: navaismo en 13 de Agosto de 2008, 17:09:18
Pues segun la magnifica explicacion de REDPIC solo se divide cuando el cristal es menor a 48MHZ y para que de la salida a 4MHZ  tienes que divir el cristal de ahi que si usas uno de 20MHZ tengas que dividir en 5 (20/5=4) y corresponde a PLLDIV=100 entonces como tu usas un cristal de 4MHZ no necesitas dividirlo ya que te da la frecuencia que necesita el 96MHZPLL por lo que PLLDIV=000 osea dividirias por 1.

Y en el winpic deberas usar XT oscillator, PLL enabled, xt used by USB y en la parte de la division:
NO divide- direct 4mhz input. Y por ultimo 96MHZ PLL divide by 2

Otra cosa es que uses una placa y un capacitor en VUSB minimo de 47uF a 25V. Si lo haces en el proto puede haber muchos falsos
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: Trust en 14 de Agosto de 2008, 05:05:59
En el protoboard no me funcionaba, lo he montado en una placa de topos y funciona bien, lo conecto y me lo reconoce. He puesto dos condensadores de 100nF en paralelo para Vusb.

Ahora voy a probar a hacer programillas como por ejemplo encender/apagar led por usb y mas adelante controlar servos y mas cosas.

Muchas gracias.

Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: jorgeneo560 en 05 de Septiembre de 2008, 00:18:50
hola, yo tmb estoy intentando hacer cosas con el usb, he visto pages donde dan ejp en vb6 mediante la dll de microchip, no encuentro un tuto concreto sin que utilice el easyhid que es comercial, si quieres trust nos pongamos en contacto y experimentemos hasta que tengamos algo funcional y hagamos el tuto, si te convense mandame un mensaje privado con tu correo y nos ponemos en contacto :-)
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: jansuini en 05 de Septiembre de 2008, 13:08:48
Gente:
Yo tambien estoy haciendo algunos ensayos ,pero realmente lo que me interesa es la parte de la PC ,aunque de manera mas "universal" ,me interesaria que la PC me vea el micro de manera similar a un conversor USB-232 ,cose de que los datos que envio desde el pic ,los pueda visualizar en un hiperterminal .Alguien ha hecho algo al respecto?
Saludos
jorge
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: navaismo en 05 de Septiembre de 2008, 13:47:08
Yo no he trbajso sin el easyHID pero REDPIC tiene en su pagina algo con CDC o algo asi no se si eso te sirva.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: jorgeneo560 en 13 de Septiembre de 2008, 22:54:23
hola, yo tambien estoy intentando tratar de dominar el puerto usb con el 18f4550, bueno baje el ejemplo de eegeek.net, me funciona, tengo un programa en vb 6 que trabaja con el ejemplo de prender los 2 leds, pero mi problema es como carajo hago el hex para el pic en mirko basic, en google no hay nda, llevo meses buscando y todo es igual, nda funciona pero nda!!! y los ejemplos que bienen en mikrobasic son con esa plaqueta easypic 5 que no la tengo :(.
Alguien me puede ayudar?
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: navaismo en 17 de Septiembre de 2008, 21:45:31
La easyPIC es una tarjeta universal, genera tu propio hardware apartir de la ayuda, tal com TRUST lo hizo, lee paso a paso la ayuda y su ejemplo, para que le puedas entender.

Sinceramente para USB uso Proton, pero si aun deseas usar MKB puedes comentarnos tus avances aqui y vemos entre todos como avanzar.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: navaismo en 24 de Septiembre de 2008, 18:03:58
Hola por si les interesa aun les dejo este programilla para el 18F2550 y MKB. El cual enciende o apaga todo el PORTB del PIC usando el USB como HID.

Despues de mas de 17 intentos y leer y leer la ayuda y los ejemplos la clave esta en el USBdsc.pbas y como este configurado el PLL del 18F2550.

Espero les sea de utilidad.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 14 de Febrero de 2009, 04:27:39
Hola a todos!

lo que pasa es que estoy cacharreando con esto del puerto usb pero la verdad soy muy nuevo con los micros de la serie 18f.. y hasta el momento no he entendido muy bien como funciona el usb (pues no es k no lo entienda como funciona el usb, lo que con tantos fuses que tienen estos micros para configurar no estoy seguro como debo hacerlo)

actualmente estoy trabajando en mikrobasic 7.0.0.2... he logrado generar bien el archivo con los descriptores delos id pero lamentablemente no me funciona ningun programa que hago nisiquiera el programa de ejemplo que esta en la auyda de mikrobasic me funciona... pense que tal vez se debia a que no tenia instalados los puertos virtuales usb del proteus pero ps ya los intsale... lo ke me desmoraliza es que si miro en los ejemplos del proteus todos funcionan... y hay uno que hasta hace mover el mouse de mi pc en circulos y todo....

sera que alguien me puede hechar una mano si no es mucho pedir... :(
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ASTROCAR en 14 de Febrero de 2009, 11:09:48
Oye he estado mirando los post de usb  con pic aca en el area de basic y lo que ami respecta no hay nada claro y bien explicado lo mejor seria entre todos organizar ideas y elaborar un buen tutorial para eso del usb con pic de la serie pic18f4550 o pic18f2550.
Ahora se habla de varias maneraras de usar el pic via usb ya sea por interface humara o por driver con dll que suministra microchip y en el cual uno puede personalizar los driver con icono y nombre propio cosa que me parece muy original. Pero en si buena documentacion y clara sobre el tema no he logrado encontra nose los moticvos pero ya es hora de hacer las cosas sin ningun tipo de intension sino del aprendizaje en comun y esto no lo digo con fines de ofender a nadie ni quiero que se mal interprete tampoco quiero que otro trabaje por nosotros queremos es aprender de una manera entendible y practica se que las cosas en ese aspecto del usb no es facil pero se que tampoco es cosa de extraterrestre asi que se puede endenter y manos a la obra.

Lo otro seria que primero definamos un compilador que creo el porque no se explica la cosa bienm porque unos trabajan en pronton otros en mikrobasic y asi varios lenguaje por lo cual se hace dificil de explicar y de que se entienda haa digame si hablamos del caso de la Pc se  usa delphi, VB6, C++ y por mas que queramos no se defini bien la cosa.

Yo en lo personal trabajo en proton y estoy en un proceso de aprendizaje en CCs pero como aca es basic  usare proton para el pic en el usb y en la parte de la pc he usado VB6 pero en estos momentos estoy desarrollando una aplicacion en delphi asi que tengo nociones de delphi y la llevo en la practiva en conclusion personal usare PROTON para el pic y DELPHI para la pc.

Saludos y si unimos y definimos puntos comunes podremos avanzar.
Atten.
Alexander Santana.
Barcelona-Venezuela.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 14 de Febrero de 2009, 20:46:39
Me gusta mucho tu idea...

aunque yo trabajo en mikrobasic... por otra parte te cuento k la parte del pc la estoy realizando con visual basic 2005, pk afortunadamente encontre unas librerias muy buenas para trabajar el usb con esta version del lenguaje.

Por ahora yo solo tengo claro dos cosas... numero uno es k en mikrobasic se tiene intregada la herramienta para generar el archivo con los drescriptores y para verificar que si funcione despues de terminado el proyecto, lo otro es que podriamos simular todo con el proteus instalando los virtual usb, de hecho en los ejemplos del proteus hay como 4 ejemplos y todos muy buenos.

Me apunto para crear el tuto... no se mucho pero me gustaria hacer parte de esto, por mi no tengo problemas de trabajar en vb6.

Espero podamos llegar a buen termino todo esto y manos a la obra
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: mariano_pic en 14 de Febrero de 2009, 21:04:46

  Pero si ya esta todo listo miren los link:
  http://www.todopic.com.ar/foros/index.php?topic=2260.0
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ASTROCAR en 14 de Febrero de 2009, 22:34:28

  Pero si ya esta todo listo miren los link:
  http://www.todopic.com.ar/foros/index.php?topic=2260.0
Jajaja si hermano pero como ya explique esta listo pero en otro lenguaje es decir en este tema es usando basic y no me rio en forma de burla sino es una manera de expresarme en un primer momento.

Esa informacion suminiostrada esta super y mil fecilitaciones al colega jim pero es orientada a ccs para pic y usando los dll de microchip; en fin este port es para aclarar el  usb de los pic pero en basic ya sea en proton o picbasic pero que sea en compiladores basado en basic de igual forma muchas gracias y es muy importante esa informacion.

Saludos y me despido un rato.
Atten.
Alexander Santana.
Barcelona-Venezuela
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 14 de Febrero de 2009, 22:55:42
si ese que nos propone el compa parece k solo es de C pero = tiene una informacion muy valiosa... ya pude con lo de los osciladores!!! por finnn hay vamos adelantando pk yo si estoy desde cero en estos 18f

 :-)

Pako:

Voy a intentar explicar un poco de dónde sale esto de los 4 Mhz para el USB 2.0.

Como nunca me canso de repetir: En los datasheet está T_O_D_O, absolutamente todo.  :mrgreen:

Aqui os pego un trozo de la imagen donde aparece la estructura de configuración de las opciones de los osciladores en los PIC's de la familia 18Fxx5x que son los que soportan el USB 2.0 (Documento 39632b.pdf de Microchip dedicado a los 18F2455-2550-4455-4550)

(http://picmania.garcia-cuervo.com/images/USB_OSC_Configuration.gif)

Es sistema es complejo debido a la inmensa versatilidad y posibilidades que ofrece.

Como podéis ver en OSC1 y OSC2 conectamos nuestro cristal: 4 Mhz, 8 Mhz, 12 Mhz, 16 Mhz, 20 Mhz, 24 Mhz, 40 Mhz  ó 48 Mhz, que son los cristales validos compatibles con lo que sigue a continuación.

Tened en cuenta que este cristal es el mismo para generar la frecuencia de 48 Mhz necesaria para el USB 2.0 y para el Clock del PIC, que pueden ser la misma o no, según la configuración que al final adoptemos, quiere esto decir que podemos tener el USB a 48 Mhz y nuestro programa en el PIC funcionando a 12 Mhz por ejemplo.

Fijaos en que justo tras el Smicht Trigger del Primary Oscillator salen tres lineas en paralelo que van a modulos distintos con distintas posibilidades.

La primera línea, la superior, va directamente al switch USBDIV que si está a cero indica que la frecuenci base original del cristal es directamente inyectada al USB, si pasa el switch FSEN que elige entre todo el sistema directo/PLL o el Primary Clock del CPU. Esta Opción de inyectar directamente la frecuencia del cristal es obviamente solo posible si usamos un Cristal de 48 Mhz que es lo que necesitamos para el USB.

Cualquier otro cristal debe ser tratado para conseguir los 48 Mhz necesarios.

El módulo USB Clock Source tiene a su entrada un PLL Prescaler, o sea un divisor de frecuencia. En cada una de sus salidas vamos a tener FOSC dividida por 1, 2, 3, 4, 5, 6, 10 ó 12. Y mediante PLLDIV que no es mas que un Multiplexor vamos a seleccionar la que deseamos usar.

Así si nuestro cristal es de 12 Mhz y en PLLDIV colocamos un 010 estaremos dividiendo por 3 el valor de FOSC con lo que tendremos 4 Mhz a la salida del MUX. Si por el contrario el cristal es de 20 Mhz y en PLLDIV colocamos un 100 entonces dividiremos por 5 FOSC con lo que tendremos también 4 Mhz a la salida del MUX.

Esta salida del MUX es lo que utilizamos para inyectársela al PLL de 96 Mhz. Si le metemos 4 Mhz él genera 96 Mhz. Es esta capacidad de pasar de 4 Mhz a 96 Mhz la que nos da la posibilidad de usar un montón de cristales distintos.

Pero 96 Mhz es el doble de lo que nos hace falta para el USB que son 48 Mhz. Asi que inmediatamente después tenemos que tener, y tenemos, un divisor por 2 que es el segundo camino por el que llegamos a USBDIV y en este caso le pondremos un 1 para usar la señal proviniente del PLL.

Fijaos que además de inyectar la señal oscilante en USBDIV tambien se conecta la señal del PLL a 96 Mhz en un Postscaler, otro divisor, en este caso por 2, 3, 4 ó 6 y cuyas señales van al CPUDIV. O sea que podemos generar una señal de reloj para nuestro PIC, no para el USB sino para la velocidad de ejecución de nuestro programa tomándola del PLL y que puede ser de 16 Mhz, 24 Mhz, 32 Mhz ó 48 Mhz.

Pero además la señal original llegaba en paralelo al Oscilator Postcaler, otro divisor más, que de forma directa, sin pasar por el módulo PLL nos divide la frecuencia original del cristal por 1, 2, 3 ó 4 y que también va a parar al CPUDIV pero desde otro origen. Con este módulo podemos obtener otra gama de frecuencias distinta para hacer correr el programa.

Cúal de ambos CPUDIV vamos a utilizar lo seleccionamos con el switch FOSC3:FOSC0 que es de donde sacaremos la definitiva frecuencia de ejecución de programas.

Por último tambien tenemos disponible una entrada proviniente del Primary Clock y que dividida por 4 llega también a FSEN y podemos utilizarla en lugar de la que le llega desde el canal directo/PLL

Como podeis ver es toda una maravilla cómo esta montado este tema de los osciladores, sobre todo por lo que respecta a las inmensas capacidades que tiene para hacer correr nuestro PIC a decenas de velocidades distintas siendo capaz, al mismo tiempo de tener disponibles los 48 Mhz imprescindibles para el USB 2.0.

Me descubro ante los ingenieros de Microchip y los aplaudo, se lo merecen.
 



 
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: mariano_pic en 14 de Febrero de 2009, 22:58:03
quieres con basic aca esta un link:
la pagina de lafebre:
  http://www.freewebs.com/glafebre/
  y aca esta http://www.freewebs.com/glafebre/articulos.htm
  usb facil:
  http://www.4shared.com/file/3053768/9d9b3c15/tp2550.html
  empiesa a trabajar, esta hecho los pbasic
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 15 de Febrero de 2009, 03:58:10
Hola a todos!

bueno lo que pasa es ps soy nuevo con esto de los micros de la serie 18f y queria comenzar con una comunicacion usb muy basica.

pues bien leyendo y leyendo tengo entendido que la frecuencia con la que trabajan estos micros para el usb 2.0 es de 48Mhz, que esta frecuencia es independiente de la frecuencia de trabajo del micro pero que aun asi su fuente es el oscilador externo que siempre se pone, solo que con un pll se amplifica hasta los 48Mhz.. y en fin...

y pues bien siempre he programado micros en el mikrobasic que ya va por la version 7.2 (7.3 en beta), en el mikrobasic hay un alibreria que me permite comunicarme con el pc via usb, tambien en l mikrobasic se incluye una aplicacion (muy parecida a lo que hace el EasyHID) que me genera un archivo con los descriptores para el microcontrolador. y asi las cosas uno pensaria que este tema esta en bandeja de plata.. listo para usarlo y ya...

pues bien... a mi no me ha kerido dar resultado el dichoso ejemplo que se plantea en este lenguaje... el ejemplo lleva un micro 18f4550 trabajando con un crytal a 8Mhz y ya... es asi de basico...

el codigo es el siguiente

(archivo USB_HID_test.pbas)

Código: [Seleccionar]
' * Project name:
'     HIDtest (Testing the USB HID connection)
' * Copyright:
'     (c) MikroElektronika, 2005 - 2008
' * Revision History:
'     20050502:
'       - initial release;
' * Description:
'     This example establishes connection with the HID terminal that is active
'     on the PC. Upon connection establishment, the HID Device Name will appear
'     in the respective window. After that software will wait for data and
'     it will return received data back.
' * Test configuration:
'     MCU:             PIC18F4550
'     Dev.Board:       EasyPIC5
'     Oscillator:      HS 8.000 MHz  (USB osc. is raised with PLL to 48.000MHz)
'     Ext. Modules:    -
'     SW:              mikroBasic v7.1
' * NOTES:
'     - Be VERY careful about the configuration flags for the 18F4550 - there's
'       so much place for mistake!
       
program USB_HID_test

include "USBdsc"

dim
 k, i, ch       as  byte
 userWR_buffer  as  byte[64]
 userRD_buffer  as  byte[64]

'******************************************************************************
' Main Interrupt Routine
'******************************************************************************
sub procedure interrupt
'** this is a way to call a procedure from interrupt
  HID_InterruptProc
end sub
'******************************************************************************


'******************************************************************************
' Initialization Routine
'******************************************************************************
sub procedure Init_Main
'--------------------------------------
' Disable interrupts
'--------------------------------------
INTCON = 0                             ' Disable GIE, PEIE, TMR0IE,INT0IE,RBIE
INTCON2 = 0xF5
INTCON3 = 0xC0
RCON.IPEN = 0                          ' Disable Priority Levels on interrupts
PIE1 = 0
PIE2 = 0
PIR1 = 0
PIR2 = 0

ADCON1 = ADCON1 or 0x0F                ' Configure all ports with analog function as digital
'--------------------------------------
' Ports Configuration
'--------------------------------------
TRISA = 0xFF
TRISB = 0xFF
TRISC = 0xFF
TRISD = 0
TRISE = 0x07

LATA = 0
LATB = 0
LATC = 0
LATD = 0
LATE = 0
end sub



'******************************************************************************
' Main Program Routine
'******************************************************************************

main:
  Init_Main()
 
  HID_Enable(@userRD_buffer, @userWR_buffer)
  Delay_mS(1000)
  Delay_mS(1000)

  while true
      k = HID_Read()
      i = 0
      while i < k
          ch = userRD_buffer[0]
          userWR_buffer[0] = ch
          HID_Write(@userWR_buffer, 1)
          inc(i)
      wend
  wend
  HID_Disable()
 
end.


el archivo del inlude (USBdsc.pbas) que es el que se genera con la aplicacion de mikrobasic para generar los descritores HId  contiene el siguiente codigo:

Código: [Seleccionar]
module USBdsc
include "HIDconstant"
' File Version 1.01
'
'******************************************************************************

'******************************************************************************
' The number of bytes in each report,
' calculated from Report Size and Report Count in the report descriptor
'******************************************************************************
 const HID_INPUT_REPORT_BYTES      = 1
 const HID_OUTPUT_REPORT_BYTES     = 1

 const HID_FEATURE_REPORT_BYTES    = 2
'******************************************************************************
' Byte constants
'******************************************************************************
 const NUM_ENDPOINTS               = 2
 const ConfigDescr_wTotalLength    = USB_CONFIG_DESCRIPTOR_LEN + USB_INTERF_DESCRIPTOR_LEN + USB_HID_DESCRIPTOR_LEN + (NUM_ENDPOINTS * USB_ENDP_DESCRIPTOR_LEN)
 const HID_ReportDesc_len          = 47

 const Low_HID_ReportDesc_len      = HID_ReportDesc_len
 const High_HID_ReportDesc_len     = HID_ReportDesc_len >> 8

 const Low_HID_PACKET_SIZE         = HID_PACKET_SIZE
 const High_HID_PACKET_SIZE        = HID_PACKET_SIZE >> 8



'******************************************************************************
' Descriptor Tables
'******************************************************************************
 const DescTables as byte[USB_DEVICE_DESCRIPTOR_ALL_LEN*2] = (

' Device Descriptor
    USB_DEVICE_DESCRIPTOR_LEN, 0,           ' bLength               - Length of Device descriptor (always 0x12)
    USB_DEVICE_DESCRIPTOR_TYPE, 0,          ' bDescriptorType       - 1 = DEVICE descriptor
    0x00, 0,                                ' bcdUSB                - USB revision 2.00 (low byte)
    0x02, 0,                                '                                           (high byte)
    0x00, 0,                                ' bDeviceClass          - Zero means each interface operates independently (class code in the interface descriptor)
    0x00, 0,                                ' bDeviceSubClass
    0x00, 0,                                ' bDeviceProtocol
    EP0_PACKET_SIZE, 0,                     ' bMaxPacketSize0       - maximum size of a data packet for a control transfer over EP0
    0x34, 0,                                ' idVendor              - Vendor  ID (low byte)
    0x12, 0,                                '                                    (high byte)
    0x01, 0,                                ' idProduct             - Product ID (low byte)
    0x00, 0,                                '                                    (high byte)
    0x01, 0,                                ' bcdDevice             - ( low byte)
    0x00, 0,                                '                         (high byte)
    0x01, 0,                                ' iManufacturer         - String1
    0x02, 0,                                ' iProduct              - String2
    0x00, 0,                                ' iSerialNumber         - ( None )
    0x01, 0,                                ' bNumConfigurations    - 1

' Configuration Descriptor
    USB_CONFIG_DESCRIPTOR_LEN, 0,           ' bLength               - Length of Configuration descriptor (always 0x09)
    USB_CONFIG_DESCRIPTOR_TYPE, 0,          ' bDescriptorType       - 2 = CONFIGURATION descriptor
    ConfigDescr_wTotalLength, 0,            ' wTotalLength          - Total length of this config. descriptor plus the interface and endpoint descriptors that are part of the configuration.
    0x00, 0,                                '                         ( high byte)
    0x01, 0,                                ' bNumInterfaces        - Number of interfaces
    0x01, 0,                                ' bConfigurationValue   - Configuration Value
    0x00, 0,                                ' iConfiguration        - String Index for this configuration ( None )
    0xA0, 0,                                ' bmAttributes          - attributes - "Bus powered" and "Remote wakeup"
    50, 0,                                  ' MaxPower              - bus-powered draws 50*2 mA from the bus.

' Interface Descriptor
    USB_INTERF_DESCRIPTOR_LEN, 0,           ' bLength               - Length of Interface descriptor (always 0x09)
    USB_INTERFACE_DESCRIPTOR_TYPE, 0,       ' bDescriptorType       - 4 = INTERFACE descriptor
    0x00, 0,                                ' bInterfaceNumber      - Number of interface, 0 based array
    0x00, 0,                                ' bAlternateSetting     - Alternate setting
    NUM_ENDPOINTS, 0,                       ' bNumEndPoints         - Number of endpoints used in this interface
    0x03, 0,                                ' bInterfaceClass       - assigned by the USB
    0x00, 0,                                ' bInterfaceSubClass    - Not A boot device
    0x00, 0,                                ' bInterfaceProtocol    - none
    0x00, 0,                                ' iInterface            - Index to string descriptor that describes this interface ( None )

' HID Descriptor
    USB_HID_DESCRIPTOR_LEN, 0,              ' bLength               - Length of HID descriptor (always 0x09)
    USB_HID_DESCRIPTOR_TYPE, 0,             ' bDescriptorType       - 0x21 = HID descriptor
    0x01, 0,                                ' HID class release number (1.01)
    0x01, 0,
    0x00, 0,                                ' Localized country code (none)
    0x01, 0,                                ' # of HID class descriptor to follow (1)
    0x22, 0,                                ' Report descriptor type (HID)
    Low_HID_ReportDesc_len, 0,
    High_HID_ReportDesc_len, 0,

' EP1_RX Descriptor
    USB_ENDP_DESCRIPTOR_LEN, 0,             ' bLength               - length of descriptor (always 0x07)
    USB_ENDPOINT_DESCRIPTOR_TYPE, 0,        ' bDescriptorType       - 5 = ENDPOINT descriptor
    0x81, 0,                                ' bEndpointAddress      - In, EP1
    USB_ENDPOINT_TYPE_INTERRUPT, 0,         ' bmAttributes          - Endpoint Type - Interrupt
    Low_HID_PACKET_SIZE, 0,                 ' wMaxPacketSize        - max packet size - low order byte
    High_HID_PACKET_SIZE, 0,                '                       - max packet size - high order byte
    1, 0,                                  ' bInterval             - polling interval (1 ms)

' EP1_TX Descriptor
    USB_ENDP_DESCRIPTOR_LEN, 0,             ' bLength               - length of descriptor (always 0x07)
    USB_ENDPOINT_DESCRIPTOR_TYPE, 0,        ' bDescriptorType       - 5 = ENDPOINT descriptor
    0x01, 0,                                ' bEndpointAddress      - Out, EP1
    USB_ENDPOINT_TYPE_INTERRUPT, 0,         ' bmAttributes          - Endpoint Type - Interrupt
    Low_HID_PACKET_SIZE, 0,                 ' wMaxPacketSize        - max packet size - low order byte
    High_HID_PACKET_SIZE, 0,                '                       - max packet size - high order byte
    1, 0,                                  ' bInterval             - polling interval (1 ms)

' HID_Report Descriptor
    0x06, 0,                                ' USAGE_PAGE (Vendor Defined)
    0xA0, 0,
    0xFF, 0,
    0x09, 0,                                ' USAGE ID (Vendor Usage 1)
    0x01, 0,
    0xA1, 0,                                ' COLLECTION (Application)
    0x01, 0,
'  The Input report
    0x09, 0,                                ' USAGE ID - Vendor defined
    0x03, 0,
    0x15, 0,                                '   LOGICAL_MINIMUM (0)
    0x00, 0,
    0x26, 0,                                '   LOGICAL_MAXIMUM (255)
    0x00, 0,
    0xFF, 0,
    0x75, 0,                                '   REPORT_SIZE (8)
    0x08, 0,
    0x95, 0,                                '   REPORT_COUNT (2)
    HID_INPUT_REPORT_BYTES, 0,
    0x81, 0,                                '   INPUT (Data,Var,Abs)
    0x02, 0,
'  The Output report
    0x09, 0,                                ' USAGE ID - Vendor defined
    0x04, 0,
    0x15, 0,                                '   LOGICAL_MINIMUM (0)
    0x00, 0,
    0x26, 0,                                '   LOGICAL_MAXIMUM (255)
    0x00, 0,
    0xFF, 0,
    0x75, 0,                                '   REPORT_SIZE (8)
    0x08, 0,
    0x95, 0,                                '   REPORT_COUNT (2)
    HID_OUTPUT_REPORT_BYTES, 0,
    0x91, 0,                                '   OUTPUT (Data,Var,Abs)
    0x02, 0,
'  The Feature report
    0x09, 0,                                ' USAGE ID - Vendor defined
    0x05, 0,
    0x15, 0,                                '   LOGICAL_MINIMUM (0)
    0x00, 0,
    0x26, 0,                                '   LOGICAL_MAXIMUM (255)
    0x00, 0,
    0xFF, 0,
    0x75, 0,                                '   REPORT_SIZE (8)
    0x08, 0,
    0x95, 0,                                '   REPORT_COUNT (2)
    HID_FEATURE_REPORT_BYTES, 0,
    0xB1, 0,                                '   FEATURE (Data,Var,Abs)
    0x02, 0,
'  End Collection
    0xC0, 0                                 ' END_COLLECTION
)
'******************************************************************************
 const LangIDDescr as byte[8] = (
    0x04, 0,
    USB_STRING_DESCRIPTOR_TYPE, 0,
    0x09, 0,                                ' LangID (0x0409) - Low
    0x04, 0                                 '                 - High
)
'******************************************************************************
 const ManufacturerDescr as byte[68] = (
    34, 0,
    USB_STRING_DESCRIPTOR_TYPE, 0,
    "m", 0, 0, 0,
    "i", 0, 0, 0,
    "k", 0, 0, 0,
    "r", 0, 0, 0,
    "o", 0, 0, 0,
    "E", 0, 0, 0,
    "l", 0, 0, 0,
    "e", 0, 0, 0,
    "k", 0, 0, 0,
    "t", 0, 0, 0,
    "r", 0, 0, 0,
    "o", 0, 0, 0,
    "n", 0, 0, 0,
    "i", 0, 0, 0,
    "k", 0, 0, 0,
    "a", 0, 0, 0
)
'******************************************************************************
 const ProductDescr as byte[48] = (
    24, 0,
    USB_STRING_DESCRIPTOR_TYPE, 0,
    "H", 0, 0, 0,
    "I", 0, 0, 0,
    "D", 0, 0, 0,
    " ", 0, 0, 0,
    "L", 0, 0, 0,
    "i", 0, 0, 0,
    "b", 0, 0, 0,
    "r", 0, 0, 0,
    "a", 0, 0, 0,
    "r", 0, 0, 0,
    "y", 0, 0, 0
)
'******************************************************************************
 const StrUnknownDescr as byte[4] = (
    2, 0,
    USB_STRING_DESCRIPTOR_TYPE, 0
)
'******************************************************************************







'******************************************************************************
' Initialization Function
'******************************************************************************
implements
sub procedure InitUSBdsc
dim dummy as byte  volatile register

dummy = NUM_ENDPOINTS
dummy = ConfigDescr_wTotalLength
dummy = HID_ReportDesc_len
dummy = Low_HID_ReportDesc_len
dummy = High_HID_ReportDesc_len
dummy = Low_HID_PACKET_SIZE
dummy = High_HID_PACKET_SIZE
dummy = HID_INPUT_REPORT_BYTES
dummy = HID_OUTPUT_REPORT_BYTES
dummy = HID_FEATURE_REPORT_BYTES
'******************************************************************************
' Byte constants
'******************************************************************************
dummy = NUM_ENDPOINTS
dummy = ConfigDescr_wTotalLength
dummy = HID_ReportDesc_len
dummy = Low_HID_ReportDesc_len
dummy = High_HID_ReportDesc_len
dummy = Low_HID_PACKET_SIZE
dummy = High_HID_PACKET_SIZE
dummy = @DescTables
dummy = @LangIDDescr
dummy = @ManufacturerDescr
dummy = @LangIDDescr
dummy = @ProductDescr
dummy = @StrUnknownDescr
end sub
end.


Y pues el circuito en el que estoy intentando simular es el siguiente:

(http://photos3.hi5.com/0078/979/506/zbRt8l979506-02.jpg)


y la verdad de todo esto no me funciona nada... el proteus ni se da por enterado cuando se simula la conexion de este micro al pc...

lo que me desmoraliza es que en los ejemplos del proteus hay varios que usan el usb y esos funcionan d mil maravillas... y ya estoy es como desesperado pk no doy con el error y llevo como 3 dias estankado en lo mismo... asi k ps si alguien pudiera hecharme una mano le estaria bastante agradecido.

ahh y ps no se uno nunca sabe si alguien desea los archivos aki los dejo para la descarga

http://rapidshare.com/files/198259931/P18F4550.rar.html (http://rapidshare.com/files/198259931/P18F4550.rar.html)
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ASTROCAR en 15 de Febrero de 2009, 07:53:17
Ok perfecto ya veo mas adelanto en el tema pero no soy quien para decir esto porque no soy nada organizado pero creo que el mejor avance dependera de una nueva organizacion y documentacion que tengamos a la hora de ir dandole color a este tema de usb. Lo primero para mi seria armar una placa entrenadora y que sea en comun para este post y asi todos hablemos en base a esa placa entrenadora yo propongo la del buen colega Giovanni Lafebre mejor conocido por su nick LordLafebre y dicha placa entrenadora ya el colega mariano_pic  coloco los link donde aparece todo  bien explicado de como hacerla con su diagrama y pcb listo para elabora, el nombre del entrenador es TP-2550 (placa de pruebas para USB) ojo esta placa en un principio esta bajada en el pic18f2550 pero ya quedaria de nuestra parte y yo lo tengo en mente luego usar el usb con pic18f4550 pero nada mejor para comenzar que la que propuso el TP-2550.

Bueno ya teniendo un entrenado para lo del usb lo demas seria documentarce y empezar a dar ejemplo de como funciona el usb con estos pic pero asi sin un buen entrenador es un poco dificil se que el colega ekud  ya esta en un proceso de simulacion con proteus y aun no le funciopna porque son muchas cosas las cuales tiene que ir dominando en este caso tambien tiene que ir dominando el proteus y tal ves su problema no sea si su codigo en el pic ni el el soft que creo en el pc sino el mal uso del proteus por eso digo y me inclino mejor por el entrenador y luego que se tenga mucho mas experiencia uno va experimentando a mas grande y puede hasta simular en proteus, todo esto es mi humilde opinion.

Saludos y paso a eleborar el entrenador propuesto en el link que postio mariano_pic y luego les comento y asi ya se le va dando un buen sentido al tutorial usb para pic basado en basic.
Atten.
Alexander Santana.
Barcelona-Venezuela.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ASTROCAR en 15 de Febrero de 2009, 08:04:45
Hola a todos!

el codigo es el siguiente

(archivo USB_HID_test.pbas)

Código: [Seleccionar]
' * Project name:
'     HIDtest (Testing the USB HID connection)
' * Copyright:
'     (c) MikroElektronika, 2005 - 2008
' * Revision History:
'     20050502:
'       - initial release;
' * Description:
'     This example establishes connection with the HID terminal that is active
'     on the PC. Upon connection establishment, the HID Device Name will appear
'     in the respective window. After that software will wait for data and
'     it will return received data back.
' * Test configuration:
'     MCU:             PIC18F4550
'     Dev.Board:       EasyPIC5
'     Oscillator:      HS 8.000 MHz  (USB osc. is raised with PLL to 48.000MHz)
'     Ext. Modules:    -
'     SW:              mikroBasic v7.1
' * NOTES:
'     - Be VERY careful about the configuration flags for the 18F4550 - there's
'       so much place for mistake!
       
program USB_HID_test

include "USBdsc"

dim
 k, i, ch       as  byte
 userWR_buffer  as  byte[64]
 userRD_buffer  as  byte[64]

'******************************************************************************
' Main Interrupt Routine
'******************************************************************************
sub procedure interrupt
'** this is a way to call a procedure from interrupt
  HID_InterruptProc
end sub
'******************************************************************************


'******************************************************************************
' Initialization Routine
'******************************************************************************
sub procedure Init_Main
'--------------------------------------
' Disable interrupts
'--------------------------------------
INTCON = 0                             ' Disable GIE, PEIE, TMR0IE,INT0IE,RBIE
INTCON2 = 0xF5
INTCON3 = 0xC0
RCON.IPEN = 0                          ' Disable Priority Levels on interrupts
PIE1 = 0
PIE2 = 0
PIR1 = 0
PIR2 = 0

ADCON1 = ADCON1 or 0x0F                ' Configure all ports with analog function as digital
'--------------------------------------
' Ports Configuration
'--------------------------------------
TRISA = 0xFF
TRISB = 0xFF
TRISC = 0xFF
TRISD = 0
TRISE = 0x07

LATA = 0
LATB = 0
LATC = 0
LATD = 0
LATE = 0
end sub



'******************************************************************************
' Main Program Routine
'******************************************************************************

main:
  Init_Main()
 
  HID_Enable(@userRD_buffer, @userWR_buffer)
  Delay_mS(1000)
  Delay_mS(1000)

  while true
      k = HID_Read()
      i = 0
      while i < k
          ch = userRD_buffer[0]
          userWR_buffer[0] = ch
          HID_Write(@userWR_buffer, 1)
          inc(i)
      wend
  wend
  HID_Disable()
 
end.


el archivo del inlude (USBdsc.pbas) que es el que se genera con la aplicacion de mikrobasic para generar los descritores HId  contiene el siguiente codigo:

Código: [Seleccionar]
module USBdsc
include "HIDconstant"
' File Version 1.01
'
'******************************************************************************

'******************************************************************************
' The number of bytes in each report,
' calculated from Report Size and Report Count in the report descriptor
'******************************************************************************
 const HID_INPUT_REPORT_BYTES      = 1
 const HID_OUTPUT_REPORT_BYTES     = 1

 const HID_FEATURE_REPORT_BYTES    = 2
'******************************************************************************
' Byte constants
'******************************************************************************
 const NUM_ENDPOINTS               = 2
 const ConfigDescr_wTotalLength    = USB_CONFIG_DESCRIPTOR_LEN + USB_INTERF_DESCRIPTOR_LEN + USB_HID_DESCRIPTOR_LEN + (NUM_ENDPOINTS * USB_ENDP_DESCRIPTOR_LEN)
 const HID_ReportDesc_len          = 47

 const Low_HID_ReportDesc_len      = HID_ReportDesc_len
 const High_HID_ReportDesc_len     = HID_ReportDesc_len >> 8

 const Low_HID_PACKET_SIZE         = HID_PACKET_SIZE
 const High_HID_PACKET_SIZE        = HID_PACKET_SIZE >> 8



'******************************************************************************
' Descriptor Tables
'******************************************************************************
 const DescTables as byte[USB_DEVICE_DESCRIPTOR_ALL_LEN*2] = (

' Device Descriptor
    USB_DEVICE_DESCRIPTOR_LEN, 0,           ' bLength               - Length of Device descriptor (always 0x12)
    USB_DEVICE_DESCRIPTOR_TYPE, 0,          ' bDescriptorType       - 1 = DEVICE descriptor
    0x00, 0,                                ' bcdUSB                - USB revision 2.00 (low byte)
    0x02, 0,                                '                                           (high byte)
    0x00, 0,                                ' bDeviceClass          - Zero means each interface operates independently (class code in the interface descriptor)
    0x00, 0,                                ' bDeviceSubClass
    0x00, 0,                                ' bDeviceProtocol
    EP0_PACKET_SIZE, 0,                     ' bMaxPacketSize0       - maximum size of a data packet for a control transfer over EP0
    0x34, 0,                                ' idVendor              - Vendor  ID (low byte)
    0x12, 0,                                '                                    (high byte)
    0x01, 0,                                ' idProduct             - Product ID (low byte)
    0x00, 0,                                '                                    (high byte)
    0x01, 0,                                ' bcdDevice             - ( low byte)
    0x00, 0,                                '                         (high byte)
    0x01, 0,                                ' iManufacturer         - String1
    0x02, 0,                                ' iProduct              - String2
    0x00, 0,                                ' iSerialNumber         - ( None )
    0x01, 0,                                ' bNumConfigurations    - 1

' Configuration Descriptor
    USB_CONFIG_DESCRIPTOR_LEN, 0,           ' bLength               - Length of Configuration descriptor (always 0x09)
    USB_CONFIG_DESCRIPTOR_TYPE, 0,          ' bDescriptorType       - 2 = CONFIGURATION descriptor
    ConfigDescr_wTotalLength, 0,            ' wTotalLength          - Total length of this config. descriptor plus the interface and endpoint descriptors that are part of the configuration.
    0x00, 0,                                '                         ( high byte)
    0x01, 0,                                ' bNumInterfaces        - Number of interfaces
    0x01, 0,                                ' bConfigurationValue   - Configuration Value
    0x00, 0,                                ' iConfiguration        - String Index for this configuration ( None )
    0xA0, 0,                                ' bmAttributes          - attributes - "Bus powered" and "Remote wakeup"
    50, 0,                                  ' MaxPower              - bus-powered draws 50*2 mA from the bus.

' Interface Descriptor
    USB_INTERF_DESCRIPTOR_LEN, 0,           ' bLength               - Length of Interface descriptor (always 0x09)
    USB_INTERFACE_DESCRIPTOR_TYPE, 0,       ' bDescriptorType       - 4 = INTERFACE descriptor
    0x00, 0,                                ' bInterfaceNumber      - Number of interface, 0 based array
    0x00, 0,                                ' bAlternateSetting     - Alternate setting
    NUM_ENDPOINTS, 0,                       ' bNumEndPoints         - Number of endpoints used in this interface
    0x03, 0,                                ' bInterfaceClass       - assigned by the USB
    0x00, 0,                                ' bInterfaceSubClass    - Not A boot device
    0x00, 0,                                ' bInterfaceProtocol    - none
    0x00, 0,                                ' iInterface            - Index to string descriptor that describes this interface ( None )

' HID Descriptor
    USB_HID_DESCRIPTOR_LEN, 0,              ' bLength               - Length of HID descriptor (always 0x09)
    USB_HID_DESCRIPTOR_TYPE, 0,             ' bDescriptorType       - 0x21 = HID descriptor
    0x01, 0,                                ' HID class release number (1.01)
    0x01, 0,
    0x00, 0,                                ' Localized country code (none)
    0x01, 0,                                ' # of HID class descriptor to follow (1)
    0x22, 0,                                ' Report descriptor type (HID)
    Low_HID_ReportDesc_len, 0,
    High_HID_ReportDesc_len, 0,

' EP1_RX Descriptor
    USB_ENDP_DESCRIPTOR_LEN, 0,             ' bLength               - length of descriptor (always 0x07)
    USB_ENDPOINT_DESCRIPTOR_TYPE, 0,        ' bDescriptorType       - 5 = ENDPOINT descriptor
    0x81, 0,                                ' bEndpointAddress      - In, EP1
    USB_ENDPOINT_TYPE_INTERRUPT, 0,         ' bmAttributes          - Endpoint Type - Interrupt
    Low_HID_PACKET_SIZE, 0,                 ' wMaxPacketSize        - max packet size - low order byte
    High_HID_PACKET_SIZE, 0,                '                       - max packet size - high order byte
    1, 0,                                  ' bInterval             - polling interval (1 ms)

' EP1_TX Descriptor
    USB_ENDP_DESCRIPTOR_LEN, 0,             ' bLength               - length of descriptor (always 0x07)
    USB_ENDPOINT_DESCRIPTOR_TYPE, 0,        ' bDescriptorType       - 5 = ENDPOINT descriptor
    0x01, 0,                                ' bEndpointAddress      - Out, EP1
    USB_ENDPOINT_TYPE_INTERRUPT, 0,         ' bmAttributes          - Endpoint Type - Interrupt
    Low_HID_PACKET_SIZE, 0,                 ' wMaxPacketSize        - max packet size - low order byte
    High_HID_PACKET_SIZE, 0,                '                       - max packet size - high order byte
    1, 0,                                  ' bInterval             - polling interval (1 ms)

' HID_Report Descriptor
    0x06, 0,                                ' USAGE_PAGE (Vendor Defined)
    0xA0, 0,
    0xFF, 0,
    0x09, 0,                                ' USAGE ID (Vendor Usage 1)
    0x01, 0,
    0xA1, 0,                                ' COLLECTION (Application)
    0x01, 0,
'  The Input report
    0x09, 0,                                ' USAGE ID - Vendor defined
    0x03, 0,
    0x15, 0,                                '   LOGICAL_MINIMUM (0)
    0x00, 0,
    0x26, 0,                                '   LOGICAL_MAXIMUM (255)
    0x00, 0,
    0xFF, 0,
    0x75, 0,                                '   REPORT_SIZE (8)
    0x08, 0,
    0x95, 0,                                '   REPORT_COUNT (2)
    HID_INPUT_REPORT_BYTES, 0,
    0x81, 0,                                '   INPUT (Data,Var,Abs)
    0x02, 0,
'  The Output report
    0x09, 0,                                ' USAGE ID - Vendor defined
    0x04, 0,
    0x15, 0,                                '   LOGICAL_MINIMUM (0)
    0x00, 0,
    0x26, 0,                                '   LOGICAL_MAXIMUM (255)
    0x00, 0,
    0xFF, 0,
    0x75, 0,                                '   REPORT_SIZE (8)
    0x08, 0,
    0x95, 0,                                '   REPORT_COUNT (2)
    HID_OUTPUT_REPORT_BYTES, 0,
    0x91, 0,                                '   OUTPUT (Data,Var,Abs)
    0x02, 0,
'  The Feature report
    0x09, 0,                                ' USAGE ID - Vendor defined
    0x05, 0,
    0x15, 0,                                '   LOGICAL_MINIMUM (0)
    0x00, 0,
    0x26, 0,                                '   LOGICAL_MAXIMUM (255)
    0x00, 0,
    0xFF, 0,
    0x75, 0,                                '   REPORT_SIZE (8)
    0x08, 0,
    0x95, 0,                                '   REPORT_COUNT (2)
    HID_FEATURE_REPORT_BYTES, 0,
    0xB1, 0,                                '   FEATURE (Data,Var,Abs)
    0x02, 0,
'  End Collection
    0xC0, 0                                 ' END_COLLECTION
)
'******************************************************************************
 const LangIDDescr as byte[8] = (
    0x04, 0,
    USB_STRING_DESCRIPTOR_TYPE, 0,
    0x09, 0,                                ' LangID (0x0409) - Low
    0x04, 0                                 '                 - High
)
'******************************************************************************
 const ManufacturerDescr as byte[68] = (
    34, 0,
    USB_STRING_DESCRIPTOR_TYPE, 0,
    "m", 0, 0, 0,
    "i", 0, 0, 0,
    "k", 0, 0, 0,
    "r", 0, 0, 0,
    "o", 0, 0, 0,
    "E", 0, 0, 0,
    "l", 0, 0, 0,
    "e", 0, 0, 0,
    "k", 0, 0, 0,
    "t", 0, 0, 0,
    "r", 0, 0, 0,
    "o", 0, 0, 0,
    "n", 0, 0, 0,
    "i", 0, 0, 0,
    "k", 0, 0, 0,
    "a", 0, 0, 0
)
'******************************************************************************
 const ProductDescr as byte[48] = (
    24, 0,
    USB_STRING_DESCRIPTOR_TYPE, 0,
    "H", 0, 0, 0,
    "I", 0, 0, 0,
    "D", 0, 0, 0,
    " ", 0, 0, 0,
    "L", 0, 0, 0,
    "i", 0, 0, 0,
    "b", 0, 0, 0,
    "r", 0, 0, 0,
    "a", 0, 0, 0,
    "r", 0, 0, 0,
    "y", 0, 0, 0
)
'******************************************************************************
 const StrUnknownDescr as byte[4] = (
    2, 0,
    USB_STRING_DESCRIPTOR_TYPE, 0
)
'******************************************************************************







'******************************************************************************
' Initialization Function
'******************************************************************************
implements
sub procedure InitUSBdsc
dim dummy as byte  volatile register

dummy = NUM_ENDPOINTS
dummy = ConfigDescr_wTotalLength
dummy = HID_ReportDesc_len
dummy = Low_HID_ReportDesc_len
dummy = High_HID_ReportDesc_len
dummy = Low_HID_PACKET_SIZE
dummy = High_HID_PACKET_SIZE
dummy = HID_INPUT_REPORT_BYTES
dummy = HID_OUTPUT_REPORT_BYTES
dummy = HID_FEATURE_REPORT_BYTES
'******************************************************************************
' Byte constants
'******************************************************************************
dummy = NUM_ENDPOINTS
dummy = ConfigDescr_wTotalLength
dummy = HID_ReportDesc_len
dummy = Low_HID_ReportDesc_len
dummy = High_HID_ReportDesc_len
dummy = Low_HID_PACKET_SIZE
dummy = High_HID_PACKET_SIZE
dummy = @DescTables
dummy = @LangIDDescr
dummy = @ManufacturerDescr
dummy = @LangIDDescr
dummy = @ProductDescr
dummy = @StrUnknownDescr
end sub
end.




y la verdad de todo esto no me funciona nada... el proteus ni se da por enterado cuando se simula la conexion de este micro al pc...




http://rapidshare.com/files/198259931/P18F4550.rar.html (http://rapidshare.com/files/198259931/P18F4550.rar.html)
Hola en lo personal eso es lo que veo mal que ya estas llegando directo al grano y muchos desconocemos eso de general codigos para el pic y el pc con el compilador no seria mejor irnos desde cero y asi todos entendemos mejor el asunto.

ejemplo como no estamos orientado ni  bien documentado nadie te ha dado una respuesta en concreto ve que tu mismo ya resolvistes lo del oscilador pero la idea es ir contruyendo las cosas por parte ojo con eso no quiero decir que te tu parte puedas ir mas adelantado pero mucho no estamos en tu nivel de adelanto.

La clave estaria en organizacion y documentacion y asi todos entenderemos el tema y asi no quedara uno solo  miembro que use basic que no pueda manejar usb, claro esta si lee este post jajajaja.

Saludos y dios no te la constancia para seguir en este tema del usb y concluirlo con un buen funcionamiento del usb y su tutorial los claro y explicativo para que cualquiera que lo lea pueda usar usb sin ningun problema y deje de ser un tema de temor ya que como lo dije antes usb para mi no es cosa imposible es creado por un ser huma igual y comun que nosotros solo que ya el tiene el conocimiento y por eso se le hiso posible cosa que nosotros estamos buscando el conocimiento del usb para pic.

Atten.
Alexander Santana.
Barcelona-Venezuela.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 15 de Febrero de 2009, 13:51:41
jeje bueno es que yo tampoco tengo muchas cosas claras... jeje pero ps pa eso estamos aki para aprender todos...

bueno siendo un poco mas especificos con este codigo que mostre intentare explicar algo haber si entre todos damos con la respuesta de por que no funciona.

La idea de este codigo es que el microcontrolador retorna al pc los mismos datos que el pc le envia al microcontrolador teniendo eso en mente comenzemos a deducir el codigo...

En la primera parte encontraremos lo siguiente:
Código: [Seleccionar]
program USB_HID_test

include "USBdsc"

dim
 k, i, ch       as  byte
 userWR_buffer  as  byte[64]
 userRD_buffer  as  byte[64]

En estas lineas lo que se le "dice" al micro es lo siguiente:

Ahora bien... veamos como generar el archivo con los descriptores HID necesarios usando el mikrobasic.

lo primero es abrir el mikrobasic.... (un pokito obvio no? jeje)

(http://img26.imageshack.us/img26/2930/mirkobasicabiertovx4.jpg)

Luego nos dirigimos al menu tools

(http://img172.imageshack.us/img172/8016/mikrobasictoolsno5.jpg)

Damos click en HID terminal... se nos abrira la siguiente ventana

(http://img25.imageshack.us/img25/6923/mikrobasichidterminalix0.jpg)

Fijemonos en que en cuanto abrimos esta ventana en la parte superior se nos presentan dos pestañas... una que dice "terminal" y la otra que dice descriptor

En la pestaña terminal, la utilizaremos para comprobar que nuestro circuito despues de armado o simulado funciona bien, por ahora nos centraremos mas en el uso de la pestaña "descriptor".asi pues si damos click en dicha pestaña veremos lo siguiente:

(http://img25.imageshack.us/img25/2696/mikrobasichidterminaldewt1.jpg)

modificando los parametros de esta ventana podremos obtener elarchivo descriptor que necesitemos, como para el ejemplo al que estoy haciendo alusion ya estaba creado el archivo pues por ahora no lo tocaremos, es solo para mostrar la herramienta como tal.

Bueno despues de ese "breve" parentesis sigamos analizando el codigo haber a que conlcusion llegamos...

Bueno despues de declarar las variables (y sigiendo el orden de los programas en mikrobasic) continuamos con los proeceimientos...

en este codigo se tienen dos procedimientos, uno de ellos es una interrupcion para mantener "viva" la comunicacion USB, el otro procedimiento solo es para configurar los puertos del microcontolador y todas las interrupciones.

el procedimiento para mantener viva la comunicacion usb seria el siguiente:

Código: [Seleccionar]
'******************************************************************************
' Main Interrupt Routine
'******************************************************************************
sub procedure interrupt
'** this is a way to call a procedure from interrupt
  HID_InterruptProc
end sub
'******************************************************************************

y el procedimiento en el cual se configuran los puertos y se deshabilitan las interrupciones que no son necesarias es el siguiente:

Código: [Seleccionar]

'******************************************************************************
' Initialization Routine
'******************************************************************************
sub procedure Init_Main
'--------------------------------------
' Disable interrupts
'--------------------------------------
INTCON = 0                             ' Disable GIE, PEIE, TMR0IE,INT0IE,RBIE
INTCON2 = 0xF5
INTCON3 = 0xC0
RCON.IPEN = 0                          ' Disable Priority Levels on interrupts
PIE1 = 0
PIE2 = 0
PIR1 = 0
PIR2 = 0

ADCON1 = ADCON1 or 0x0F                ' Configure all ports with analog function as digital
'--------------------------------------
' Ports Configuration
'--------------------------------------
TRISA = 0xFF
TRISB = 0xFF
TRISC = 0xFF
TRISD = 0
TRISE = 0x07

LATA = 0
LATB = 0
LATC = 0
LATD = 0
LATE = 0
end sub

Bueno ahora bien pasemos a analizar el codigo principal, el que hace la funcion de la comunicacion usb como tal.

el codigo que hace funcional nuestro ejemplo es el siguiente:
Código: [Seleccionar]
'******************************************************************************
' Main Program Routine
'******************************************************************************

main:
  Init_Main()
 
  HID_Enable(@userRD_buffer, @userWR_buffer)
  Delay_mS(1000)
  Delay_mS(1000)

  while true
      k = HID_Read()
      i = 0
      while i < k
          ch = userRD_buffer[0]
          userWR_buffer[0] = ch
          HID_Write(@userWR_buffer, 1)
          inc(i)
      wend
  wend
  HID_Disable()
 
end.

lo primero que podemos notar es que se hace un llamado al procedimiento visto anteriormente para configurar los puertos y las interrupciones, esto se logra con:
Código: [Seleccionar]
  Init_Main()
Despues de configurado los puertos y las nterrupciones, lo que sigue es Habiliatar la comunicacion usb y esto lo logramos con lo siguiente:

Código: [Seleccionar]
  HID_Enable(@userRD_buffer, @userWR_buffer)
  Delay_mS(1000)
  Delay_mS(1000)

Veamos la ayuda que nos ofrece el mikrobasic para determinar que hacen estas 3 lineas... primero comenzamos con HID_Enable.

Citar

Hid_Enable

Prototype:     sub procedure Hid_Enable(dim readbuff, writebuff as word)
 
Returns:        Nothing.
 
Description:   Enables USB HID communication. Parameters readbuff and writebuff are the addresses of Read Buffer and the Write Buffer, respectively, which are used for HID communication. You can pass buffer names with the @ operator.

This function needs to be called before using other routines of USB HID Library.
 
Requires:      Nothing.
 
Example:      Hid_Enable(@rd, @wr)

esto basicamente quiere decir que esta funcion lo que hace es habilitar la comunicacion usb y que como parametros necesita el nombre de las dos variables que le van a servir como buffers a la comnicacion usb, ademas tambien se dice que esta funcion no depende de ninguna otra funcion y que esta funcion debe ser llamada para poder usar otras funciones de esta libreria.

asi pues la linea:
  HID_Enable(@userRD_buffer, @userWR_buffer)

lo que hace es habilitar la comunicacion usb y determinar cuales van a ser los buffers de entrada y salida de la comunicacion usb.

las lineas que siguen...
  Delay_mS(1000)
  Delay_mS(1000)

lo que hacen es dar un tiempo para que este proceso de la habilitacion de la comunicacion se estabilize.

A continuacion sigue un bucle infinito:
Código: [Seleccionar]
  while true
      k = HID_Read()
      i = 0
      while i < k
          ch = userRD_buffer[0]
          userWR_buffer[0] = ch
          HID_Write(@userWR_buffer, 1)
          inc(i)
      wend
  wend

comenzemos a intentar interpretar este codigo...

primero que todo encontramos una sentencia "while true"que nos somete a un bucle infinito... luego lo que hacen es que la variabe K le asignamos lo que se lee de la comunicacion usb... veamos como funciona y para que sirve la funcion HID_Read()

Citar
Hid_Read

Prototype:    sub function Hid_Read as byte
 
Returns:       Number of characters in the Read Buffer received from the host.
 
Description:  Receives message from host and stores it in the Read Buffer. Function returns the number of characters received in the Read Buffer.
 
Requires USB HID needs to be enabled before using this function. See Hid_Enable.
 
Example:     length = Hid_Read

En otras palabras lo que hace esta funcin es recivir los bytes enviados desde el host, y guardarlos en el buffer de lectura... y nos retorna la longuitud o el numero de caracteres recividos y almacenados.

asi pues en la variable K tendiamos el numero de carateres enviados desde el host, lo que sigue es que hacemos que la variable i sea igual a cero para usarla como un contador.

Acontinuacion en esta parte del codigo se lee lo que llego del host y se envia lo mismo que llego...
Código: [Seleccionar]
       while i < k
          ch = userRD_buffer[0]
          userWR_buffer[0] = ch
          HID_Write(@userWR_buffer, 1)
          inc(i)
       wend

En este codigo hacemos que la variable ch sea iagual al primer byte del buffer de lectura, luego hacemos que el primer byte del buffer de escritura sea igual a la variable ch, luego usando la funcion "HID_Write"

Veamos para que sirva la funcion Hid_Write

Citar
Hid_Write
Prototype sub procedure Hid_Write(dim writebuff as word, dim len as byte)
 
Returns Nothing.
 
Description Function sends data from Write Buffer writebuff to host. Write Buffer is the address of the parameter used in initialization; see Hid_Enable. You can pass a buffer name with the @ operator. Parameter len should specify a length of the data to be transmitted.
 
Requires USB HID needs to be enabled before using this function. See Hid_Enable.
 
Example Hid_Write(@wr, len)

Esta funcion como parametros necesita que le digamos cual es el buffer de salida o escritura y la longitud de los datos a enviar...

asi pues... en la linea:
HID_Write(@userWR_buffer, 1)

lo que se prentende es enviar el primer byte del buffer de escritura a el host (recordemos que el primer byte del buffer de escritura fue previamente fue "llenado" con el primer byte del buffer de lectura)

despues con la instruccion:
inc(i)
logramos que este proceso se repita tantas veces como caracteres hallan llegado...

al final salimos del bucle y con la intruccion
HID_Disable()

desabilitamos la comunicacion usb y terminamos el programa

como pueden ver el codigo como tal no es complikado... y pues todo en esta prte del soft del micro es muy clara

lo que no entiendo es por que no me simula en el proteus... alguien tiene una idea de por que no funciona... o podria darnos una mano haber si los que estamos comenzando logramos despegar....

ahh por cierto el circuito propuesto por mikrobasic es el siguiente:

(http://img6.imageshack.us/img6/27/circuitomikorbasicun2.jpg)

como ven el circuito tambien es bastante sencillo... y el que con el que yo estoy simulando en proteus es el siguiente:

(http://photos3.hi5.com/0078/979/506/zbRt8l979506-02.jpg)

y ps es el mismo no???

entonces alguien podria decirme cual es el error de por que no me simula???  :2]

bueno espero haber podido colaborar en algo a algun usuario con la explicacion del soft
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: jonathanPIC888 en 15 de Febrero de 2009, 20:43:54
Miren leí el titulo y despues de mucho experimentar con visual basic y C de CCS pude terminar un ejemplo con PIC18F2550 y protocolo HID si quieren el código diganme y lo posteo.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 15 de Febrero de 2009, 23:09:52
claro por que no podria sernos de ayuda con lo del vb... y tal vez podriamos basarnos en el programa del micro para generarlo en lenguaje basic ya sea mikrobasic o proton o no se
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: jonathanPIC888 en 16 de Febrero de 2009, 00:34:34
Bueno acá les dejo el ejemplo  :-/

Ahora yo también he hecho ejemplos con HID y el proton pero me resulto increiblemente más facil usar la librería nativa de windows.

Y la programación en C cualquier cosa que no entiendan diganme pof¿r favor. :-)
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: septiembre_negro en 16 de Febrero de 2009, 00:48:11
Hola que tal, paso por aquí  saben leí lo que comentan acerca del USB y aunque dicen que no son agresivos sus post, leyéndolos bien si  lo son y bastante. En que me baso  para decir esto, pues en lo siguiente. Llevo tiempo leyendo Todopic y M&M y la verdad he visto información clara mas con lo de USB que es lo que atacan aquí. Empezando por el tutorial con ejemplos de este mismo foro -todopic

Creo que el PDF de la página de Lord lafebre es bastante claro,
tomando en cuneta la parte introductoria
Yo pienso que Uds. están atacando mal el problema, si en realidad lo que quieren es ser expertos en USB les recomiendo antes de empezar a codificar tener claro lo siguiente:
El USB no es como una comunicación serie que solo se conecta y ya. EL USB tiene protocolos de comunicación entre los que están HID, de los cuales tiene ejemplos, CDC de los cuales también los hay, transmisión BULK
Recientemente la introducción de los PICS OTG -Onthe GO- que permiten ser 2 vias y Embbeded Host incluso con los PICs
Pero no esperen que se les de digerida esta información
Creo que los compañeros nos dan las bases pero nosotros tenemos que profundizar por ejemplo con JAN AXELSON y su libro de la 3ra edición del usb completo.
Incluso en M&M hay un post que habla de la TP2550 y MKB y a mi parecer es claro con lo de los fuses y el descriptor

Además de que esta todo comentado
Y si aun quieren usar algo que no sea HID aunque ya lo dominen esta otro ejemplo de USB en modo CDC también en M&M
Yo entiendo que ante la frustración de perder ciertos conceptos es fácil criticar el trabajo de los demás
Pero recuerden que los ejemplos los ponen con su tiempo y lo hacen sin esperar nada a cambio
Si realmente desean colaborar háganlo y no critiquen pónganlo o mejórenlo pero eviten esos comentarios y risas que finalmente si son burlonas.
Que quede muy claro que nadie va a inventar el agua tibia o el hilo negro recuerden siempre que cualquier cosa que hagamos alguien mas ya lo hizo así que a conducirse con respeto  que les caería que dentro de unos meses alguien  comience un nuevo hilo  basado en su trabajo y comience dicho hilo con frases como esta.

“Oye he estado mirando los post de usb  con pic aca en el area de basic y lo que ami respecta no hay nada claro y bien explicado”

“Jajaja si hermano pero como ya explique esta listo pero en otro lenguaje es decir en este tema es usando basic y no me rio en forma de burla”
Así que para rematar les pongo los enlaces  no sin antes agradecer a cada una de las personas que aportaron a los mismos ya que gracias a su esfuerzo y sobre todo su tiempo nos han hecho mas fácil el camino.


http://www.todopic.com.ar/foros/index.php?topic=13406.0


http://micros.mforos.com/1149902/7944595-tp2550-mikrobasic/?marcar=tp2550


http://micros.mforos.com/1149902/8249735-ejemplos-usb-en-modo-cdc-con-proton/?marcar=cdc





Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 16 de Febrero de 2009, 01:12:24
Muy buen aporte en todo sentido de la palabra!

y ps no se... tal vez soy un pokititiko nuevo ocn estos micros y tal vez por eso no me funciona...

pero definitivamente no doy con mi error...

es que nisiquiera haciendo el que propone navaismo en este link me funciona ni me simula ni naaa

http://micros.mforos.com/1149902/7944595-tp2550-mikrobasic/?marcar=tp2550 (http://micros.mforos.com/1149902/7944595-tp2550-mikrobasic/?marcar=tp2550)

 :8} :8} :8} :8} :z) :2] :2] :2] :2]
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: jonathanPIC888 en 16 de Febrero de 2009, 02:02:18
yo vengo con el tema del usb desde principio de año y ahora recien estoy entendiendo su funcionamiento
he leido bastante y me he quemado las pestañas a mas no poder. Me ha costado mucho q me salgan bien los programas.
Igual para cualquier cosa siempre estoy dispuesto a dar una mano  :-/
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 16 de Febrero de 2009, 02:39:43
y en que lenguaje los manejas??

por cierto... parece k mikrobasic 7.2 tiene un bug en la libreria HID... segun parece lo estan corrigiendo ya en la 7.3 beta...
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: jonathanPIC888 en 16 de Febrero de 2009, 03:35:10
Mirá todos los ejercicios y proyectos de USB los hago con C de CCS. Viene con librerías incorporadas para manejar los protocolos HID,CDC,bulk transfer . Lo único que me faltaria por ver sería el tema de MSDC que no hay nada de eso en CCS solo en C18.
Por lo pronto no utilizo basic , por que estoy familiarizado más con C, aunque utilizo visual basic para PC
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: jonathanPIC888 en 16 de Febrero de 2009, 03:38:14
PD: El mikrobasic nunca lo he utilizado. :(
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ASTROCAR en 16 de Febrero de 2009, 05:39:42
Hola que tal, paso por aquí  saben leí lo que comentan acerca del USB y aunque dicen que no son agresivos sus post, leyéndolos bien si  lo son y bastante. En que me baso  para decir esto, pues en lo siguiente. Llevo tiempo leyendo Todopic y M&M y la verdad he visto información clara mas con lo de USB que es lo que atacan aquí. Empezando por el tutorial con ejemplos de este mismo foro -todopic

Creo que el PDF de la página de Lord lafebre es bastante claro,
tomando en cuneta la parte introductoria
Yo pienso que Uds. están atacando mal el problema, si en realidad lo que quieren es ser expertos en USB les recomiendo antes de empezar a codificar tener claro lo siguiente:
El USB no es como una comunicación serie que solo se conecta y ya. EL USB tiene protocolos de comunicación entre los que están HID, de los cuales tiene ejemplos, CDC de los cuales también los hay, transmisión BULK
Recientemente la introducción de los PICS OTG -Onthe GO- que permiten ser 2 vias y Embbeded Host incluso con los PICs
Pero no esperen que se les de digerida esta información
Creo que los compañeros nos dan las bases pero nosotros tenemos que profundizar por ejemplo con JAN AXELSON y su libro de la 3ra edición del usb completo.
Incluso en M&M hay un post que habla de la TP2550 y MKB y a mi parecer es claro con lo de los fuses y el descriptor

Además de que esta todo comentado
Y si aun quieren usar algo que no sea HID aunque ya lo dominen esta otro ejemplo de USB en modo CDC también en M&M
Yo entiendo que ante la frustración de perder ciertos conceptos es fácil criticar el trabajo de los demás
Pero recuerden que los ejemplos los ponen con su tiempo y lo hacen sin esperar nada a cambio
Si realmente desean colaborar háganlo y no critiquen pónganlo o mejórenlo pero eviten esos comentarios y risas que finalmente si son burlonas.
Que quede muy claro que nadie va a inventar el agua tibia o el hilo negro recuerden siempre que cualquier cosa que hagamos alguien mas ya lo hizo así que a conducirse con respeto  que les caería que dentro de unos meses alguien  comience un nuevo hilo  basado en su trabajo y comience dicho hilo con frases como esta.

“Oye he estado mirando los post de usb  con pic aca en el area de basic y lo que ami respecta no hay nada claro y bien explicado”

“Jajaja si hermano pero como ya explique esta listo pero en otro lenguaje es decir en este tema es usando basic y no me rio en forma de burla”
Así que para rematar les pongo los enlaces  no sin antes agradecer a cada una de las personas que aportaron a los mismos ya que gracias a su esfuerzo y sobre todo su tiempo nos han hecho mas fácil el camino.


http://www.todopic.com.ar/foros/index.php?topic=13406.0


http://micros.mforos.com/1149902/7944595-tp2550-mikrobasic/?marcar=tp2550


http://micros.mforos.com/1149902/8249735-ejemplos-usb-en-modo-cdc-con-proton/?marcar=cdc

Oye realmente tienes razon y confieso que  en esta parte he sido muy poco investigador y por eso es que he actuado como usted lo refleja y la verdad es porque me he frustado en eso del usb y no he atinado con la solucion rapida y facil como lo he logrados con los otros temas que he desarrollado por eso mil disculpa y en lo que si me doy golpe de cabeza es que sin darme cuenta he cuestionado a los colegas que como bien ya lo dijistes dar sus colaboraciones desinterezadamente y esta de parte del investigador en poner su grano y dar solucion a sus propias cosas.

Hermano grfacias por sus palabras y hacerme ver las cosas desde otro punto de vista  la verdad que se lo agradesco mucho y espero poder desarrollar mi tema de usb y mostrarlo a todos y mi logro sera de usted porque sin este foro la verdad que seria un invesatigador mas frustrado aun y gracias a estas pequeñas cosas es que uno toma decision y se hace mejor investigador y una buena investigacion concluye en un buen proyecto y asi ya dejare la flojera y esperar que colegas expongas todo la ciencia del foro ya no tendria ser porque asi nadie trabajaria por crees  sino esperar que otro desarrolle y lo postee asi que desde hoy mi lema sera trabajar mas y dar  mujcho mas aporte de lo que trabajo para asi enriquerer nuestra buena comunidad que lo es el foro, nuevamente mil gracias.

Saludos y de corazon fueron palabras que las valorare y no se las llevara el viento bueno en este caso no palabras si su escritura y nuevamente me rio jajaja pero esta ves de alegria por tener personas que le hagan ver las cosas mas claras a uno.

Atten.
Alexander Santana.
Venezuela.Barcelona.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: LordLafebre en 16 de Febrero de 2009, 12:48:57
Muy buen aporte en todo sentido de la palabra!

y ps no se... tal vez soy un pokititiko nuevo ocn estos micros y tal vez por eso no me funciona...

pero definitivamente no doy con mi error...

es que nisiquiera haciendo el que propone navaismo en este link me funciona ni me simula ni naaa

http://micros.mforos.com/1149902/7944595-tp2550-mikrobasic/?marcar=tp2550 (http://micros.mforos.com/1149902/7944595-tp2550-mikrobasic/?marcar=tp2550)

 :8} :8} :8} :8} :z) :2] :2] :2] :2]

Hola:

Ekud, te comento dos cosas para ver si sales de tus complicaciones.

No creo que sea un bug del MKB, sinó nadie pudiera crear proyectos con usb, no crees?

Revisa si la librería que usa el MKB es compatible con windows bista, alpareer ese es tu OS, no creo que sea complatible, sino creo que trabaja solo bajo XP.

Segundo, podrías armar un circuito y si no te funciona en él, pues el código está mal, no te fíes mucho de las simulaciones, no porque un circuito funcione en proteus, quieras hechar la culpa aotra cosa, recuerda tambien que algunas cosas que simulas en proteus no funcionan como lo esperas en la realidad.

Así que creo que ya te dieron la solución, arma el circuito, pero sobre todo creo que es tu OS.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 16 de Febrero de 2009, 13:05:23
mmmmmmm no eso es solo un tema que tengo para windows xp... y ps si tienes razon voy a montarlo haber... igual no es un circuito gigantesco

un saludo!
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 18 de Febrero de 2009, 05:00:20
pues bien segui tu consejo ps era lo ultimo ke me faltaba por hacer... lo de montar el circuito...

pues bien... lo monte... y no sirvio  :2].... jejej menos mal ya me lo esperaba

hay si ya me kede completamente desarmado.... no encuentro el error en el soft, la simulacion no funciona  y el hard ni hablar...

tal vez sea atrevido de mi parte pero creo k sinceramente el mikrobasic 7.0.0.2 o 7.2 tiene un bug en la libreria HID pk definitamente no funciona....

voy a investigar mas sobre los bugs de esta version y ya les contare los resultados
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 18 de Febrero de 2009, 05:29:38
Pues señores de aki me baso para decir lo que digo sobre el bug:

http://www.mikroe.com/forum/viewtopic.php?t=16440&highlight=usb (http://www.mikroe.com/forum/viewtopic.php?t=16440&highlight=usb)

http://www.mikroe.com/forum/viewtopic.php?t=15724&highlight=usb (http://www.mikroe.com/forum/viewtopic.php?t=15724&highlight=usb)

http://www.mikroe.com/forum/viewtopic.php?t=18323&highlight=usb (http://www.mikroe.com/forum/viewtopic.php?t=18323&highlight=usb)

http://www.mikroe.com/forum/viewtopic.php?t=16154&highlight=usb (http://www.mikroe.com/forum/viewtopic.php?t=16154&highlight=usb)

http://www.mikroe.com/forum/viewtopic.php?t=16320&highlight=hid (http://www.mikroe.com/forum/viewtopic.php?t=16320&highlight=hid)

http://www.mikroe.com/forum/viewtopic.php?t=16154&highlight=hid (http://www.mikroe.com/forum/viewtopic.php?t=16154&highlight=hid)



y si buscan mas en mikroE.com les aseguro k encontraran mas de lo k digo...

pero parece k en la version 7.0.0.3 que aun esta en beta se soluciono este problema

Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ASTROCAR en 18 de Febrero de 2009, 09:18:55
pues bien segui tu consejo ps era lo ultimo ke me faltaba por hacer... lo de montar el circuito...

pues bien... lo monte... y no sirvio  :2].... jejej menos mal ya me lo esperaba

hay si ya me kede completamente desarmado.... no encuentro el error en el soft, la simulacion no funciona  y el hard ni hablar...

tal vez sea atrevido de mi parte pero creo k sinceramente el mikrobasic 7.0.0.2 o 7.2 tiene un bug en la libreria HID pk definitamente no funciona....

voy a investigar mas sobre los bugs de esta version y ya les contare los resultados

Hola buenos dias, oye y que tal siexperimentas ya con otro compilador yo te comente del proton que es muy buen herramienta tambien asi que es cuestion de agotar recursos.

Saludos y estamos en contactos.
Atte.
Alexander Santana.
Venezuela-Barcelona.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: septiembre_negro en 18 de Febrero de 2009, 16:18:00
Mira solo cabe aquí una pequeña aclaración más que nada para evitar mal informar a la comunidad.
La comunicación por puerto usb con mickobasic  funciona en el foro de mym el usuario navaismo trabaja con este compilador y utliza todas  las librerías de este mismo entre las que esta la de comunicación  usb  sin ningún problema reportado asta ahora.
Si no mal recuerdo la versión que utiliza es la 7.02.
Incluso ahí mismo hay varios ejemplos de distintos usuarios entre los que se encuentra uno que mueve 4 u 8 servos.
Desafortunadamente no puedo extenderme en este tema por que yo no utilizo dicho compilador pero por que no te das una vuelta por mym
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: LordLafebre en 18 de Febrero de 2009, 17:18:31
Hola:

En efecto, como lo comenta septiembre_negro, no porque no te funcione a ti quiere decir que tenga un bug, Navaismo lo ha experimentado y muchas otras personas, como por ejemplo en JVMBOTS han desarollado una placa controladora de servos por USB, más complejo incluso de lo que estás pretendiendo hacer, así que cuestion de BUG no creo que sea, si te refieres a las páginas de Mikroe, recuerda que es sobre software original, si tienes la licencia, pues bien puedes reclamarles a ellos, no recuerdo si la versión demo soporta compilar ejemplos de USB.

Revisa ejemplos de otros y pruébalos sin cambiar nada, hay muchos funcionando, de no funcionarte a tí, pues ahí tendrás algun problema con las versiones de software que tengas.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 18 de Febrero de 2009, 17:36:28
Si tienen mucha razon en ello... pues el mikrobasic 7.2 demo no permite compilar el ejemplo con el que biene por akello del demo... lo otro es que mi version de de mikrobasic no es original esta crackeada.... tla vez por esto a mi no me funcione... kiero ser muy claro en decir que no es k el trabajo de otras personas con este compilador este mal, solo digo que a mi por algun extrao motivo no me funciona...

en la pag de JVMBOTS tienen un ejemplo de algo un poco mas complejo pero es para la version de Mikrobasic 4.0.0.3 ... http://www.jvmbots.com/viewtopic.php?t=26 (http://www.jvmbots.com/viewtopic.php?t=26)...

y el compa navaismo tiene un exelente docu en el que muestra como hacerlo con mikrobasic... aun asi.. siguiendo todos los pasos que deja no logro hacerlo funcionar... ni copiando y pegando me funciona... este fue el que probe
http://micros.mforos.com/1149902/7944595-tp2550-mikrobasic/?marcar=lata (http://micros.mforos.com/1149902/7944595-tp2550-mikrobasic/?marcar=lata)

sinembargo... en la pag de mikroE encontre lo siguiente:
http://www.mikroe.com/forum/viewtopic.php?t=7811&highlight=usb (http://www.mikroe.com/forum/viewtopic.php?t=7811&highlight=usb)

es alguien a quien tampoco le funcionaba el ejemplo de mikrobasic y la correccion estaba en los fuses... voy a probar haber komo me va

juro que si lo hago funcionar hago un tuto sobre esto para k nunca se me olvide jejej y por si se da la extraña posibilidad de ke a otro mortal le pase lo miso k a mi, pk yo ya no puedo mas! :D :D

jejejejejej  :D

 :D

o me funciona o me funciona asi me lleve mucho tiempo  :mrgreen:
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: septiembre_negro en 18 de Febrero de 2009, 21:32:08
Pues precisamente consultando con navaismo me comenta lo mismo que seguramente el  problema esta en  los fuses.
Tuvo a bien proporcionarme el siguiente ejemplo que enciende dos led.
Pruébalo con un cristal de  12mhz  y configura los fuses como en el pantallazo
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 19 de Febrero de 2009, 15:17:01
ok voy a probarlo....

pero es k no tengo a la mano un crystal de 12, no podria usar el de 20Mhz y dividir por 5??? o si cambio al de 20Mhz tambien debo alterar otros fuses??
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: septiembre_negro en 19 de Febrero de 2009, 20:52:19
Mira aquí lo importante es que no modifiques nada  :x para que así puedas saber con certeza que es lo que esta mal. si es tu compilador o si es tu  circuito etc.
Si comienzas a realizar modificaciones  :x caerás nuevamente en lo  mismo y será cuento de nunca acabar. cuando te funcione tal cual esta el ejemplo entonces ya podrás partir de ahí  para realizar modificaciones.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: septiembre_negro en 19 de Febrero de 2009, 23:54:38
Aquí os pongo ( jajajja siempre quise decir eso muy español   :mrgreen: ) el video del ejemplo que les e puesto consultando con navaismo me dice que para el cristal de 20mhz hay que dividir por 5


http://micros.mforos.com/1149902/7944595-tp2550-mikrobasic/
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 20 de Febrero de 2009, 01:53:26
oye exelente info te estoy muy agradecido!!!!

ya me kedo sin palabras... el error tiene k estar en otra parte...

me has sabido dar una valiosisima ayuda!!!!

y por cierto muchisimas gracias tambien a navaismo por tomarse el tiempo para que personas que estan aprendiendo como yo puedan tener ideas mas claras!  :mrgreen:

algo ke no se especifico es  k si sea para mikrobasic 7.2... aunke me imagino k si...

oye y algo que he kerido saber.... al igual que otros codigos que muestran otros usuarios.... este tambien se podria simular en proteus...?? ps ya no tengo dudas de ke el k se ekivoca soy yo pero me gustaria poder simularlo...

y ps en verdad no me keda mas ke reiterarles mis agradecimientos que buena informacion la que me has dado!
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: LordLafebre en 20 de Febrero de 2009, 12:48:03
Hola:

La ayuda te estaba dada desde hace rato, septiembre_negro ya te lo venía diciendo, solo que no te tomaste un tiempo para revisar.

Muy a parte de este tema, cual es el afán de la "K" donde no debe, entiendo que ya has leido las reglas del foro, no? el escibir mensajes al estilo SMS es inadmisible aquí.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 20 de Febrero de 2009, 13:31:24
si lo siento que pena... la verdad lo olvide...

es que por algun extraño motivo me acostumbre a escribir con la "K" pero hare lo posible por que esto no suceda
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: septiembre_negro en 20 de Febrero de 2009, 16:08:58
Mira efectivamente el ejemplo esta echo en la versión 7.2 con  respecto al simulador proteus  si es posible simular puerto usb.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: pilincho en 10 de Marzo de 2009, 18:03:50
hola a todos los que participan de este foro, mi nombre es Gustavo  8) y sigo este foro hace ya un tiempo, es Exelente toda la informacion que hay en este vendito foro  :-/, y Muy valorable todo el apoyo de cada una de las personas de quienes aportan 1 segundo de su tiempo, 1 neurona de su jugo serebral y 1 porcion de corazon para que el otro tambien pueda aprender, yo estoy muy interezado en lo que respecta (PIC,USB,PC), empese con el proyecto que presento Lafebre en TP-2550, el Cual Le mando mis saludos y agradecimiento por su aporte, yo lo hice con un 4550 y despues de largos cabezasos contra el monitor Pude hacerlo funcionar, ahora encontre este hilo que encaran al USB con MikroBasic el cual tambien estoy enpesando a investigar para no solo controlar 8 led´s con la PC, sino tener control total de Las E/S y E Analogicas e interrupcines del PIC 18F4550, quiero participar de este hilo para hacerlo crecer y que todos aprendamos al mismo ritmo, creo que con organizacion, ayuda, compromiso y voluntad podemos darlo vueltas como una media al 4550 y su modulo usb.
propongo que el lenguaje para PIC se use MikroBasic, ya que es De muy facil interpretacion y hay muchas librerias que podemos usar para que no sea tan engorroso y ademas aprendemos un poco mas del entorno.
Y para El Lenguaje para PC Usemos Microsoft Visual C# ya que es Muy poderoso, se pueden hacer infinidad de cosas como las librerias y Driver´s que podrian necesitar Los Pic´s para windows :-/.
Espero a la repuesta de alguien con esta iniciativa y empesemos desde Sero, a los moderadores tambien pido su ayuda.
Gracias por este espacio. Saludos
                                                      G.J.Z
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: POLO en 27 de Marzo de 2009, 03:37:02
hola ekud 

yo tube el mismo problema que tu, porque tambien trabajo con mikrobasic
yo ya logre la comunicacion por usb

tu problema no es tu licencia pirata, yo tambien la tengo


como veo tu caso se parecio mucho a mi problema  pero lo solucione de la siguiente manera

primero tienes que cargar  a tu pc la libreria  de  "Framework V20 " lo bajas de internet lo intalas. talves te pida que actualises
tu internet  a la vercion mas actual.

bamos a trabajar con el ejemplo que biene  en la carpeta de ejemplos de  mikrobasic (pic 18f2550),
checa toda la configuracion  del pic conque fue  creado este ejemplo, lo puedes hacer dando clic el icono  "edit project"
el cristal esta configurado a 48 M

despues ay un detalle que no aclaran en este foro, que es el de la configuracion del cristal,

este es el  truco: se compila a 48 M pero cuando conectes tu pic  vas a poner otro cristal supongamos 8M

la pregunta es porque 8 M, bueno esto lo configuramos  cuando creamos el proyecto, o lo puedes hacer dando clic en
 
"edit project"     a qui esta una tabla  para entenderlo mejor

http://users.edpnet.be/rosseel01/DRO/PIC/18F2455_2550_4455_4550_Usb_Clock.htm

si te das cuenta 8M coresponden a  "_PLLDIV_2_1L"  esta es la opcion que seleccionas  en la configuracion de el proyecto para
trabajar con un cristal de 8M

despues compilas  y ya esta listo  armas tu circuito correspondiente en  tu tarjeta de prueba

otro detalle muy importante

en el ejemplo de conexion de mickobasic hay un error   con el pin  "Vusb"
"Vusb" esta conectado a unos capacitores ceramicos    de 100 nf y lugo a tierra, no lo conectes  de esa manera, si lo conectas de esa manera va a probocar errors  de hatware, conectalo de esta manera:

"Vusb"  lo conectas al (+) de un capacitor electrolitrico de  (1 microfharadio), y el (-) a tierra
(nota: el capacitor electrolitrico es el de tanquesito)  :D

despues conectas correctamente las terminales de cable usb de esta manera
(puedes cortar un cable usb para  tu proyecto  :mrgreen: :mrgreen: :mrgreen:)

 VCC        Rojo         +5v
 D−          Blanco       Data −
 D+          Verde        Data +
GND         Negro        Tierra

recuerda no utilices fuente externa para alimentar al pic, ya que  el VCC y GND  alimenta al circuito (es como si conectaras  un mouse)

armas todo tu circuito   y porfin lo  conectas a  tu PC
y veras como  tu PC  reconoce al  nuevo hatware  y  LISTO PARA USARSE   :-/ :-/

BUENO HASTA AQUI TU  YA  PUEDES TENER ACCESO AL CONTROL DEL PIC POR USB Y AQUI COMIENZA TU PROGRAMA

POSTERIORMENTE  PUBLICARE UNA INTERFAZ DE COMO PRENDER UN LED POR USB Y VISUAL BASIC  MUY BASICO
PARA POSTERIORMENTE PONER  PRACTICAS   UN POCO MAS COMPLEJAS

CHECAS MI VIDEOJUEGO DE INVADERS QUE PUBLIQUE EN ESTE FORO  :mrgreen:, espero que no haya caducado el link de descarga  :D :D :D

bueno me avisas como te fue



 


 


 

Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 27 de Marzo de 2009, 03:50:33
ahh polo que buena info sobre todo por la tablas de ese link la verdad aclaran muchas dudas con respecto a la donfiguracion de biits...

bueno en cuanto al framework... no creo k sea pues yo siempre instalo el visual estudio 2008 y pues este soft ya biene con todos estos framework...

el detalle del crystal tambien era una duda muygrande que tenia.... de por que se compilaba a 48 siempre y se usaba con crystales de menor frecuencia...

y en cuanto a lo de el capacitorsito de Vusb... pues cuando lo probe lo hize con condensadores ceramicos y no me arrojo problemas de hard...

y pues en cuanto a tu descripcion del circuito pues bueno tambien te lo agradesco no esta de mas esa info uno nunca sabe en k se pueda estar ekivocando

por ahora tengo un poco abandonado el proyecto del usb pues estoy trabajando en algo de señales dtmf, sinembargo en cuanto culmine lo de el dtmf (que supongo k sera muy pronto) reanudo con usb ps la idea es hacer un soft y un hard que haga llamadas telefonicas y me gustaria conectar este dispositivo al pc usando el puerto usb.

de antemano muchas gracias estoy seguro que tu informacion me sera de mucha ayuda mas temprano que tarde  :-)
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: septiembre_negro en 27 de Marzo de 2009, 15:40:02
hola ekud 

yo tube el mismo problema que tu, porque tambien trabajo con mikrobasic
yo ya logre la comunicacion por usb

tu problema no es tu licencia pirata, yo tambien la tengo




Bueno antes que otra cosa no me queda mas que agradecerle al igual que los demás foreros que seguramente tanbien lo aran por poner en riesgo la vida de este foro al hablar de piratería en este foro si tienes el detalle de leer las reglas del foro esta  prohibida la piratería



como veo tu caso se parecio mucho a mi problema  pero lo solucione de la siguiente manera



Una ves mas te invito a que leas las reglas del foro esta prohibido expresarse de esta manera con palabras altisonantes aunque claro habría que mirar su contexto tal vez como a usted lo pendejean en su casa, lo pendejean  en su trabajo, lo pendejean sus amigos tal vez para usted sea una palabra de uso habitual y este muy acostumbrado a ella así que una ves mas lo invito a que modere sus palabras.


Además de que espero con una ansia muy especial su ejemplo de encender y apagar un led cosa que no se a echo en este foro y en ningún otro o por la red.


Ha y también agradecerle el truco de la resolución del misterioso valor del cristal algo que en diversidad de sub foros  se ha tratado  gracias a la colaboración de infinidad de amigos foreros  pero que seguramente usted no ha tenido a bien leer



Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 27 de Marzo de 2009, 15:50:20
....no si para que que no se por que en este tema estan como de un trato tan hostil....

recuerden muchachos que aqui la idea es compartir conocimientos y pubilcar necesidades....

 

llevemos la fiesta en pazzz !  :-)
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: septiembre_negro en 27 de Marzo de 2009, 17:39:37
....no si para que que no se por que en este tema estan como de un trato tan hostil....

recuerden muchachos que aqui la idea es compartir conocimientos y pubilcar necesidades....

 

llevemos la fiesta en pazzz !  :-)



Exacto de eso se trata de compartir de exponer nuestras  dudas siempre y cuando se haga respetando las reglas, que por eso mismo están para llevar una convivencia sana. pero tampoco  se vale faltarle al respeto  y ofender la inteligencia de la comunidad  pretendiendo decir que han inventado el agua tibia siendo que lo que pretenden exponer aquí como nuevo a sido tratado asta el hartazgo, incluso yo que asta hace poco me interese en  mikrobasic a raíz de este hilo no e tenido mas que seguir los excelentes hilos de LordLafebre y navaismo para lograr la comunicación por usb.
Ahora asta  el punto de volver  a escribir lo ya tratado  no habría tanto problema pero  por que ofender ¿?.   A demás de que se me hace un acto cobarde e infame propio de alguien no bien nacido, ofender a  alguien que ya no se puede defender que valiente pendejear a alguien que ya no lee los agravios de que es objeto,  y que lo único que  hizo en su momento fue compartir con la comunidad su trabajo, esa es la recompensa que tendremos todos al final de nuestro camino por este foro?? Que algún día llegue alguien y tenga a bien pendejear el trabajo que de manera desinteresada hemos dejado aquí.
Si el trabajo del señor navaismo es bueno a malo, correcto u equivocado  creo que hay maneras de expresarlo,  pero pendejear ¿? y aun mas grave como ya dije cuando la persona ofendida ya no esta en la posición de responder.
Señores en donde estamos y asía donde vamos.
Título: Re: Codigo 18f2550 y usb con Mikrobasic
Publicado por: ekud en 27 de Marzo de 2009, 19:13:17
exacto... la cuestion es esa... pues asi sea que alguien se halla equivocado haciendo algo eso tambien es muy valioso pues por lo menos los oros foreros ya sabemos que ese camino no es el mas adecuado para tal vez resolver n problema...

de esto hay muchos ejemplos en el foro... de personas que atacan un problema por un lado y no les da... y ya entonces los demas saben que por ahi no es... sea el caso por ejemplo de lo de la matriz tactil de led's' que me parece un exelente ejemplo de como la comunidad a base de ensayo y error logro esos buenos resultados... incluso abriendo nuevos caminos de desarrolo de ese proyecto....

y pues si.. pues ojala tratemos de cuidar mas nuestra forma de expresarnos con los demas... ya sea diciendo algunas malas palabras o no...

y como dice mi novia.... llevemos la fiesta en pazzz!!!  :D