Control de dispositivos a través del módulo USB del PIC18F45/2550

Hola a todos, antes que nada deseo agradecerte Moyano Jonathan por haber subido el manual. Ahora bien, les comento los problemas que estoy teniendo al querer hacer funcionar el proyecto. El primero de ellos es que al conectar el pic a la pc, ésta no puede reconocerlo (aparece el cuadro de dialogo que dice "no se pudo reconocer dispositivo"), el otro es con visual c#, al ejecutar el programa todo parece andar bien, sin embargo al presionar el botón "conectar el dispositivo" aparece el siguiente error:
Excepción no controlada del tipo 'System.BadImageFormatException' en USB Visual C [sharp] HID.exe
Información adicional: Se ha intentado cargar un programa con un formato incorrecto. (Excepción de HRESULT: 0x8007000B).

por favor si alguien puede decirme como solucionar estos problemas se los agradeceré. Por cierto, tengo windows seven ultimate de 64 bits y visual studio 2010
 
Hola Meta, como te dije con la pagina que me pasaste solucioné el problema, o creo haberlo hecho, ya que el error dejó de aparecer al ejecutar el programa de c#, lo solucioné cambiando el destino de la plataforma del proyecto a x86. Sin embargo sigo sin poder probar el proyecto, ya que la pc todavía no reconoce al pic como un dispositivo hid. Probandolo en otra computadora con el mismo sistema operativo, esta si lo reconoce, por lo que por lo menos puedo concluir que las conexiones están bien hechas y no es problema de la placa. Es posible que tenga un problema de drivers o algo por el estilo?
 
Hola, mi duda es la que sigue: segun Moyano Jonathan la velocidad maxima del PIC es 64 Kbps o algo asi.
esto es una payasada, porque con PICS bien equipados, tienen UART que alcanzan mas velocidades que esa cosa.
hay otra forma de controlar al PIC y que realmente alcanze o se aproxime a los 12 Mbps que dice el fabricante que tiene?.
Diganme si se alcanzan esas velocidades para no perder el tiempo y estudiar mas del PIC, o si no lo alcanzan para bnuscar otro micro que si lo haga. gracias
 
Si lo alcanza. Buscas ejemplos en www.microchip.com
Esta idea de la interfaz no hace falta velocidades tan altas, es para controlas relés, no pasar archivos como si fuera un PenDrive.

A la próxima mide tus palabras a dirigirte a la gente del foro.
 
esto es una payasada, porque con PICS bien equipados, tienen UART que alcanzan mas velocidades que esa cosa.

1º - No hace falta expresarse de esa manera...
2º - Las velocidades de 64KB....se deben a restricciones de protocolo NO de hardware.

hay otra forma de controlar al PIC y que realmente alcanze o se aproxime a los 12 Mbps que dice el fabricante que tiene?.

NO, por restricciones de protocolo no se puede...aunque hay gente que ha logrado unos 2Mbps, usando Bulk...aunque sencillamente no se como lograron esa velocidad....es una cuestión de descriptores y las funciones de comunicaciones que hayas implementado.

Diganme si se alcanzan esas velocidades para no perder el tiempo y estudiar mas del PIC, o si no lo alcanzan para bnuscar otro micro que si lo haga

Habla de tu proyecto en concreto...no podemos recomendarte nada si no nos planteas tus dudas.

Un saludo !
 
Diganme si se alcanzan esas velocidades para no perder el tiempo y estudiar mas del PIC, o si no lo alcanzan para bnuscar otro micro que si lo haga. gracias

Prueba con los PIC32.

Por aquí puedes comentar sobre estos temas.

Participa tus proyectos de USB en www.mypic32.com.

Hay más marcas para controlar USB, más todo tipo de microcontroladores, estoy seguro que hay incluso más que la pequeña lista de abajo.





Saludo.
 
Hola, mi duda es la que sigue: segun Moyano Jonathan la velocidad maxima del PIC es 64 Kbps o algo asi.
esto es una payasada, porque con PICS bien equipados, tienen UART que alcanzan mas velocidades que esa cosa.
hay otra forma de controlar al PIC y que realmente alcanze o se aproxime a los 12 Mbps que dice el fabricante que tiene?.
Diganme si se alcanzan esas velocidades para no perder el tiempo y estudiar mas del PIC, o si no lo alcanzan para bnuscar otro micro que si lo haga. gracias

Hola, quería aclarar algunas confusiones. La limitación no es de 64kbps sino de 64 bytes/ms, es decir, 64x8 = 512kbps.
Esto vale para la clase de dispositivo USB estandar llamada CDC (communication device class). En USB hay otras clases estandar como el MSD (mass storage device), HID (human interface device), etc. También se puede definir una interfaz USB no estandar usando la cantidad/tipo de endpoints que uno especifico, son las "Vendor class" o clases propietarias.

La clase CDC en particular utiliza endpoints del tipo INT, que para USB2.0 tiene un tiempo de polling mínimo de 1 milisegundo. En USB el maestro pregunta a intervalos de tiempo regulares o no si el esclavo - nuestro PIC por ejemplo - tiene algo para transmitir. Si los intervalos de tiempo son o no regulares depende del tipo de endpoint: INT/BULK/ISO (no sé si hay alguno más). Se supone que la ventaja de usar INT es que uno tiene asegurado (en teoría) que el dispositivo esclavo es interrogado siempre cumpliendo con el tiempo especificado.

Por eso si uno usa endpoints bulk - donde no se asegura que el esclavo sea interrogado cada cierto tiempo, sino que se interrogará cuando el maestro pueda - esa limitación de tiempo no está. El esclavo se interrogará en intervalos de tiempo que dependerán de cuantos otros dispositivos hayan conectados al mismo bus. De todas formas no creo que interrogue a intervalos menores de 1ms, lo que sí puede pasar es que con bulk el esclavo le puede responder "tengo 256 bytes para enviarte" y esa transacción se puede llevar a cabo si el maestro no está cargado en el milisegundo que dura la transacción. Entonces en vez de transmitir 64 bytes que son el máximo para un endpoint INT (que se utilicen en clases CDC), puede transmitir una cantidad de información mayor; pero no hay garantía de que esa información llegue en el próximo milisegundo, o en los próximos 100 milisegundos. Todo dependerá de que otros dispositivos haya conectados al bus USB.

Bueno, seguramente hay imprecisiones en lo que dije antes, pero quería dar una idea general del por qué de las velocidades y limitaciones.
Siempre podés intentar definir una clase propietaria, pero se te va a complicar el diseño. Usando las clases estandar te asegurás que el día de mañana tu dispositivo no debería tener problemas en ser reconocido por Windows, Linux, MacOS, etc - porque los drivers ya los incorpora el sistema operativo debido a que son estandares ampliamente reconocidos. En cambio si haces un clase propietaria vas a tener que buscar drivers que funcionen para cada SO. En tal caso probá con libusb / libusb-win32 que al menos podría funcionar con Windows/Linux.
Saludos.
 
Ok perdon por alterarme pero estoy algo nervioso, pues lo queria para basicamente mandar señal de voz por USB al Labview, y pues las especificaciones son las mismas: 8 bits de resolucion @ 8Ksps, que son 64 Kbps, pero no se si se manden datos continuos o algo asi, porque entendi de la explicacion de Ardogan que no.
Por otro lado si me dicen que el PIC32 es bueno en eso del USB pues le dare una leida.
Bueno espero que no se hayan enojado conmigo y gracias a todos por sus respuestas
 
nietzche, como estás.

Te recomiendo que busques en los ejemplos de microchip, los leas y trates de entender poco a poco....a mi me tardó 2 años para poder sacar algo en claro con el USB....por eso te digo..si tienes paciencia lo vas a poder lograr. En este hilo del foro no creo que se te pueda ayudar por que está dirigido al control de dispositivo más que a las comunicaciones de alta velocidad para voz y datos....igual en lo que podamos te vamos a dar una mano.
 
muchas gracias Moyano Jonathan, la verdad es que el profesor nos esta enseñando el uso del labview con el 18f4550, ahora pues controlamos cosas sencillisimas, pero claro que necesito entenderle muy bien a este micro, si, estaba bastante emocionado de cambiar de rs-232 a USB. entonces me surgieron muchas ideas locas como velocidades grandes, ahora comprendo que es poco a poco, jajajajajaja.
Bueno de todas maneras gracias por el apoyo y paciencia.
 
Que tal buen tema pero tengo una consulta alguno ha maneja led o matrix de led por usb, para que me presten asesoría.

ldc o motores pap con teclado matrixal desde pc a traves de puerto usb.
 
Última edición:
Atrás
Arriba