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

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

Desconectado juanpavela

  • PIC10
  • *
  • Mensajes: 37
Re: Proyecto PicUSB
« Respuesta #180 en: 21 de Junio de 2007, 17:05:01 »
listo error corregido parece que era de la version del CCS, pero ahora cuando lo estoy instalando me pide el archivo usbser.sys??????, no tengo ni idea donde esta o si tambien es de la version del CCS
chao espero me puedan ayudar

Desconectado juanpavela

  • PIC10
  • *
  • Mensajes: 37
Re: Proyecto PicUSB
« Respuesta #181 en: 21 de Junio de 2007, 17:31:12 »
perdonen tanta presencia, pero como es un tema tan desconocido para mi cualquier problema se me hace dificil, pero ya solucione lo del usbser.sys , este es un archivo necesario para el driver asi que simplemente lo baje y lo meti a la misma carpeta y listo, ahora necesito que por favor me digan ya que esta instalado como puedo ver que manda algo por el hyperterminal???
como hago para que el hyperterminal me diga que puedo utilizar ese puerto virtual #5
gracias

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Proyecto PicUSB
« Respuesta #182 en: 22 de Junio de 2007, 14:00:28 »
tienes que crear una nueva conexión telefonica (igual sirve modificar la que tengas) y buscar el puerto y seleccionar el com virtual que usa microchip para comunicarse con el dispositivo.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado juanpavela

  • PIC10
  • *
  • Mensajes: 37
Re: Proyecto PicUSB
« Respuesta #183 en: 22 de Junio de 2007, 16:51:46 »
jaja ya lo habia hecho pero no quise poner mas mensajes, por ahora ando haciendo pruebas con el y estoy haciendo mi propio programa en este momento para ver si puedo convertir una comunicacacion serial a usb, lo intentare por ahora le agradeceria a alguno de ustedes si me pudiera explicar qeu diferencias hay entre: Bulk Transfers , HID, CDC, el ultimo lo entiendo pero agradeceria que alguien me pudiera ayudar en estas vacios de interes
gracias

Desconectado JProgram

  • PIC10
  • *
  • Mensajes: 1
Re: Proyecto PicUSB
« Respuesta #184 en: 22 de Junio de 2007, 20:05:29 »
Hola amigos, soy nuevo en el foro pero ya he realizado todo lo que han publicado y me ha funcionado muy bien.

Quisiera saber saber como llegan los datos al PC o mejor quisiera visualizar todos los datos recibidos en el PC al estilo de Hyperterminal de windows, pero sin utilizar el USB desencadenado sino utilizando el proyecto de PicUSB es decir un programa que haga lo mismo del hyperterminal para dedicarlo solo a pruebas

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Proyecto PicUSB
« Respuesta #185 en: 22 de Junio de 2007, 22:04:57 »
jaja ya lo habia hecho pero no quise poner mas mensajes, por ahora ando haciendo pruebas con el y estoy haciendo mi propio programa en este momento para ver si puedo convertir una comunicacacion serial a usb, lo intentare por ahora le agradeceria a alguno de ustedes si me pudiera explicar qeu diferencias hay entre: Bulk Transfers , HID, CDC, el ultimo lo entiendo pero agradeceria que alguien me pudiera ayudar en estas vacios de interes
gracias
Checa aquí:
http://www.beyondlogic.org/usbnutshell/usb4.htm
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado juanpavela

  • PIC10
  • *
  • Mensajes: 37
Re: Proyecto PicUSB
« Respuesta #186 en: 24 de Junio de 2007, 17:47:00 »
alguna idea de porque estan dificil de que me reconozca el dispositivo???
tengo que resetiarlo muchas veces hasta que lo detecte sin errores, pq pasara esto
cualquier idea es bienvenida
gracias

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Proyecto PicUSB
« Respuesta #187 en: 24 de Junio de 2007, 19:11:24 »
Buscando por internet me topé con una nota de Atmel donde hay un programa en ASM para implementar un USB en dos de su micros que no lo incorporan (USB por hardware). También trae como crear drivers y aplicaciones en Delphi 7, así como documentación varia relacionada con el USB. Supongo que para los expertos en ASM podrían adaptar el código para los PIC.

http://www.4shared.com/file/18559399/e1c22071/AVR309.html

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #188 en: 24 de Junio de 2007, 19:37:19 »
juanpavela supongo que tienes el esquema montado tal y como aparece en el primer post del hilo no?? es decir, condensador en Vusb y otro en la alimentación del pic, cierto?? si es sí, la cosa es extraña, prueba a aumentar el valor de ambos.

saludos

Desconectado manchaster

  • PIC10
  • *
  • Mensajes: 9
Re: Proyecto PicUSB
« Respuesta #189 en: 24 de Junio de 2007, 23:05:28 »
J1M me podrias decir porque existe cierto retraso en las comunicaciones de la Pc con el Pic en el programa de PicUsb?

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #190 en: 25 de Junio de 2007, 04:32:39 »
De que retraso estamos hablando?? La transmisión es en modo Bulk, si no mal recuerdo, no se garantiza el tiempo, ya que va a depender de los cacharros 'extra' que tengas conectados a ese USB. De todas yo cuando clickeo el botón de actualizar leds por ejemplo tarda unos milisegundos (menos de medio segundo) en cambiar el estado de estos.

Desconectado manchaster

  • PIC10
  • *
  • Mensajes: 9
Re: Proyecto PicUSB
« Respuesta #191 en: 26 de Junio de 2007, 00:26:42 »
a ese medio segundo es el que me refiero, porque tarda eso? como podria hacer para que el tiempo fuera de casi instantaneo?

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #192 en: 26 de Junio de 2007, 02:37:15 »
Como se que preguntáis pq os gusta leer, te dejo la dirección del famoso USB in a Nutshell que habla del tema:

http://www.beyondlogic.org/usbnutshell/usb4.htm

Leete la parte que comenta la diferencia entre Bulk, Isochronous, Interruption, prestando especial atención a ese último.

saludos

Desconectado __ERoS__

  • PIC10
  • *
  • Mensajes: 22
Re: Proyecto PicUSB
« Respuesta #193 en: 27 de Junio de 2007, 08:07:25 »
Hola a todos

A ver si me podeis echar un cable, que llevo toda la mañana probadno y mirando cosas, y he llegado a la conclusion de que hago las cosas como la han hecho otros y a mi no me funciona del todo bien. Me explico:

Uso pic18f4550 y me comunico por usb con el pc. En el pc uso Linux, y la libreria libusb. La parte del pic la tengo lista, con el driver para transmision BULK, el pc me enumera correctamente el dispositivo y el main reducido del pic es:

char envia[3];
strcpy(envia,"con");
while(1)
{
      usb_task();
      usb_debug_task();

      if(usb_enumerated())  //Devuelve 1 si el dispositivo fue enumerado correctamente
      {
         Apaga(LEDROJO);
         Enciende(LEDVERDE);

         if(usb_kbhit(1))  //Devuelve 1 se hay un nuevo dato en buffer de recepcion
         {   
             printf("Tengo datos\n\r");
             i=usb_get_packet(1, recibe, 3); //cojemos el paquete de tamaño 3bytes del EP1 y almacenamos en recibe
             printf("%d\n\r",i);
             usb_put_packet(1, envia, 3, USB_DTS_TOGGLE); //enviamos el paquete de tamaño 3byte del EP1 al PC
         }
     }

Los printf es para ver por el puerto serie por donde se va metiendo.

En el pc el programa quitando lo de conectarse y demas y restringiendonos al envio de datos el codigo es:

char envio[3];
char respuesta[3];
strcpy(envio,"con");
  if (usb_bulk_write(usb_handle,1,envio,3,200)<0)
   {
      sprintf(errormsg,"Fallo al ejecutar usb_bulk_write. \n");
      return -1;
   }
 
    if (usb_bulk_read(usb_handle,1,respuesta,3,100)<0)
   {
      sprintf(errormsg,"Fallo al ejecutar usb_bulk_read. \n");
      return -2;
   }

Como veis es la mayor tonteria del mundo, pero es para probar. Envio 3 bytes del PC ("con") y el pic los lee, y me envia 3 bytes tb (con lo mismo), el pc lee esos 3 bytes y luego los imprime.

Resultado, cuando ejecuto el programa, envio correctamente, ya que por el puerto serie recibo:

Tengo datos (esta bien, usb_kbhit me devuelve 1)
3 (bien ya que imprimo los bytes que el recibido y desde el pc he enviado 3)

Y luego el pic envia sus 3 bytes, y en el pc los recibo y hago printf de lo recibido y me escribe en pantalla:
con

Y direis, pues esta bien y no falla, y es verdad. Funciona perfecto, pero solo la PRIMERA vez. Si ha continuacion vuelvo a ejecutar el programa (sin resetear pic ni nada) ya no funciona!!!!.  Y pasa que usb_bulk_write no da fallo (si no imprimiria su error) y el que da fallo es usb_bulk_read ya que me imprime : Fallo al ejecutar usb_bulk_read. En el pic resulta que no recibo nada (como? si usb_bulk_write no ha fallado....) porque por el peurto serie no recibo lo de Tengo datos. Es decir, se queda en el bucle while y entra en el if de usb_enumerated, pero nunca entra en el if de usb_kbhit.

Se que es un poco rollo lo que conte, no se si entendisteis algo, lo que sea preguntar y trato de explicarme mejor, pero el resumen es: funciona solo la primera vez, y ya nunca mas hasta que reseteo el pic, entonces vuelve a funcionar la primera vez y otra vez deja de ir hasta resetear.

Gracias de antemano y saludos
« Última modificación: 27 de Junio de 2007, 08:13:44 por __ERoS__ »

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #194 en: 27 de Junio de 2007, 09:12:15 »
Hola Eros,

Primero, enhorabuena pq así es como deben plantearse las dudas ;)

Creo que el fallo lo tienes aquí:

Código: [Seleccionar]
while(1)
{
      usb_task();
      usb_debug_task();

      if(usb_enumerated())  //Devuelve 1 si el dispositivo fue enumerado correctamente
      {

Si te das cuenta en mi código:

Código: [Seleccionar]
void main(void) {

   int8 recibe[3];                  //declaramos variables
   int8 envia[1];

   LED_OFF(LEDV);                   //encendemos led rojo
   LED_ON(LEDR);

   usb_init();                      //inicializamos el USB

   usb_task();                      //habilita periférico usb e interrupciones
   usb_wait_for_enumeration();      //esperamos hasta que el PicUSB sea configurado por el host

   LED_OFF(LEDR);
   LED_ON(LEDV);                    //encendemos led verde

   while (TRUE)
   {
      if(usb_enumerated())          //si el PicUSB está configurado
      {
         if (usb_kbhit(1))          //si el endpoint de salida contiene datos del host
         {
            usb_get_packet(1, recibe, 3); //cogemos el paquete de tamaño 3bytes del EP1 y almacenamos en recibe

Las tareas de inicialización:

   usb_init();                      //inicializamos el USB
   usb_task();                      //habilita periférico usb e interrupciones
   usb_wait_for_enumeration();      //esperamos hasta que el PicUSB sea configurado por el host

Solo se realizan una vez, antes del bucle while(true), ponlo como en el que tengo y supongo que así se solucionará tu problema.

un saludo


 

anything