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

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

Desconectado softjad

  • PIC10
  • *
  • Mensajes: 41
Re: Proyecto PicUSB
« Respuesta #165 en: 12 de Junio de 2007, 12:22:19 »
A mi solo me recibe el primer byte, los otros no se para donde me van. Me deberiam quedar en el array dados pero me aparecen zeros.
O sea, el pic envia [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] e en el pc me recibe [1,0,0,0,0,0,0,0,.......].

Que hago mal?!  :?

Alguien lo ha conseguido?

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #166 en: 13 de Junio de 2007, 10:05:27 »
softjad y jeremy, si solo te recibe un byte, estoy convencido que el fallo está en que no defines el tamaño de pipe adecuado, lo has cambiado para tus necesidades, o has dejado el que venía por defecto en el PicUSB???  Me refiero a estas lineas:

- En CCS:

#define USB_EP1_TX_SIZE    1                 //size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE    3                 //size to allocate for the rx endpoint 1 buffer

dice que desde el PIC se envía un byte, y se reciben 3. Si no cambiais estos valores, estais limitados a ellos, de ahí vienen vuestros problemas. El máximo que se puede establecer por endpoint de TX/RX es de 64bytes.

saludos

Desconectado softjad

  • PIC10
  • *
  • Mensajes: 41
Re: Proyecto PicUSB
« Respuesta #167 en: 13 de Junio de 2007, 10:23:05 »
xiissss, poes es esso mismo que tengo. lo voy alterar e testar.
Muchas gracias!!!
Salu2

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #168 en: 13 de Junio de 2007, 21:09:32 »
Yeee! era eso, gracias J1M !!!  :-/


Salu2 8) 8)

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Proyecto PicUSB
« Respuesta #169 en: 13 de Junio de 2007, 21:14:33 »
Lo más probable es que el problema sea lo que comenta J1M. Lo único que quería apuntar es esto, atención a la instrucción:

Código: [Seleccionar]
ReceivePacket(receive_buf, &RecvLength);en la variable RecvLength se guarda el número de bytes leídos, allí puedes verificar que hayas leído el número que esperas, que seguramente devolvió 1 en las ocasiones que no te ha funcionado como deseas (de allí ya puedes ver que la operación de lectura no es el problema :P).

Por otro lado, estoy haciendo una prueba para realizar una multiplicación en lugar de una suma. El resultado va en una variable de 2 bytes, así que la separo para meterla al vector de dos bytes que se envía, sin embargo, por más intentos que he hecho siempre recibo un 0 en el byte que representa la parte alta :(.
Código: [Seleccionar]
int16 mul;
mul = param1 * param2;
envia[ 0 ] = mul & 0xff;
envia[ 1 ] = ( mul & 0xff00 ) >> 8;
No importa lo que haga, al leer en la computadora el segundo byte siempre es 0 :(, ¿alguien conoce alguna particularidad del compilador CCS que sobre los corrimientos?
-----------------------------
Edit:
Ya lo arreglé, es sólo que el compilador me hizo pensar un poco. El problema es que al multiplicar dos int8 el resultado es un int8, no como en la PC ;), ni como en los Motorola :P, ya me iré acostumbrando al C en los PIC :D.
Código: [Seleccionar]
int16 mul;
int16 a, b;
a = param1; b = param2;
mul = a * b;

// o también
mul = ( int16 )param1 * ( int16 )param2;

Saludos.
« Última modificación: 13 de Junio de 2007, 21:39:45 por Geo »
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 #170 en: 18 de Junio de 2007, 13:50:35 »
Hola ok J1M voy adarle vueltas a este ejemplito, espero entenderlo al derecho y al reves pero tengo unas dudas que agradeceria que alguien me las aclarara
1. al principio estuve leyendo y no encontre para que sirve el PicUSB.h pq al unico que llamas es al usb.h
2.como puedo probar el programa del 2550 directamente desde el hyperterminal?
3. hablas de un driver que desafortunadamente no tengo, es un driver incluido en el picc??

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #171 en: 18 de Junio de 2007, 14:12:12 »
1.- Son los Descriptores, los llama el picusb.c
2.- Tendrías que instalar el driver CDC, es otro de los tres modos de funcionamiento que tiene el USB, el ejemplillo picusb está preparado para el modo DLL. En la carpeta de ejemplos del CCS tienes como usar el CDC.
3.- Si has bajado el ejemplo PicUSB de mi página, encontrarás todo lo que necesitas en el archivo comprimido y organizado por carpetas ;)

saludos y suerte en el mundo usb! :)

Desconectado juanpavela

  • PIC10
  • *
  • Mensajes: 37
Re: Proyecto PicUSB
« Respuesta #172 en: 18 de Junio de 2007, 14:38:00 »
listo, ya tengo todo para empezar pero me parece que probarlo con el hyperterminal no va a ser tan facil como creia, crei que simplemente podria ver que transmitia y si era posible enviarle un caracter, no es esto posible sin necesidad de ir a otro ejemplo?? o te refieres simplemente a que puedo utilizar tu ejemplo y cambiar el driver que viene con el CCS
gracias

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #173 en: 18 de Junio de 2007, 14:47:05 »
no, no puedes simplemente ver que se transmite, son protocolos distintos y por lo tanto incompatibles entre sí.

Si que puedes usar el hyperterminal como interface de usuario, pero como te digo para ello debes usar el USB en modo CDC, que lo que hace es instalar un puerto serie (COM) virtual, y entonces puedes usarlo como tal. Por ello con este modo podrías usar el hyperterminal, ya que se conecta a un puerto COM.

Primero tendrás que definir que aplicación quieres usar, después decidirte por uno de los modos de funcionamiento (DLL, CDC, HID)... busca por el foro que hay info de como usar uno u otro, que ventajas e inconvenientes presentan, etc.

saludos

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #174 en: 18 de Junio de 2007, 17:15:20 »
Hola. La otra ves J1M dijiste q solo se puede enviar 64 bytes por endpoint, no le tome mucha inportancia porq estaba en otra y ahora quisiera entenderlo un poco mas yaq es posible q necesite enviar mas datos del maximo q me dan.

Entonces, se que andas muy ocupado pero cuando tengas tiempo en pasarte por aca podrias decirme si puedo pasar mas de 64 bytes en un solo envio y como?, y q es eso de los endpoint q todavia no entiendo? Te agradeceria bastante.

Gracias.  :P

salu2 8) 8)

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Proyecto PicUSB
« Respuesta #175 en: 18 de Junio de 2007, 19:30:48 »
64 bytes es el límite por paquete para transferencias "bulk" en USB a full speed, por supuesto que se pueden enviar más, simplemente que tomarán más de una transacción. Pero de esto se encarga el controlador :).

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 J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #176 en: 20 de Junio de 2007, 07:53:15 »
Hola, perdona la tardanza, pero ayer tuve dos exámenes y esta tarde una exposición, asi que voy algo loco últimamente. Efectivamente 64 B/mS es el límite, pero el límite para un pipe o endpoint, supuestamente el PIC soporta hasta 16 pipes IN/OUT, estando uno de ellos dedicado exclusivamente al Control (en concreto el 0). De esta forma se consiguen los 1.5 MB/S que soporta nativamente el protocolo USB 2.0 FULL. Ahora bien, como activarlos (ya que la biblioteca de CCS solo lleva 2 activados (0 y 1)), la verdad no tengo ni idea, es algo que tengo pendiente en la pila de cosas que mirar. Quizá ahora que le meteré mano al driver para Vista aproveche para ver como se podría hacer.

Un saludo y a googlear... ;)

Desconectado manchaster

  • PIC10
  • *
  • Mensajes: 9
Re: Proyecto PicUSB
« Respuesta #177 en: 21 de Junio de 2007, 01:05:05 »
Hola a todos
estoy empezando con la comunicacion Usb -Pc y he usado tu programa pero noto que existe un retraso de cuando doy click al boton de prender/apagar led, a que se debe esto? no existe una forma de que lo haga casi al instante sin este delay? ya cheque el codigo para el Picusb para vc++ el cual tiene un delay en la funcion de mandar datos al Pic pero ni modificando se elimina este delay

ojala me puedan ayudar  gracias

Desconectado juanpab1980

  • PIC10
  • *
  • Mensajes: 1
Re: Proyecto PicUSB
« Respuesta #178 en: 21 de Junio de 2007, 14:03:44 »
Hola Geo!! y Hola a todos!!

Primero que todo un saludo a J1M!! este proyecto es de gran ayuda para muchos.

soy nuevo en el foro, en estos momentos estamos empezando un proyecto usando comunicación USB desde el pc al picusb.
La aplicación de software la vamos a realizar en dev-cpp usando la libreria FLTK.
Me gustaria que me explicaras un poco mas la parte del enlace con la DLL que mencionas que te funciono y como la puedo conseguir.

Gracias

Juan Pablo

Desconectado juanpavela

  • PIC10
  • *
  • Mensajes: 37
Re: Proyecto PicUSB
« Respuesta #179 en: 21 de Junio de 2007, 16:17:13 »
empeze hacer las pruebas con el ejemplo de redpic que es cdc usb, pero no me lo deja compilar me dice que la funcion "usb_request_get_data();" no esta identificada, si alguien tiene idea de que es lo que pasa espero me puedan ayudar.
gracias y seguire viendo que pasa