TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: JOELUIS en 15 de Junio de 2011, 12:47:34

Título: ENUMERACION PIC18F85J50
Publicado por: JOELUIS en 15 de Junio de 2011, 12:47:34
Estoy tratando de enumerar el PIC18F85J50 en mi PC con Windows XP, con base en el software de palitroquez, pero no he podido. Ya guardé el mchpusb.inf en una carpeta, y desarrollé el firmware con los archivos PIC18_USB.h, USB.c y usb_desc_scope.h. Además utilicé las rutinas usb_init();usb_task();  y usb_wait_for_enumeration() en el firmware. Pero no es reconocido por mi PC. Pueden sugerime algo??

Título: Re: ENUMERACION PIC18F85J50
Publicado por: Suky en 15 de Junio de 2011, 12:59:49
Deberías colocar el código que estas implementando y el esquema del hardware.


Saludos!
Título: Re: ENUMERACION PIC18F85J50
Publicado por: JOELUIS en 15 de Junio de 2011, 13:27:38
Adjunto archivos. Gracias
Título: Re: ENUMERACION PIC18F85J50
Publicado por: Suky en 15 de Junio de 2011, 13:31:55
Un cristal de 48MHz? El máximo posible es 20MHz. De ahi configurar el PLL para llevarlo a 48MHz.


Saludos!
Título: Re: ENUMERACION PIC18F85J50
Publicado por: JOELUIS en 15 de Junio de 2011, 13:38:56
Pregunté a technical support en www.microchip.com y me informaron que se podía usar un XTAL de 48MHZ. Porqué piensas que 20 Mhz es el límite? Gracias
Título: Re: ENUMERACION PIC18F85J50
Publicado por: Suky en 15 de Junio de 2011, 13:44:10
En el datasheet lo dice...  :shock: Otra cosa es usar un oscilador externo  :?
Título: Re: ENUMERACION PIC18F85J50
Publicado por: JOELUIS en 15 de Junio de 2011, 13:47:10
Bueno dejame tratar y te cuento. gracias
Título: Re: ENUMERACION PIC18F85J50
Publicado por: manwenwe en 15 de Junio de 2011, 15:14:40
En el datasheet lo dice...  :shock: Otra cosa es usar un oscilador externo  :?

Eso dice el datasheet, máxima frecuencia en HS: 24Mhz (página 41)

perdonad mi ignorancia :?: que es un oscilador externo? un IC que genera una onda cuadrada de cierta frecuencia?

Asias.

1saludo!
Título: Re: ENUMERACION PIC18F85J50
Publicado por: Suky en 15 de Junio de 2011, 15:22:40
En el datasheet lo dice...  :shock: Otra cosa es usar un oscilador externo  :?

Eso dice el datasheet, máxima frecuencia en HS: 24Mhz (página 41)

perdonad mi ignorancia :?: que es un oscilador externo? un IC que genera una onda cuadrada de cierta frecuencia?

Asias.

1saludo!

Exactamente. Un cristal solo no hace nada sin la re-alimentación que conforman el oscilador  ;-)

Saludos!
Título: Re: ENUMERACION PIC18F85J50
Publicado por: JOELUIS en 15 de Junio de 2011, 15:26:31
Ya cambié el Xtal a 20Mhz , así como la configuración a HSPLL y PLL5. El sistema todavía no es reconocido por el PC. Alguna otra sugerencia??
Título: Re: ENUMERACION PIC18F85J50
Publicado por: Suky en 15 de Junio de 2011, 15:33:44
El main es solo eso? Hay que crear un bucle donde la función task_usb() sea llamada frecuentemente, ect... Revisa los ejemplos varios posteados en el foro.


Saludos!
Título: Re: ENUMERACION PIC18F85J50
Publicado por: JOELUIS en 15 de Junio de 2011, 15:37:53
Por lo pronto solo quiero que sea reconocido por el PC. Llamar frecuentemente la función task_usb() me ayuda a este objetivo? Saludos. Gracias
Título: Re: ENUMERACION PIC18F85J50
Publicado por: Suky en 15 de Junio de 2011, 15:45:21
Por lo pronto solo quiero que sea reconocido por el PC. Llamar frecuentemente la función task_usb() me ayuda a este objetivo? Saludos. Gracias

Claro... Conviene que tengas una idea de como trabaja USB, buscar información en el foro como para que tengas idea como es el proceso de enumeración y comunicación utilizando USB, ect...


Saludos!
Título: Re: ENUMERACION PIC18F85J50
Publicado por: manwenwe en 15 de Junio de 2011, 16:05:18
Por lo pronto solo quiero que sea reconocido por el PC. Llamar frecuentemente la función task_usb() me ayuda a este objetivo? Saludos. Gracias

jejeje Yo tp había leido el código: tiene pinta de un reset infinito XD.

Tienes que hacer "polling" hasta que el Host te enumere...

1 saludo.
Título: Re: ENUMERACION PIC18F85J50
Publicado por: JOELUIS en 15 de Junio de 2011, 16:28:44
Tengo un ejemplo en modo CDC y otro en modo Bulk. En el modo CDC se cicla en la rutina usb_task() como recomiendas. Pero en el modo Bulk no, solamente revisa usb_enumerated para recibir datos y depues enviar. Cual modo de transferencia me sugieres para iniciar?
Título: Re: ENUMERACION PIC18F85J50
Publicado por: manwenwe en 15 de Junio de 2011, 17:01:20
Tengo un ejemplo en modo CDC y otro en modo Bulk. En el modo CDC se cicla en la rutina usb_task() como recomiendas. Pero en el modo Bulk no, solamente revisa usb_enumerated para recibir datos y depues enviar. Cual modo de transferencia me sugieres para iniciar?

No programo en CCS por lo que no estoy seguro de que hace cada función. ¿que hace la última función :"usb_kbhit"? Devuelve el control al main??? Si es así micro se reseteará: ESO NO DEBERÍA PASAR.

En cuanto al modo (clase) USB: hay muchas clases especificadas por USB. En CCS no lo sé pero C18/C30/C32 soportan unas cuantas: CDC, HID, Isochronous, bulk, MSD, etc. el utilizar una u otra depende de la aplicación que quieras implementar: ¿cual es esta aplicación? ¿un raton? ¿un teclado? ¿una memoria? ¿un altavoz?, etc....

1saludo
Título: Re: ENUMERACION PIC18F85J50
Publicado por: JOELUIS en 15 de Junio de 2011, 17:27:08
Gracias Manwenwe por tus comentarios. Mi único interés en este momento es enviar y recibir bytes entre mi PC y el PIC18F85J50. No hay dispositivos externos. Saludos
Título: Re: ENUMERACION PIC18F85J50
Publicado por: JOELUIS en 15 de Junio de 2011, 17:38:40
Te agradecería Manwenwe si le hechas un vistazo al nuevo software para ver si está correctamente ciclado.  Tiene comentarios en las instrucciones. Gracias .Saludos
Título: Re: ENUMERACION PIC18F85J50
Publicado por: manwenwe en 16 de Junio de 2011, 03:29:32
hola,

primero pedir disculpas: he mezclado el concepto de clase con el de modo de transferencia. Isochronous y bulk son modos de transferencia. CDC, HID, MSD, etc. son clases.

En cuanto al código. Ya digo que no conozco la librería CCS pero en principio parece correcto. Has cambiado el oscilador a HS+PLL y parece que has deshabilitado HID por lo que supongo que trabajas en CDC...

¿No te funciona?. Si es así prueba en HID... a ver si tu PC al menos reconoce un puerto COM virtual...

1saludo