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

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

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #270 en: 19 de Diciembre de 2007, 16:43:58 »
Trino: Desinstalaste el driver de WinPic antes de instalar el de PicUsb ?? Nose si los VID&PID y eso q no entiendo muy bien son iguales pero te lo digo porsiacaso. Te recomiendo q reagas todo de nuevo. Esos Warnings nos aparecen a todos, esos no te dan problemas como dice PalitroqueZ.

cocu3: Si se puede hacer q el Pic sea un "master" pero hace falta de un integrado especial (q aora no recuerdo cual es) para hacerlo HOST al pic. Vere si lo encuentro. Tb me dijieron que habia un ejemplo en assembler de hacerlo sin necesidad de "algo mas", pero esto no lo creo hasta verlo.


salu2 8)

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Proyecto PicUSB
« Respuesta #271 en: 20 de Diciembre de 2007, 08:52:15 »
Gracias PalitroqueZ y jeremylf por contestar.
jeremylf cuando has dicho lo de desinstalar los drivers me ha hecho pensar, resulta que cuando conecto el usb creo que windows me instala algun controlador... os adjunto un zip con las imagenes para que lo veais.
Y el caso es que lo desinstalo pero al volver a conectar el cable se vuelve a instalar automaticamente, con lo cual no puedo instalar los drivers del picusb. He probado a decirle "actualizar controlador" pero no lo instala.

Si alguien tiene alguna solución se lo agradeceria...

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #272 en: 20 de Diciembre de 2007, 09:57:37 »
Has recompilado el código de mi página? me refiero al .hex para el 18F2550, si no lo has recompilado, estás usando un cristal de 12Mhz y el condensador de Vusb?? Has respetado el orden en la conexión de D+ y D-??? Cuando conectas el dispositivo, te sale un cartelito en windows diciéndote el nombre que tiene (PicUSB)???

Saludos!

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #273 en: 20 de Diciembre de 2007, 14:57:20 »
No te aparecela pantalla para elegir el driver a instalar ? Entonces es tu computador creo. Has probado en otra?


salu2 8)

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5470
    • Electrónica Didacta
Re: Proyecto PicUSB
« Respuesta #274 en: 20 de Diciembre de 2007, 15:14:03 »
Trino.

cuando conectaste la primera vez el dispositivo te debió haber salido una asistente de configuración, cuando no lo consigue te avisa y además sale una checkbox (una cajita) diciendo que si deseas volver activar el asistente (algo asi no recuerdo bien) el asunto es que si lo activaste entonces no te aparecerá mas y cada vez que lo conectes, te aparecerá en administrador de dispositivos como desconocido.

Eso se arregla según lo explicó J1M editando el registro (tampoco recuerdo donde es  :()

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Proyecto PicUSB
« Respuesta #275 en: 20 de Diciembre de 2007, 15:28:59 »
Si, estoy usando el cristal de 12MHz (PLL3) y el condensador de Vusb. He conectado el cable verde a D+ y el blanco a D-, yo diria que todo esta correcto. Cuando conecto el dispositivo me sale el cartelito de nuevo hardware encontrado y seguidamente me dice que el nuevo hardware esta instalado y listo para usarse ¿?¿?
En el post anterior os he adjuntado unas imagenes de las propiedades del nuevo dispositivo.

Y claro, como ya esta instalado lo que hago es seleccionar la opcion de actualizar controlador. Yo selecciono la ruta de los drivers del picusb pero me dice que no ha encontrado otro software mas apropiado para el dispositivo... y supongo que será porque el otro que me instala (que no se yo cual será) tiene la firma de microsoft.

Jeremylf tambien lo he probado con un portatil pero me pasa exactamente lo mismo. No habria alguna forma de que windows no busque entre sus drivers para instalar el dispositivo y que me de a mi la opción de instalar el driver que yo quiera??

Es que no entiendo porque pasa esto, puede ser por el pic que estoy usando (18f4450)??

Muchas gracias a todos los que me estais ayudando!! ;)

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5470
    • Electrónica Didacta
Re: Proyecto PicUSB
« Respuesta #276 en: 20 de Diciembre de 2007, 15:41:30 »
He leido desde que posteaste el origen el problema y ahí va unos comentarios:

1.- cada driver está sujeto a una cadena de datos que hayas puestos en los descriptores del programa en el uC PIC.

2.- cuando todo va bien al conectar el pic al PC te debe aparecer el ícono del picusb que hizo el amigo J1M, es decir usar su driver porque puede haber otro programa donde le hayan cambiado los descriptores y entonces el .inf de ese driver no te servirá.

3.- si te aparece el cartelito cuando conectas el pic, supongo que no debe haber problemas con el hardware, porque de lo contrario no te saldría nada.

4.- las imagenes que pusiste slo dicen que no reconoce el device, que es el origen del punto 1 y 2

5.- desde la misma ventana de propiedades que muestras en el adjunto, prueba clicando desinstalar, y luego reconectas de nuevo.

6.- si al buscar el driver dice que no lo encuentra quiere decir que no lo reconoce, por lo tanto puede ser un problema con lo hablado en el punto 1 y 2.

Espero que puedas solucionar pronto el problema.
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #277 en: 21 de Diciembre de 2007, 03:45:07 »
J1M, tengo una pregunta tonta  :lol: Y esq como no estoy del todo muy familiarizado con el Visual C# no puedo "copiar" el programa echo en C# del PicUsb. Despues de crear un nuevo proyecto y hacer un copy/paste a todo lo necesario (PicUSB.cs, PicUSB.designer.cs, PicUSBAPI.cs) al iniciar la depuracion me aparece el error: "El codigo unsafe solo puede aparecer si se compila con /unsafe". Y se refiere a este codigo del PicUSBAPI.cs que en mi caso se llama Program.cs (el VS lo define asi por default):

Código: [Seleccionar]
using PVOID = System.IntPtr;
using DWORD = System.UInt32;

namespace PicUSB
{
    unsafe public class PicUSBAPI
    {
        #region Definición de los Strings: EndPoint y VID_PID
        string vid_pid_norm = "vid_04d8&pid_0011";

        string out_pipe = "\\MCHP_EP1";
        string in_pipe = "\\MCHP_EP1";
        #endregion

        #region Funciones importadas de la DLL: mpusbapi.dll

Exactamente aqui:
Código: [Seleccionar]
unsafe public class PicUSBAPI
Puedes decirme q mas, aparte de un copy/paste, debo de hacer para reacer por mi propia cuenta, por asi decirlo, el programa echo en VC# de tu proyecto PicUSB ?


Gracias.
salu2 8)

Desconectado Tulkas

  • PIC10
  • *
  • Mensajes: 14
Re: Proyecto PicUSB
« Respuesta #278 en: 29 de Diciembre de 2007, 16:00:45 »
Para jeremylf:

Creo que lo que puedes hacer es ir a tu proyecto de visual, ir a la pestaña proyecto, luego a "propiedades" y en "Build" activar la casilla de "allow unsafe code".

Para todos:

Por otra parte, si alguien me puede ayudar.  Estoy conectando un display alfanumérico por usb de 40x4 lineas y al conectarlo al pc todo funciona bien, cada vez que ejecuto alguna función relacionada con el usb lo envio al display, así que veo como al conectarlo al pc ejectua usb_init(), luego usb_task() y ahí se queda parado, luego windows me pide los drivers y al instalarlos en el display veo que se ha ejecutado wait_for_enumeration() y al final se mete en el blucle while(true), una vez ahí entra en la condición if(enumerated()), ahí dentro tengo puesto la condición if (usb_kbhit(1)), pues bien, me he dado cuenta que esta condición siempre se cumple, nunca se para ahí, entra siempre, sin tener ningún software en el pc, como si siempre detectara un dato recibido, a alguien le ha pasado esto.  Podeis ver que estoy usando como base el proyecto picusb.

Muchas gracias de antemano.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #279 en: 29 de Diciembre de 2007, 20:41:16 »
Gracias Tulkas! eso era.

Por tu problema, pues te digo q el usb_kbhit() siempre detecta un dato, que es el 0 (False) si esq no hay nada en el endpoint del pic y 1 (True) si lo hay. Aqui lo dice:
Código: [Seleccionar]
Fuete: usb.c
/****************************************************************************
/* usb_kbhit(endpoint)
/*
/* Input: endpoint - endpoint to check
/*
/* Output: TRUE if there is new data in RX buffer, FALSE if there is not.
/*
/* Summary: Similar to kbhit(), sees if there is new data in the RX USB buffers.
/*
/*****************************************************************************/

Ese 1 q se pone de parametro es para especificar el endpoint del pic a chekear.
Alemnos eso entiendo por tu pregunta.


Salu2, gracias  8)
« Última modificación: 29 de Diciembre de 2007, 20:45:03 por jeremylf »

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5470
    • Electrónica Didacta
Re: Proyecto PicUSB
« Respuesta #280 en: 04 de Enero de 2008, 14:14:41 »
Tengo una duda con el mchpusb.inf que usa el win para enumerar el nuevo dispositivo (llamese pic con módulo usb)

en la entrada Version siempre es el mismo GUID, independientemente del PID que se use

ClassGuid={4D36E97E-E325-11CE-BFC1-08002BE10318}

en cambio veo que el instalador que usa J1M (picusb.inf) es:

ClassGuid={4D36E911-E325-11CE-BFC1-08002BE10318}

¿existe algún patrón o fórmula para calcular el GUID a usar en estos drivers?, porque al fin y al cabo lo que se instala es mchpusb.sys que es el que usa el Win para acceder al usb





La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #281 en: 04 de Enero de 2008, 15:06:03 »
Hola Pedro, cambié el GUID con el fin de que no hubiera incompatibilidades con el original, la verdad no se si hay alguna fórmula para calcularlo e incluso ni si tan siquiera es necesario hacerlo, es decir, pueden convivir varios dispositivos bajo el mismo y sin incompatibilidades.

Saludos!

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #282 en: 17 de Enero de 2008, 17:15:21 »
Hola J1M.

Quisiera saber si se puede saber si hay algun dato por recibir en el endpoint del host pormedio del VC#. Esq necesito enviar datos del PIC a la PC continuamente y quiero hacerlo sin necesidad de enviar a cada rato de la PC al PIC un dato para decir q voy leer un dato ahi mismo.

Simulando SERIAL por USB, con la funcion usb_cdc_putc, podria ser un claro ejemplo de lo q quiero; el hiperterminal simplemente coje los datos q el pic le envia y los muestra, como si el hiperterminal leyera el endpoint de entrada y verificara si hay algun dato y si lo hay lo muestra.

Espero explicarme bien y puedan ayudarme.

Gracias.
salu2 8)

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #283 en: 18 de Enero de 2008, 12:39:51 »
hola jeremylf, poder se puede, aunque no se si hay una forma 'mejor' o más adecuada de la forma en que lo hice. Descarga el proyecto PicUSBNut, ahí el programa en VC# mostraba cuando se había pulsado una tecla. Básicamente lo hice con un timer ya que no encontré la forma de 'tratar una interrupción' mediante C#.

saludos!

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #284 en: 18 de Enero de 2008, 19:06:59 »
 :o Vaya, buena forma de hacerlo. No sabia q podia recurir a tal timer. Pero eso tb hace q la compu se lagee puesto q esta constantemente revisando el bufer  :?

Porcierto, esto:
Código: [Seleccionar]
if (receive_buf[0] == 1)
{
       switchst = receive_buf[1];
}
Es porq siempre lee 0 verdad?

Creo q lo hare asi, yaq si se quisiera tratar una interrupcion alguien tendria q indicar que uvo alguna y no se en quien mas pensar q la mpusbapi.dll
Esto me lleva a confirmar (como ya me han dicho) que esta dll de microchip es muy limitada.

Aunq por ahi lei que habian enralidad 10 funciones y no 6 en la dll, quiza por ahi este la solucion para tratar interrupciones o algo. Estare altanto.

Gracias J1M.
Un saludo 8)