desktop

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

Hola, alguien me podria ayudar para realizar una interrupcion que lea la linea de un archivo txt y guardarla en la memoria del pic18f4550? mi comunicacion es usb CDC.

No se lee por interrupciones, si usas una memoria SD, vas a tener que implementar el protocolo FAT16/32. En cuanto puedas leer/escribir archivos te puedo ayudar con tu consulta. Un saludo !
 
Hola, gracias por la pronta respuesta, disculpa no me supe explicar yo tengo un archivo de texto (contiene coordenadas X e Y en una linea y son alrededor de 300 lineas) que trato en labview y a traves de este software envio datos al pic (linea por linea) entonces quisiera realizar una interrupcion para saber cuando el pic reciba cada linea y esta guardarla en la memoria y poder leer los datos desde ahi. creo que de esta manera podria sincronizar los datos y darle tiempo al pic de procesarlos y realizar las tareas que se requieren con los mismos.

Un saludo.
 
Jonathan.:
Buen Día. Soy un principiante en el tema de los PIC´s y tomé este ejemplo que publicaste y lo trato de compilar con el CCS 4.084 que conseguí en la internet, para cambiarle el PIC18F2550 al PIC18F4550 que es el que tengo.
Y me arroja unos errores de compilación tales como .:
***Error 45 "APLICACION_HID.c" Line 74[35,36]:Subscript out of range

Aunque no es único error que arroja, sino que también lo hace en.:
Line 75, 87, 88,89, 92,93, 979 98, 105,106,107,108,110, etc,etc.

Es como si no tomara algunos de los archivos de definiciones.

Y al hacer doble click sobre el erro me lleva a la línea en donde se produce tal error y esta indicando que se produce en la definición de la variable.

Podrás ayudarme a ver que puede estar pasando.?
Gracias por tu ejemplo y por tu tiempo.

Atte
Fernando Lizarraga
Córdoba
Argentina
 
Buen Día. Soy un principiante en el tema de los PIC´s y tomé este ejemplo que publicaste y lo trato de compilar con el CCS 4.084

Ahí está el error, vas a tener que compilar tu proyecto con la versión 4.114, de lo contrario no te va a funcionar. Hay muchas diferencias entre versiones del mismo compilador.

Un saludo !
 
Que tal, he leido porfin las 85 pags que tiene este tema y descargue muchos de los ejemplos. Leí también por completo la guía que esta en la primera página y comence a probar el ejemplo de aplicación. Transcribi los 2 codigos (CCS y C#) para ver que es lo que hacían y entender que funcion se realizaba, sin embargo no logré que me compilara el de C#, por lo que use los mismos archivos que vienen en el paquete y de nuevo tuve problemas con el codigo en C#. Por lo que me cambié de computadora a una con XP de 32 bit(la que uso normalmente tiene W7 de 64 bit) y la compilación por fin resultó. Después me puse a armar en protoboard el circuito que viene, con los mismos valores y todo tal cual viene indicado con la excepción de que yo uso el 18F4550. Finalmente llego la hora de la prueba, grabé el archivo .hex original del paquete y lo compilé modificando unicamente la libreria para usar el 18F4550. Entonces ya me prepare para conectar a la computadora y sorpresa! me dice que el dispositivo no es reconocido:

http://imageshack.us/photo/my-images/708/nofunciona1.png/

y me manda lo siguiente en el apartado de configuracion:

http://imageshack.us/photo/my-images/263/nofunciona2.png/

entonces lo desconecte y probe a ver si eran los cables D+ y D- los que me arojaban el error y nada. Borre el Pic y volvi a grabarlo, pero no resulto. Revisé las conexiones y no encontré error.
Entonces aqui pongo las suposiciones de lo que creo que puede estar fallando y les pido por favor que me den su opinion al respecto:

1. Cambiar el 18F4550 por un 18F2550
2. Cambiar la configuración del VID/PID (aunque leí por ahí que no debe ser ya que EasyHID funciona con estos datos provistos por Mecanique)
3. Implementar la parte del conector ICSP, ya que no la tengo en el protoboard, primero por espacio y segundo porqe según yo solamente es para evitar montar y desmontar el PIC para grabar los programas.

Espero que me puedan ayudar con este problema... desde luego yo seguiré intentando solucionar este problema, leyendo para informarme sobre lo que puede estar sucediendo.

Les agradezco a todos los que han colaborado en este Foro y sobre todo a Moyano y Meta con los manuales que me han ayudado bastante, en verdad se les agradece.
 
Hola gelitojr. Yo tenía al principio el mismo problema, y resulta que en mi caso era tu segunda suposición, los valores de VID/PID . Simplemente lo que hice fue ir a la librería correspondiente, cambiar tan solo un valor en cualquiera, ya sea en el VID o en el PID (creo que cambié un 0 por un 1 o viceversa) y listo. Al parecer a mi me creaba conflicto porque ese VID/PID ya lo utilizaba proteus en las pruebas que estaba haciendo. Yo probé eso, y ahora me funciona a las mil maravillas, tanto que era para proyecto para la universidad y está funcionando full. Claro está, que yo lo hice con el 18f2550 pero no tienen muchas diferencias.
 
@Moyano: Respecto a la versión del compilador que uso, es la 4.108 :( voy a tratar de conseguir la versión que me comentas (4.114) y si no la consigo pues me tirare a un pozo :p jeje te agradezco la aclaración en ese sentido.

@Deego: mmm si se me ocurrió poner los que tiene microchip, solo que no lo hice por lo que comenté antes. Me gustaría saber a que te refieres con cambiarle cualquier número. Por ejemplo: el PID en el archivo de CCS es 0x1781 y el VID, 0x07D0. Me sugieres que a cualquiera de esos le cambie cualquier digito ?, ahora ese mismo digito tendría que modificarlo en el archivo de C#,no es así?

Otro detalle que se me paso decir es que estoy corriendo la aplicación de C# en visual 2010 profesional pero creo que no hay inconveniente respecto a eso... y en ese sentido, quisiera saber que es mejor o que se recomienda más, el C# o el VB ? ya que aun no he probado esos ejemplos de VB (los de los Leds y reles) en protoboard ni en codigo y pienso hacerlo para ver que no sean las benditas conexiones, que aunqe ya las revise varias veces pueden ser el factor de falla.

Saludos y gracias!
 
@Deego: mmm si se me ocurrió poner los que tiene microchip, solo que no lo hice por lo que comenté antes. Me gustaría saber a que te refieres con cambiarle cualquier número. Por ejemplo: el PID en el archivo de CCS es 0x1781 y el VID, 0x07D0. Me sugieres que a cualquiera de esos le cambie cualquier digito ?, ahora ese mismo digito tendría que modificarlo en el archivo de C#,no es así?

Tenés que usar si o sí los descriptores que se usan en mi proyecto, el driver que se usa en C# detecta solo el VID y PID que se describen en ese proyecto.


Otro detalle que se me paso decir es que estoy corriendo la aplicación de C# en visual 2010 profesional pero creo que no hay inconveniente respecto a eso... y en ese sentido, quisiera saber que es mejor o que se recomienda más, el C# o el VB ? ya que aun no he probado esos ejemplos de VB (los de los Leds y reles) en protoboard ni en codigo y pienso hacerlo para ver que no sean las benditas conexiones, que aunqe ya las revise varias veces pueden ser el factor de falla.

Saludos y gracias!

Mis pruebas están basadas en Vstudio 2008 ..no en el 2010. Puede ser que tengas un problema en el framework.
 
Que tal,

pues voy a intentar con todo idéntico, es decir: con el 18F2550, visual 2008, Windows XP, CCS 4.114 y mismo circuito. A ver si el problema es la configuración que estoy usando (visual 2010, ccs 4.108 y 18f4550). Una cosa moyano... si grabe el .hex que viene tal cual en tu proyecto de aplicación del manual usb hid con c#, porque necesitaría la versión 4.114 de CCS, si no la compilé ? solo es una duda... en fin, ya comentaré como me fue probando con la configuración original. Gracias!
 
hola, soy nuevo y en la escuela me pidieron seguir tu manual como practica para mi calificacion, tengo el codigo bien pero tengo una duda:
¿Se tiene que definir In_handle como UInt32 o es error mio que me aparezca "In_handle no aparece en el contexto actual"?
si me pudieras responder mi duda te lo agradeceria
 
¿Se tiene que definir In_handle como UInt32 o es error mio que me aparezca "In_handle no aparece en el contexto actual"?
Es una variable y tiene que estar definida como tal. En este caso es del tipo UInt32.

Si lees en el manual , en donde está explicado el software de control, aparece como va definido.

Un saludo !

gelitojr
Una cosa moyano... si grabe el .hex que viene tal cual en tu proyecto de aplicación del manual usb hid con c#, porque necesitaría la versión 4.114 de CCS, si no la compilé ?

Hay sutiles diferencias en las funciones de control y las tablas de descriptores. También yo incluí algunas modificaciones en dichas tablas como se muestra en los descriptores del ejemplo que viene con el manual.
 
En principio, tal cual baje el proyecto propuesto por Jonathan, en el firmware del PIC, sólo le modifiqué el PIC18F2550 a PIC18F4550, y luego lo compilé tal cual me aconsejó Jonathan en su respuesta a mi consulta, con el CCS 4.114 y compiló correctamente.
Con respecto al proyecto de Visual C#, tengo Visual 2010 y cuando abrí la solución con el VC2010 , me sugirió convertirlo a VC2010 en forma automática. Luego lo compilé con el VC2010 y lo probé.
Todo funciona bien.
Estoy trabajando en una portable con Win 7 32bits.
Afortunadamente no tuve más inconvenientes.
Gracias por el aporte Jonathan y por contestar rápidamente a mi consulta.
A todos los que participan de este hilo, un cordial saludo.

Atte
Fernando Lizarraga
Córdoba
Argentina
 
Todo funciona bien.
Estoy trabajando en una portable con Win 7 32bits.
Afortunadamente no tuve más inconvenientes.
Gracias por el aporte Jonathan y por contestar rápidamente a mi consulta.
A todos los que participan de este hilo, un cordial saludo.

Me alegro mucho de haberte ayudado, espero que salgas adelante con tu proyecto. Un saludo !
 
Hola que tal, tengo otra vez varias dudas, como es mi primer proyecto con visual c# es un poco complicado para mi, bueno mi duda son:

*¿Es necesario que este conectado el dispositivo para que el programa funcione? lo que pasa es que cuando lo corro sin dispositivo y muevo una barra PWM me sale este error "No se puede cargar el archivo DLL 'mcHID.dll': No se puede encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E)", ya agregue mcHID.dll al proyecto y a la carpeta donde esta.

*¿Como se pone el IN 1,IN 2, el min y el max? no viene en el tuto ya lo busque :(

*En el codigo de las barras PWM en el tuto aparece esto:
"private void PWM_CONTROL_1_ValueChanged"
pero en mi codigo me aparece asi:
"private void PWM_CONTROL_1_Scroll"
¿Con cual de los 2 lo dejo?
 
*¿Es necesario que este conectado el dispositivo para que el programa funcione? lo que pasa es que cuando lo corro sin dispositivo y muevo una barra PWM me sale este error "No se puede cargar el archivo DLL 'mcHID.dll': No se puede encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E)", ya agregue mcHID.dll al proyecto y a la carpeta donde esta.
Es un error común, tenés que agregar la .dll a la carpeta System32 de Windows. Con respecto a si el dispositivo tiene que estar conectado o no: El control por USB tiene 2 partes o elementos principales, el dispositivo USB (PIC) y el programa de control en visual C#.
Por lo antes dicho, es imprescindible que conectes el dispositivo para probar el programa.

*¿Como se pone el IN 1,IN 2, el min y el max? no viene en el tuto ya lo busque :(

No entiendo tu pregunta, por favor sé mas específico.

"private void PWM_CONTROL_1_ValueChanged"
pero en mi codigo me aparece asi:
"private void PWM_CONTROL_1_Scroll"
¿Con cual de los 2 lo dejo?

A fines prácticos es lo mismo, pero podes usar "private void PWM_CONTROL_1_ValueChanged".
 
Muchas Gracias, el programa ya esta completo y funcional, lo de IN 1,IN 2, min y max ya vi que eran labels solo para darle mejor apariencia =P.
Gran tutorial, te felicito.
 
Atrás
Arriba