Autor Tema: Recibir datos del PIC al PC por USB 18F2550  (Leído 4145 veces)

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

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Recibir datos del PIC al PC por USB 18F2550
« en: 08 de Julio de 2006, 16:39:44 »
Hola:

He podido enviar datos del PC al PIC y controlar un servo por puerto USB ahora el tema está que al ponerle a recibor datos al PC este se me queda tirado. Para ello he realizado un programa con C++ y las librerias USB2550 (mpusbapi.dll), para programar el PIC uso el CCS, haber si alguien me puede decir que le pasa, para ello os dejo el código que falla...

CCS:

.......

if (!send_timer)
         {
            send_timer=250;
           
            delay_ms(100);//Para ver si está enviando paqetes           
           
            usb_put_packet(1, out_data, 2, USB_DTS_TOGGLE); 
         
            if((usb_put_packet(1, out_data, 2, USB_DTS_TOGGLE)=TRUE))
            {
            LED_ON(LEDV);
            }
         }

         send_timer--;
         delay_ms(1);

      }

........

C++

/RX DE DATOS DEL PIC AL PC

      PVOID ReceiveData[64];
      PDWORD ReceiveLength;

      myUSB.ReceivePacket(ReceiveData,ReceiveLength);      
      
      m_Realimentacion=myUSB.ReceivePacket2(); //Lo único que hago es que cuando envie ponga un 5 en en dialogo
      
      UpdateData(FALSE);//Actualiza o refresca

donde la funcion RecievePacket2() es:

int USB::ReceivePacket2()
{
   int recibe1=0;
   int recibe2=0;
   PDWORD ReceiveLength=0;
   BYTE recibe_buf[64];      

   ReceivePacket(recibe_buf,ReceiveLength);

   recibe1 = recibe_buf[0];   
   recibe2 = recibe_buf[1];

   if(recibe1==0)
   {return 5;}

   return 1;
   
   USB::ClosePipes();   
}

Os recuerdo que puedo enviar datos y creo que tambien recibir pues el LED verde se me enciende y apaga pero al poner la fucncion RecievePacket2 se me queda tirado, creo que puede ser un desbordamiento de datos o algo por el estilo...

Espero que alguien haya utilizado lo mismo y algún esperto me pueda ayudar pues ya llevo dos semanas intentándolo.

See you.

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
Re: Recibir datos del PIC al PC por USB 18F2550
« Respuesta #1 en: 14 de Agosto de 2006, 22:31:40 »
Bueno otro friki mas en el foro, ya solo te falta jugar conmigo a travian(con eso ya sabes quien soy xD).

A mi tambien me costo conseguir la recepcion de paquetes en el PC cuando porte a Visual C++ el PicUSB de J1M en C#.

El problema no era por el codigo del PIC sino en el del programa en Visual, mirate el hilo del PicUSB y alli aparece el ejemplo de J1M pero pasado a visual, lo que hace es mandar dos numeros al PIC, este los suma y devuelve el resultado al PC, es muy ilustrativo.

Si no lo encuentras mandame un correo y te lo paso.

Saludos.

Tutoriales y proyectos de electrónica

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
Re: Recibir datos del PIC al PC por USB 18F2550
« Respuesta #2 en: 14 de Agosto de 2006, 22:44:07 »
Al final me has liado xD, prueba a poner este codigo sustituyendo al tuyo:

/RX DE DATOS DEL PIC AL PC

      BYTE ReceiveData[2];
      DWORD ReceiveLength = 2;

      myUSB.ReceivePacket(ReceiveData, &ReceiveLength);     
     
      m_Realimentacion=myUSB.ReceivePacket2(); //Lo único que hago es que cuando envie ponga un 5 en en dialogo
     
      UpdateData(FALSE);//Actualiza o refresca

donde la funcion RecievePacket2() es:

int USB::ReceivePacket2()
{
   int recibe1=0;
   int recibe2=0;
   DWORD ReceiveLength=2;
   BYTE recibe_buf[2];     

   ReceivePacket(recibe_buf, &ReceiveLength);

   recibe1 = recibe_buf[0];   
   recibe2 = recibe_buf[1];

   if(recibe1==0)
   {return 5;}

   return 1;
   
   USB::ClosePipes();   

Si no tira pasame el codigo y lo miro o mejor aun, quedamos y nos tomamos algo, que el otro dia me quede con las ganas.

Saludos.

Tutoriales y proyectos de electrónica