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

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

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Proyecto PicUSB
« Respuesta #15 en: 18 de Septiembre de 2005, 12:23:00 »
gracias por la info josemyzm, ya habia visto eso y así tal cual no se puede usar, estoy ahora con el windows_server_2003_sp1_ddk ... ya q todo pasa por crear una DLL y usarla desde el .inf, dentro del ddk hay un ejemplo de como crear la funcion ClassInstall necesaria para q se pueda acceder al instalador d la DLL para extraer los iconos... no se si me explicado del todo pero vamos... q espero en un par de dias poneos x aki el código en VC++ para la DLL y el nuevo .inf

saludos Giño


pd: podrias editar el primer post xa q no deforme el tema??? esq es un tanto putada leerlo así xDDD

graciasRebotadoSonrisa Gigante

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
RE: Proyecto PicUSB
« Respuesta #16 en: 18 de Septiembre de 2005, 14:26:00 »
Por cierto J1M, has puesto un ejemplo para que el PIC detecte la conexión al PC, mediante la detección de los 5V que suministra el USB, correcto.  Pero es necesario colocar la otra resistencia de 100K entre VBus y GND??

Un saludo

Saludos desde Logroño (España)

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Proyecto PicUSB
« Respuesta #17 en: 18 de Septiembre de 2005, 14:32:00 »
Gracias por editar el post Giño

Si, las dos resistencias son necesarias, yo aún no he probado la detección de conexion del cable, asiq no te lo puedo decir por experiencia, pero sí por el gráfico q muestran los de CCS (está un pokito deformado, se puede ver bien en el .C)

Saludos!

Desconectado pendexgabo

  • PIC16
  • ***
  • Mensajes: 222
    • www.SosaGabriel.com.ar
RE: Proyecto PicUSB
« Respuesta #18 en: 29 de Septiembre de 2005, 08:05:00 »
Buenas..
basandome en el proyecto de J1M (que particularmente me ayudo mucho.. muchas gracias) y en los ejemplos de microchip, empecé a ver si se podia hacer algo. mi idea es conectar un LCD a un 18f2550 y a travez de la PC enviarle los datos que quiero que se muestren en el LCD. en principio estoy realizando la aplicación para el host en C++ (utilice este lenguaje porque la pude encontrar varios ejemplos ).

ahora me surgen ciertas dudas que no interfieren con el proyecto pero que me gustaria resolver: en el caso de que tuviera mas de un dispositivo del mismo tipo, como hago para enviarle información al que yo deseo (por lo que estuve leyendo, uno puede saber la cantidad de dispositpvos conectados tenidendo el vID (vendor ID) y el pID (product ID) que le defini en el pic, pero esto no me distingue entre dos dispositivos iguales.

otra cosa: como debería hacer para que al pulsar un switch en el pic el host lo detecte? debe haber algun método por interrupciones, ya que si lo hago por polling tendría al host moy ocupado de gusto..

bueno, en cuanto tenga algo listo se los envio

estoy utlizando

C++ 6 Builder
CCS 2.227
y la famosa mcpusbapi.dll con los ejemplos de la misma

saludos

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Proyecto PicUSB
« Respuesta #19 en: 30 de Septiembre de 2005, 04:06:00 »
hola pendexgabo,

Respecto a como hacer diferencia entre dispositivos con el mismo vid y pid, en el funciones_dll.txt tienes la respuesta, te pego aquí la parte que te interesa:

///////////////////////////////////////////////////////////////////////////////
//   MPUSBGetDeviceCount : Returns the number of devices with matching VID & PID
//
//   Note that "input" and "output" refer to the parameter designations in calls
//   to this function, which are the opposite of common sense from the
//   perspective of an application making the calls.
//
DWORD _MPUSBGetDeviceCount(string pVID_PID);

///////////////////////////////////////////////////////////////////////////////
//   MPUSBOpen : Returns the handle to the endpoint pipe with matching VID & PID
//
//  All pipes are opened with the FILE_FLAG_OVERLAPPED attribute.
//  This allows MPUSBRead,MPUSBWrite, and MPUSBReadInt to have a time-out value.
//
//  Note: Time-out value has no meaning for Isochronous pipes.
//
//  instance - An instance number of the device to open.
//             Typical usage is to call MPUSBGetDeviceCount first to find out
//             how many instances there are.
//             It is important to understand that the driver is shared among
//             different devices. The number of devices returned by
//             MPUSBGetDeviceCount could be equal to or less than the number
//             of all the devices that are currently connected & using the
//             generic driver.
//
//             Example:
//             if there are 3 device with the following PID&VID connected:
//             Device Instance 0, VID 0x04d8, PID 0x0001
//             Device Instance 1, VID 0x04d8, PID 0x0002
//             Device Instance 2, VID 0x04d8, PID 0x0001
//
//             If the device of interest has VID = 0x04d8 and PID = 0x0002
//             Then MPUSBGetDeviceCount will only return "1".
//             The calling function should have a mechanism that attempts
//             to call MPUSBOpen up to the absolute maximum of MAX_NUM_MPUSB_DEV
//             (MAX_NUM_MPUSB_DEV is defined in _mpusbapi.h).
//             It should also keep track of the number of successful calls
//             to MPUSBOpen(). Once the number of successes equals the
//             number returned by MPUSBGetDeviceCount, the attempts should
//             be aborted because there will no more devices with
//             a matching vid&pid left.



Bien te explico un poco, para empezar tienes que llamar a esta funcion:

_MPUSBGetDeviceCount(string pVID_PID)

donde pVID_PID = vid_04d8&pid_0011;

esa función te devolverá un valor entero (DWORD) dependiendo del número de dispositivos encontrados con el mismo vid y pid; Si como preguntas tienes dos dispositivos conectados, el valor deberá ser 2. Si es así entonces (y aquí es donde tengo una pequeña duda de como enumerarlos) a la hora de llamar a la funcion:

_MPUSBOpen (DWORD instance, string pVID_PID, string pEP, DWORD dwDir, DWORD dwReserved);)

deberás elegir el dispositivo que quieres "controlar" seleccionandolo con "instance" el cual tomará un valor entero dependiendo de la numeración que tenga el dispositivo y ahora viene el problema, como saber como los ha enumerado el sistema operativo?? imagina que en vez de dos dispositivos (este caso quizá sea facil...) tenemos tres (dos iguales y uno diferente a ellos), pudiendo haber sido enumerados así:

Device Instance 0, VID 0x04d8, PID 0x0001
Device Instance 1, VID 0x04d8, PID 0x0002
Device Instance 2, VID 0x04d8, PID 0x0001

Como ves, tenemos los device 0 y 2 iguales, y el 1 distinto a estos. Esto es debido a que los 3 usan el mismo driver...

Para hacer distincion entre los dispositivos iguales simplemente tendriamos que llamar a la funcion open de la siguiente forma:

- Para el dispositivo 0
_MPUSBOpen (0, string pVID_PID, string pEP, DWORD dwDir, DWORD dwReserved);) (esto es lo q yo tengo hecho en el ejemplo, ya que doy por supuesto de q solo va a haber un PicUSB conectado al PC)
- Para el dispositivo 2
_MPUSBOpen (2, string pVID_PID, string pEP, DWORD dwDir, DWORD dwReserved);)

Pero claro, aquí está el problema... como he dicho antes... como saber como los ha enumerado el sistema operativo???

Si solo tenemos dos dispositivos y ademas son iguales, usando el mismo driver tendríamos esto:

Device Instance 0, VID 0x04d8, PID 0x0001
Device Instance 1, VID 0x04d8, PID 0x0001

Aquí no habría ningun problema (que es lo q tu preguntabas realmente ;))

- Para el dispositivo 0
_MPUSBOpen (0, string pVID_PID, string pEP, DWORD dwDir, DWORD dwReserved);)
- Para el dispositivo 1
_MPUSBOpen (1, string pVID_PID, string pEP, DWORD dwDir, DWORD dwReserved);)

De todas formas esto no lo he probado, asiq no te puedo garantizar 100% q funcione... cuestion de hacer pruebas ;)


Respecto a tu segunda pregunta:

Pon ese switch en una pata con interrupción externa, como puede ser RB0... cuando entres en la rutina de interrupción de esa pata, haz lo q tengas que hacer con el USB. Así el PIC en su estado "normal" no estará pendiente de ese Switch ni el HOST de la información por USB, ya q no estará activo.

Saludos ;)

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Proyecto PicUSB
« Respuesta #20 en: 03 de Octubre de 2005, 08:02:00 »
Wenas os dejo por aquí el Driver modificado para el PicUSB.

La modificación consiste en añadir en el Administrador de Dispositivos del Panel de Control una clase (ya no aparecerá dentro de Otros Dispositivos...) con un Icono Personalizado (se acabó lo del simbolo de exclamación feo Vacilando)

http://perso.wanadoo.es/j1m/varios/driverdll.zip

Dentro del .zip encontrareis dos archivos:

- driver.zip : El driver en sí, no lo he probado con Windows98 solo con el XP, si alguien tiene aún ese sistema operativo que me diga como va la cosa...

- classinstaller.zip : Encontrareis el Código Fuente para crear la DLL necesaria para añadir el icono personalizado al Administrador de Dispositivos. De esta forma podreis cambiar el Icono (q mirad mirad q bonico me ha kedao ^^ jejeje), la clase que exporta, etc. Para poder compilarla necesitais las DDK (Development Driver Kit) de Windows XP ó 2k3, yo he utilizado esta: windows_server_2003_sp1_ddk.iso Angelito

Os dejo una imagen de lo q os debería aparecer en el Administrador de Dispositivos si todo se ha instalado bien.


Y bueno para cualquier duda por aquí andamos.

Saludos Giño

Desconectado pendexgabo

  • PIC16
  • ***
  • Mensajes: 222
    • www.SosaGabriel.com.ar
RE: Proyecto PicUSB
« Respuesta #21 en: 03 de Octubre de 2005, 08:57:00 »
J1M impresionante macho jaja. muy buen trabajo, gracias por la explicacion de arriba, cuano tenga alguna novedad te voa a comentar como va esto.
te tengo una consulta, el windows_server_2003_sp1_ddk.iso lo bajaste de la mula? porque lo busque por el download de microfuck y no lo encontre..

bueno gracias y saludos!!!

gabriel

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Proyecto PicUSB
« Respuesta #22 en: 03 de Octubre de 2005, 14:15:00 »
sip, esq es muy cara y para lo q iba a hacer............. RollEyes

saludos! Giño

Desconectado GJM2000

  • PIC10
  • *
  • Mensajes: 3
RE: Proyecto PicUSB
« Respuesta #23 en: 18 de Octubre de 2005, 20:42:00 »
invasor Estoy un poco atrazado, dónde puedo conseguir el CCS v. 3.227 o superior???
Yo tenía una versión que no sé dónde quedó y no lo encuentro en la web.
Gracias

gerardomenta@hotmail.com
gerardomenta@yahoo.com.ar


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Proyecto PicUSB
« Respuesta #24 en: 18 de Octubre de 2005, 23:42:00 »
Lo puedes conseguir aquí: http://www.ccsinfo.com/ccscorder.shtml

Estos son los precios:
PCB Compiler for 12-bit parts - $125
PCM Compiler for 14-bit parts - $125
PCH Compiler for PIC18 parts - $175
Integrated Development Environment


PCW Professional Package (Both PCB and PCM) - $350
PCWH Professional Package (PCB, PCM and PCH) - $425
PCH Add-on for existing PCW users - $75
Coming Soon: dsPIC

Desconectado BAFAN

  • PIC10
  • *
  • Mensajes: 19
RE: Proyecto PicUSB
« Respuesta #25 en: 25 de Octubre de 2005, 09:58:00 »
Hola tengo una duda del programa que utiliza el PicUSB (el Visual C#).
Mi duda es como cojer los datos por interrupcion. O sea, estar haciendo cualquier otra cosa en el programa de C# y cuando el PIC mande los datos me cree una interrupcion en el programa y yo ya coja los datos y los trate.  En el pic ya lo tengo hecho pero me falta saber como hacerlo en el PC.
Si sabeis como hacerlo seria d gran ayuda muuuuchas gracias.Angelito
Un saludoGiño

Desconectado alesaurio

  • PIC10
  • *
  • Mensajes: 3
RE: Proyecto PicUSB
« Respuesta #26 en: 29 de Octubre de 2005, 22:56:00 »
saludos yo ya consegui el ccs 3.227 en el emule, pero me pidio unos archivos para registrar el programa, no los tenía pero igual finalizé la instalación... pero tengo un problema no puedo compilar ningun archivo, se debe a que no tenia los archivos mencionados? es decir debo necesariamente comprar el ccs? existe alguna solucion?

Desconectado Flugplatz

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 279
    • Mi canal de YouTube
RE: Proyecto PicUSB
« Respuesta #27 en: 03 de Noviembre de 2005, 10:40:00 »
Hola a todos ...

J1M ... este es un tema muuyyy interesante y seguramente gracias a este fenomenal proyecto muchos podremos empezar a usar el tema del USB basado en microcontroladores Pic.

Yo tengo muchas ideas y efectivamente, segun presentas este topic, una compilacion de la base necesaria para empezar a implementar circuitos con USB, es una excelente idea. Yo me he mirado el tema cien veces, pero entre que todo esta en ingles, y que la cosa es bastante compleja, es extraordinariamente dificil empezar a trabajar con PIC y USB.

Aparentemente, y siguiendo tu proyecto, creo que esta vez si que voy a conseguir aclararme con el asunto.

No dudeis en que si consigo algo, lo expondre claramente en este estupendo foro.

Un saludo

Mario

PD: Segun escribo esto ... dia 3 de Noviembre de 2005 a las 17:35 (hora de Madrid) parece que los de Wanado se han cepillado tu pagina, y por lo tanto, no he podido ver los archivos que se necesitan para empezar.
Mi canal de YouTube

Un saludo desde Madrid

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Proyecto PicUSB
« Respuesta #28 en: 04 de Noviembre de 2005, 04:09:00 »
Ya vuelve a estar online, parece que fue un fallo de wanadoo... me alegro que te haya servido para "exar a andar"

saludos Giño

Desconectado Flugplatz

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 279
    • Mi canal de YouTube
RE: Proyecto PicUSB
« Respuesta #29 en: 04 de Noviembre de 2005, 05:27:00 »
Gracias Mil ... don Jaime F (si me permites llamarte por tu nombre) Sonrisa

Este topic es como una bomba de relojería ... Sonrisa. Seguro que a partir de él y tu prometedor proyecto va a surgir una verdadera Brainstorm ...

Tengo un montón de ideas para el USB, y cuando consiga implementarlo no dudéis en que voy a poner todo lo que vaya deduciendo por aquí. Me parecéis todos una gente verdaderamente acojonante, y aunque yo soy mayor, gente como vosotros hace que aun tenga algo de esperanza sobre la capacidad del ser humano.

un saludo

Mario
Mi canal de YouTube

Un saludo desde Madrid


 

anything