Autor Tema: Proyecto PicUSB  (Leído 510803 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #120 en: 12 de Octubre de 2006, 12:34:55 »
Muy bueno Miguel ;) con tu permiso en la próxima actualización de la web lo cuelgo ok??

Saludos y gracias por el programilla :)

Desconectado ma4826

  • PIC16
  • ***
  • Mensajes: 130
Re: Proyecto PicUSB
« Respuesta #121 en: 12 de Octubre de 2006, 17:39:57 »
OK, gracias a ti por el PicUSB.

万人の友は誰の友でもない。

Desconectado Joaquín

  • PIC10
  • *
  • Mensajes: 24
    • Mi web
Re: Proyecto PicUSB
« Respuesta #122 en: 17 de Octubre de 2006, 11:27:55 »
Hola, he estado mirando el código de Miguel y me surje la misma duda que con Windows.

En la función de escritura o en la de lectura, me da lo mismo, el últmo número es un valor de timeout, ¿pero qué quiere decir ese timeout?

He mirado en el diccionario y parece ser interrupción, pero en algunos textos he visto que puede ser el valor que está el paquete en el puerto. ¿Podéis aclarármelo?

Támbién tengo una duda acerca del tamaño máximo de paquete que puede mandársele al PIC, pues estuve haciendo pruebas con Windows y con más de 64 bytes empezó a darme problemas.

Por último y aunque se sale un poco de este contexto. ¿Hay alguna forma de grabar el pic desde Linux con el GTPUSB+?

Gracias y un saludo.

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
Re: Proyecto PicUSB
« Respuesta #123 en: 17 de Octubre de 2006, 19:08:34 »
El la mpusbapi de microchip, que es la libreria( deberia decir biblioteca xD, que mal hablo) en la que nos basamos patra hacer estas cosas, dice:

- Specifies the time-out interval, in milliseconds. The function
returns if the interval elapses, even if the operation is
incomplete. If dwMilliseconds is zero, the function tests the
data pipe and returns immediately. If dwMilliseconds is INFINITE,
the function's time-out interval never elapses.

No soy muy bueno en ingles, pero con ayuda de algun traductor online y retocandolo, podemos sacar esto:

Especifica el intervalo de interrupción, en milisegundos. La función retorna si el intervalo termina, incluso si la operación es incompleta. Si dwMilliseconds es cero, la función testea los datos del pipe y retorna inmediatamente. Si dwMilliseconds es INFINITO, el intervalo de interrupción de la función nunca termina.

Por lo que deduzco que es una especie de perro guardian.

Saludos.

Tutoriales y proyectos de electrónica

Desconectado ma4826

  • PIC16
  • ***
  • Mensajes: 130
Re: Proyecto PicUSB
« Respuesta #124 en: 17 de Octubre de 2006, 19:41:34 »
Es el tiempo que espera como máximo para que se realice la accion, si no lo consigue en ese tiempo devuelve un error.

Saludos.


万人の友は誰の友でもない。

Desconectado Joaquín

  • PIC10
  • *
  • Mensajes: 24
    • Mi web
Re: Proyecto PicUSB
« Respuesta #125 en: 18 de Octubre de 2006, 03:03:22 »
De acuerdo Miguel, gracias por aclararmelo.

Un saludo.

Desconectado vdiazg

  • PIC12
  • **
  • Mensajes: 68
Re: Proyecto PicUSB
« Respuesta #126 en: 28 de Noviembre de 2006, 19:02:00 »
Hola Foro, permiteme felicitarte por tu excelente pagina.
Me gusto los articulos sobre USB, he implementado los ejemplos y funciona, mi duda es la siguiente:
 
si el circuito esta emulando un puerto serie virtual (en USB) como haria para decirle a la PC que maneje las otras lineas de control del puerto serie, es decir si quiero manejar el RTS, DTR, o leer los estados del CTS o DSR (ya que en mis aplicaciones con puerto serial real puedo manejar esas lineas) como hago o que comando envio a la PC para que entienda que he manejado una de esas lineas en su puerto serie Virtual, te comento esto ya que como tengo varias aplicaciones en Pics y PC deseo migrar al USB pero me encontre con esa duda, antes era facil ya que el hardware estaba conectado a las lineas fisicas del puerto (las lineas de control del Puerto serie), pero ahora?

Bueno en el Software de la PC no hay problema ya que este continuaria con su funcionamiento normal, pero como hago con el PIC?
 
En otras palabras como puedo implementar un verdadero y completo adaptador de Serie a USB con los PIC18F.
 
Espero tu gran ayuda en esto.
 
Gracias
quiero construir un "Condensador de flujos"

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
Re: Proyecto PicUSB
« Respuesta #127 en: 04 de Diciembre de 2006, 01:09:12 »
Mira el TUSB3410 de Texas Instruments, en el subforo de programadores lo usa SIspic en su GTP USB-232.

A traves de ese integrado adaptas el serie a USB en vez de emularlo, hay otros como el FTDI tambien.

Tutoriales y proyectos de electrónica

Desconectado vdiazg

  • PIC12
  • **
  • Mensajes: 68
Re: Proyecto PicUSB
« Respuesta #128 en: 06 de Diciembre de 2006, 01:15:40 »
Bueno tienes razon, ya probe el conversor de TI, pero mi proposito era no usar un integrado externo, sino el mismo PIC, solo que pretendo tambien manejar las otra lineas de control del puerto serie al emularlo con USB.
Gracias de igual forma.
quiero construir un "Condensador de flujos"

Desconectado kikesoft

  • PIC10
  • *
  • Mensajes: 4
Re: Proyecto PicUSB
« Respuesta #129 en: 19 de Diciembre de 2006, 02:57:17 »
Hola a todos

Yo tambien me he montado el TUSB3410 de TI y funciona muy bien, pero como dice el amigo VDiazg, la idea es utilizar un 18F2550 que nos permita tener un USB completo con esas lineas de control (DTR,CTS,RTS,DSR) , desde mi punto de vista debe de tenerlas por alli el metodo CDC (USB - RS232) de microchip pero no he mirado ejemplos , si tienen un ejemplo en CCS o C18 porfavor les pido ke me lo hagan saver.

Gracias

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Proyecto PicUSB
« Respuesta #130 en: 12 de Enero de 2007, 12:07:18 »
Buenooooo .... yo sigo con mi experimentos.  :mrgreen:

Hasta ahora hemos estado trabajando con el método Bulk Transfers (Transferencia masiva) para conectarnos con el PIC vía USB 2.0. (Firmware, Driver y Aplicación+Dll) pero hay más ....  :D

Otro método posible es el CDC USB (Communications Device Classes) que logra utilizar el USB como si fuera u fuese un puerto COM serie, Virtual pero tan puerto COM como el implementado con una UART.  :shock:

Este método nos permite comunicarnos con el PIC mediante cualquier programa en el PC que pueda utilizar un puerto COM serie normal y corriente, como por ejemplo el HyperTerminal de Windows o el Siow del CCS C, además de cualquier aplicación que deseemos hacer en Delphi, Visual Basic u C++ que tenga la posibilidad de leer y escribir puertos COM.  :)

El firmware de nuestro PIC le dice al Windows que es un puerto serie y éste va y se lo cree, añadiendolo como un puerto normal y corriente entre sus dispositivos. Para ello utiliza el mismo driver que usa para los demás puertos serie, por lo que no tenemos instalar un nuevo driver como era el caso del método Bulk Transfer. Solo tenemos que suministrarle un fichero .inf que nos pone a nuestra disposición Microchip y que le va a servir al PC para reconocer como este tipo de dispositivo a nuestro PIC con el correspondiente firmware a través del VIP&PID correspondiente.

Si queréis todos los detalles lo tenéis disponible en EL USB DESENCADENADO : CDC USB



Esto del CDC es increible señores, y yo sigo flojeando y probando los codigos que ustedes exponen cada día, ahora le tocó el turno al USB DESENCADENADO : CDC USB  que creó RedPic, es que tienen que verlos con sus propios ojos para que se den cuenta, solo hay que seguir las indicaciones y listo, un puerto usart emulado, amigo Red debieras llamar a tu artículo: engañe a su PC, dele COM por USB :D :D
 
aquí unas imagenes:














la cosa que me causó risa y sorpresa es que desconectaba el cable USB y desaparecía el COM, lo volvia a conectar y aparecia el COM de nuevo, eso habría que llamarlo COM en caliente  :D

ya estuve haciendo unas pruebas con el MSCOMM.ocx que se puede usar en el Visual Basic y basicamente se puede usar la típica transmisión USART que estamos acostumbrados ver.

Nota: se puede alimentar el circuito desde el propio Vusb, pero para mayor seguridad mejor es alimentarlo con una fuente externa, solo hay que desconectar el Vusb y meter el Vcc de la fuente de alimentación.

Salu2
Pedro
« Última modificación: 15 de Enero de 2007, 12:59:39 por PalitroqueZ »
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Proyecto PicUSB
« Respuesta #131 en: 12 de Enero de 2007, 15:36:18 »
REDPIC Muchisimas gracias por estos grandes aportes. Realmente  :shock:

Es estupendo lo que se aprende con ustedes. De ahora en adelante para mi tienes el titulo de MAESTRO RedPic.
« Última modificación: 12 de Enero de 2007, 15:52:40 por PICmouse »

Conectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Proyecto PicUSB
« Respuesta #132 en: 12 de Enero de 2007, 18:09:05 »
Ja, ja, ja  :D :D :D No, tanto, no tanto.

Te contesto con lo que contestó un gran genio de verdad, mister Thomas Alva Edison, que dijo que toda genialidad se componía de un 10% de inspiración y un 90% de transpiración.

Y para nosotros ese 90% de transpiración consiste en leer docenas de datasheets, cientos de páginas, miles de post ... y después cocinar a fuego lento nuestras pequeñas pócimas e invitar a los amigos a la cena que resulta.

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado raus

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 121
Re: Proyecto PicUSB
« Respuesta #133 en: 05 de Febrero de 2007, 07:21:00 »
Hola!!

He estado ojeando el código HID de RedPic, y me gustaría adaptarlo para un pequeño proyecto que tengo en mente: consistiría en una serie de pulsadores y palancas que, dependiendo de su estado, envíen diferentes combinaciones de teclas al PC y, a su vez, una aplicación en el pc debería enviar unos datos al pic, para que este gestione unos LEDS.

Como no manejo muy bien la forma de enviar teclas a una aplicación por software desde windows, me pareció una buena idea hacer que mi hardware sea reconocido como un teclado usb y que asi, envie directamente las pulsaciones de teclas a windows. De todos modos, esto me impediría recibir los datos sobre el estado de leds. Mirando el firmware de RedPic, encontré esto:

/////////////////////////////////////////////////////////////////////////////
//
// usb_keyboard_task()
//
// Sends a packet of keyboard data. The protocol was specified in the HID
// report descriptor (see usb_desc_kbmouse.h), and is:
// tx_msg[0] = HID report id (2)
// tx_msg[1] = modifier (an 8bit bitmap of shift, tab, alt keypress)
// tx_msg[2] = const 0
// tx_msg[3:7] = an array of held down keys. a=4, b=5, etc.
// if msg[2:7]={0} then no keys are held down
//
// rx_msg[1] = HID report id (2)
// rx_msg[0] = 5bit bitmap of led status
//
/////////////////////////////////////////////////////////////////////////////

Si vemos la línea en negrita, parece ser que podría recibir hasta 5 bits, que me da un total de 2^5=32 combinaciones posibles, con lo que ya podría manejar algunos LEDs, ¿no es asi?

El problema es que no sé que tendría que hacer en el programa del pc para poder enviar esos datos al teclado, ¿alguien puede arrojar algo de luz sobre mi ignorancia?

Quizás sea más fácil que haga 2 dispositivos separados, un teclado usb HID para los pulsadores y demás, y otro dispositivo usb CDC, que reciba los datos sobre estado de los leds, ¿no? Preferiría agruparlo todo (LEDS/Salidas y pulsadores/entradas) en un sólo dispositivo, pero como si hago un solo usb CDC, no sé como transformar los datos enviados en pulsaciones de tecla mediante un software (estoy usando C#, pero aun no lo domino), creo que esta será la mejor opción.

¿Qué opináis? Cualquier comentario es bienvenido (excepto insultos personales, jejeje)
Visita mi blog sobre tecnología y marketing:
http://franciscobenito.es

Desconectado jra_666

  • PIC10
  • *
  • Mensajes: 2
Re: Proyecto PicUSB
« Respuesta #134 en: 15 de Febrero de 2007, 21:16:06 »
HOLA A TODOS, TENGO UN PROBLEMA CON EL PICUSB, ESPERO QUE ALGUIEN TENGA RESPUESTA A MI PROBLEMA PORQUE ESTO ME ESTA VOLVIENDO LOCO.

TODO COMENZO CUANDO ARME EL PROYECTO TAL Y COMO APARECE EN EL DIAGRAMA PUBLICADO EN http://www.hobbypic.com/index.php?option=com_content&task=view&id=14&Itemid=32, EL PIC 18F2550 LO PROGRAME USANDO EL PROGRAMADOR ART2003 Y TAMBIEN LOGRE INSTALAR LOS DRIVERS EN LA PC. MI PROBLEMA ES QUE EN OCASIONES CONECTO EL CIRCUITO A LA PC Y ME SALE UN MENSAJE DICIENDO QUE EL DISPOSITIVO NO PUDO SER INICIALIZADO O QUE EL DISPOSITIVO USB NO ES RECONOCIDO Y EL LED SE QUEDA EN COLOR ROJO Y DESPUES DE VARIOS INTENTOS LA PC LOGRA RECONOCER EL PICUSB Y EL LED SE PONE EN COLOR VERDE Y BUENO YA TODO FUNCIONA DE MARAVILLA. ALGUIEN SABE COMO PUEDO RESOLVER ESE PROBLEMA????

YA HE INTENTADO DESINTALANDO Y VOLVIENDO A INSTALAR LOS DRIVES, TAMBIEN EN EL FORO LEI QUE SE PODIA USAR DIFERENTES CRISTALES SIEMPRE Y CUANDO SE MODIFIQUE EL VALOR DEL OSCILADOR PARA LOGRAR GENERAR LOS 4MHZ, PERO NADA DE ESTO ME HA DADO BUENOS RESULTADOS, EL PROBLEMA SIGUE  :shock: :x

ESPERO QUE ALGUIEN ME PUEDA AYUDAR Y DE ANTEMANO GRACIAS :-/