Control de dispositivos a través del módulo USB del PIC18F45/2550

Ola moyano, muchas gracias por ese aporte que le diste al foro, quiero aprender a programar, y quiero seguri los ejemplos que has dado en el comienzo del post, pero cuando voy a abrir el software del primer ejemplo, el de VB me sale un mensaje
"el componente MSCOMM32.OCX o uno de sus archivos dependientes no esta registrado correctamente: falta un archivo o esta dañado"
sabes que puede ser, estoy trabajando en win7 32 bits sera eso?
 
Ola moyano, muchas gracias por ese aporte que le diste al foro, quiero aprender a programar, y quiero seguri los ejemplos que has dado en el comienzo del post, pero cuando voy a abrir el software del primer ejemplo, el de VB me sale un mensaje
"el componente MSCOMM32.OCX o uno de sus archivos dependientes no esta registrado correctamente: falta un archivo o esta dañado"
sabes que puede ser, estoy trabajando en win7 32 bits sera eso?

Es un archivo de VB 6.0...tenés que tener instalado el VB 6.0 y te va a desaparecer.
 
Hola Moyano como siempre impresionante lo tuyo, te queria consultar de como puedo lograr que el micro mande datos a la PC o mas especificamente a Visual Basic 6.0 ya que en tus ejemplos prendo los led, pero no puedo leer el conversor ni las entradas digitales, esto solo me sucede con windows 7 64bits, ya que en XP funciona perfecto, gracias.

Ha me olvidaba un ejemplo tuyo (el del gamepad) si funciona bien en windows 7
 
Última edición:
Hola Moyano como siempre impresionante lo tuyo, te queria consultar de como puedo lograr que el micro mande datos a la PC o mas especificamente a Visual Basic 6.0 ya que en tus ejemplos prendo los led, pero no puedo leer el conversor ni las entradas digitales, esto solo me sucede con windows 7 64bits, ya que en XP funciona perfecto, gracias.

En el manual que está en la primera página te muestro como hacerlo. Un saludo !
 
Olá pessoal.

Soy do Brasil. Não falo espanhol/castelano....

I will write in english, ok?

So, I just download this fabulous HID project.

Now I am reading it to learn how to modify it and make my owns projects...

But I have an strange problem. I just opened the APLICACION_HID.c file and tried to compile it, but have some errors on the beginning of the file.

The error is on this 2 variables:

int8 recibe[USB_EP1_RX_SIZE];
int8 envia[USB_EP1_TX_SIZE];

The image with the error:

http://img.photobucket.com/albums/v222/ahhh/Eletronica/erro_hid.jpg

But, if I simulate with the .hex that came with the project, this works like a charm.

Simulating the project with Virtual Box + Windows 7 32 bits + Proteus:

http://img.photobucket.com/albums/v222/ahhh/Eletronica/funcionando.jpg

May someone help me?

bye

Abraços

Matheus Lopes
Brasil
 
Hola Matheus como estás ?

Mirá es un error muy común...debido principalmente a la versión del compilador. Bajate e instala la versión 4.114 del CCS.
Con eso tendrías que solucionar el problema. Un saludo grande desde argentina y que estés bien !
 
Hola que tal a todos, tengo una pregunta. Con usb bulk se puede usar la opcion de pinsense?

Esa opción es ajena al tipo de conección...depende del driver hardware del USB. Por lo tanto si podés usar la opción de que se fije cuando el dispositivo se ha conectado.

I modified the code from CCS and the C#.

Now I can count pulses that arrive on the CCP PIN.

Felicitaciones por el avance de tu proyecto. Me alegra saber que te haya servido.

Un saludo !
 
He terminado de construir un osciloscopio digital con un ADC + memoria sram 32K + 18f2550 para la transferencia usb.

Estoy usando el protocolo HID en CCS C que me ha funcionado perfectamente en otros casos pero en este no (o no muy bien).

Mi constante USB_CONFIG_HID_TX_SIZE es 64, la idea es enviar 512 paquetes de 64 bytes a la PC. Trabajo a 48mhz, no uso WDT

Funciona, pero tarda al menos 10 segundos en enviar los 32K de datos a la PC, otras veces la PC no reporta que haya terminado la transferencia (sin embargo el pic no se cuelga, si le envio un dato desde la PC empieza a responder de nuevo enviando mas caracteres)

Segun mis calculos, 64 bytes cada 1ms (timeframe del usb hid) deberian ser 512 ms, digamos 2 segundos como mucho, cierto?

Preguntas:
1)- ¿Es normal que tarde tanto en HID para enviar 32KB? Aclaro que la PC no hace ningun proceso que pudiera demorar mientras espera datos.
2)- ¿Hay algo hecho con bulk? he mirado las paginas pero entiendo que aun no esta estudiado

Esta instruccion:
while(usb_tbe(1) == FALSE);
La puse porque me pasaba que la instruccion usb_puts() devolvia false luego de varios envios (indicando que el buffer de salida aun no estaba vacio)

Esta otra:
usb_task();
La puse porque he visto en foros que cada cierto tiempo hay que ejecutarla (no estoy muy convencido pero sin ella tengo los mismos resultados)

¿Usando usb_put_packet() habra diferencia?

Pongo aqui la parte conflictiva del codigo.

Código:
   p = 0;
   for(i=0;i < 32768;i++) {
   
      // Esperar buffer de endpoint vacio
      while(usb_tbe(1) == FALSE);
      // Habilita el periferico usb y las interrupciones.
      usb_task();

      respuesta[p] = input_b();
      p++;
      if (p == 64) {
         p = 0;
         usb_puts(1, respuesta, USB_CONFIG_HID_TX_SIZE, 0);
      }
   
      // Avanzar el contador
      output_high(OUT_CLK_LOWSPD);
      output_low(OUT_CLK_LOWSPD);

   }

}
 
¿Es normal que tarde tanto en HID para enviar 32KB? Aclaro que la PC no hace ningun proceso que pudiera demorar mientras espera datos.

Para el Driver de CCS..si puede tardar eso...lo que vos comentas de 64 bytes a 1ms...es un caso ideal...y hay que hacer varias modificaciones para poder llegar a esa tasa de transferencia.

Un usuario del foro todopic lo pudo realizar y mostró algunos de los cambios que le hizo para lograr una transferencia de 50 bytes cada 1 ms.

http://www.todopic.com.ar/foros/index.php?topic=25188.40
 
Sin modificar nada de las librerias de CCS, usando el ejemplo HID tuyo moyano (el que siempre use) hice el siguiente #define

#define USB_CONFIG_HID_TX_SIZE 64 // Definimos el tamaño del endpoint de salida.
#define USB_CONFIG_HID_TX_POLL 1
#define USB_CONFIG_HID_RX_SIZE 2 // Definimos el tamaño del endpoint de entrada.

Donde el valor de USB_CONFIG_HID_TX_POLL era 10ms en el easyHID, y lo estoy "pisando" con un polling de 1ms.

Aparentemente, ahora esta transfiriendo los 32KB en menos de 1 segundo (asumo que debe ser 0.5segs mas o menos) y los datos estan en VB.net

Aun no he verificado que los datos esten correctos (no tengo mucha forma de hacerlo tampoco). ¿Puede ser que haya logrado esa velocidad sin modificar nada mas que el polling time? O tiene que haber algo que no este bien?
 
Sin modificar nada de las librerias de CCS, usando el ejemplo HID tuyo moyano (el que siempre use) hice el siguiente #define

#define USB_CONFIG_HID_TX_SIZE 64 // Definimos el tamaño del endpoint de salida.
#define USB_CONFIG_HID_TX_POLL 1
#define USB_CONFIG_HID_RX_SIZE 2 // Definimos el tamaño del endpoint de entrada

Yo siempre usé polling time de 10ms...pero nunca he tenido que transferir grandes paquetes de datos...quizás esa sea la modificación definitiva.

Un saludo !
 
Bien, veremos que pasa cuando haga una verificacion de los datos (como son desde un ADC, los desconozco)

Cualquier cosa comento, pero dejo asentado aqui: Modificar en el easyHID_descriptors ese parametro (o mejor, establecer el #define antes de la inclusion del mismo)

Aun puedo mejorar la velocidad, ya que en VB.net mi rutina de obtencion de datos hace un traspaso de vectores para eliminar el primer elemento del mismo (obligatorio en hid, es el message ID y no es un dato "desde" el pic).

La modificare para no hacer ese traspaso de vectores y seguro que mas velocidad le saco. Me lei todo el thread que me pasaste de foropic, me resulta extraño que esa persona tuvo que hacer tantas cosas para obtener esta velocidad y en mi caso solo tuve que cambiar el polling.

Posiblemente sea porque el necesitaba esa velocidad y encima constante durante bastante tiempo. (ademas el tenia que atender el ADC mientras transmitia) En mi caso son rafagas de 32KB.
 
buen dia, me estoy iniciando en la comunicacion pc-pic por usb, realice la comunicacion cdc del primer ejemplo del post y me aparece el problema de que puedo enviar caracteres del pic al pc pero no viceversa. he tratado todo, revise mil veces el hardware y firmware y nada que funciona. si alguno tuvo un problema similar y encontro solucion me seria de gran utilidad.. por cierto excelente trabajo con todos sus aportes! espero colocar mi granito de arena tambien cuando tenga mas experiencia..
 
Una pregunta que creo que es muy importante....

:confused::confused::confused:

Si yo tengo o diseño [osea elgo propio] un cxto, una interfas grafica y la programacion del pic haciendo uso del driver "mcHID.dll", teniendo en cuenta que el dicho driver no es mio...

¿¿¿ Puedo "vender" esa "aplicacion" siempre y cuando respete los derechos de autor del driver, osea, espesificando que el driver es de "Juanito" y no mio y por lo tando el driver no entraria en "la factura"...

Osea cobrar solo el cxto y la interfas grafica mas no el driver ???? ....

:confused::confused::confused:
Gracias...
 
la la respuesta anterior creo que por ética no se debería cobrar el driver (aunque nadie se va a dar cuenta), pero si por el costo de componentes y mano de obra.
 
Atrás
Arriba