Autor Tema: Módulo USB del 18Fx550  (Leído 22826 veces)

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

Desconectado kyo_Meros

  • PIC10
  • *
  • Mensajes: 32
RE: Módulo USB del 18Fx550
« Respuesta #30 en: 16 de Julio de 2005, 16:41:00 »

Bueno aun no pruebo el EasyHID... Je je...

Lo que me agradaria comentar... es sobre el PicBasic Pro 2.46 y el MicroCode Studio 2.3.0.0... ya que atravez de ambos... me han funcionado dos ejemplos que vienen en el PicBasic Pro 2.46... sobre la comunicacion USB <=> PC...

El PicBasic Pro 2.46 tiene 3 ejemplos para establecer dicha comunicacion

1) CDC de microchip
2) HID... un programita que hace mover el cursor en circulos
3) Jan Axelson demo program... este no lo he probado... je je...

Pero bueno... he optado por elaborar mis programas en este PicBasic Pro 2.46, ya que tambien he obtenido resultados satisfactorios con el ejemplo del C18 con el CDC, pero este C18 se me hace mas "complicado"...

Ademas de que el EasyHID, te genera el codigo solo para el PicBasic Pro y para el C18 no...

Espero que prueben este PicBasic Pro 2.46... para intercambiar ideas pronto...

Atte... Oscar M R

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
RE: Módulo USB del 18Fx550
« Respuesta #31 en: 16 de Agosto de 2005, 18:41:00 »
Hola. Yo tambien llevo un tiempo liado con el tema.

Mis intentos van con EasyHid + PicBasic Pro  2.46 + Delphi   pero tengo algún problema a la hora de la conexión con el PC LloricaLloricaLloricaLlorica

Lo primero indicar que el hardware y la parte de programa que lo controlan funcionan perfectamente; pic + (su circuiteria con cristal de 4MHz) + ventilador controlado por PWM + Led para indicar los pasos del programa.  Todo OK.
Hasta aquí un par de apuntes a los que tengan problemas o vayan a experimentar:
1 - Importantísimo el Condensador de desacoplo en la alimentacion del PIC. Nunca habia tenido problemas hasta ahora.
2 - No sobreescribir los ficheros generados por EasyHid para el PicBasic. Si vamos a modificar algo mejor editarlo y hacer copy&paste porque si no dará problemas el compilador con los puñeteros nombres de ficheros MSDOS.


El problema que tengo es a la hora de conectar la tarjeta al USB: "Win98 SE" lo detecta y pide los drivers típicos, y ahí comienza mi calvario. ¿Como se procede???? Me pide un fichero *.cat  pero todo lo que tengo es un *.INF en el que sé modificar los valores PID & VID. El *.cat que tengo está vacío y cuando lo selecciono y acepto todo parece correcto pero no consigo acceder a la tarjeta.
He probado el ejemplo de raton que viene con PicBasic, el que hace circulitos el raton, y va perfecto, pero ahí al pedirme el driver me sirve el *.INF que hay en el directorio USB18 de PicBasic.

Creo que lo ideal es el programa de ejemplo USBJadem.bas, de Jan Axelson, que viene tambien con PicBasic (recibe dos numeros por USB, los incrementa en una unidad y los devuelve de nuevo al PC), pero ahora me falta el programa para PC, lo descargué de algún sitio para ya no sé de donde.

Si alguien me puede echar un cable se lo agradecería porque me estoy poniendo cabezon con esto y me está amargando mis primeros dias de vacaciones Muchas risas

Saludos y gracias.

Saludos desde Logroño (España)

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
RE: Módulo USB del 18Fx550
« Respuesta #32 en: 16 de Agosto de 2005, 18:55:00 »
Por cierto LordLafebre,  si tienes algún problema con el código de estos chips abre el fichero USBJadem.bas que está en el directorio USB18 del PBPro2.46, verás que simple es (en principio).
Solo tiene USBInit al principio para inicializar, y luego un bucle en el que se usa USBIN para recibir datos y USBOUT para enviarselos al PC.
Lo único a tener en cuenta es que hay que llamar a USBSERVICE repetidamente, que no pasen más de 10msg aprox. entre cada llamada (creo).

La parte del PIC es muy facil si tienes experiencia y EasyHid te lo deja listo, solo hay que hacer un retoque si te falla al compilar (suele indicar que falta una libreria)

Un saludo.

Saludos desde Logroño (España)

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Módulo USB del 18Fx550
« Respuesta #33 en: 16 de Agosto de 2005, 19:05:00 »
Hola:

josemyzm pues tu estas con mucha mas suerte que yo... yo ni siquiera he podido compilar el ejemplo de USBJADEM.BAS que es el que viene en los ejemplos de ayuda y es este:

" This USB sample program implements the functionality of the Jan Axelson
" demo which accepts two numbers from the host, increments each and sends
" them back.  An application running on the host sends the numbers and
" displays the returned values.

"  Compilation of this program requires that specific support files be
"  available in the source directory.  You may also need to modify the
"  file USBDESC.ASM so that the proper descriptor files are included. For
"  detailed information, see the file PBPUSB18USB.TXT.

buffer   Var   Byte[8]
cnt   Var   Byte

Define  OSC     48


   USBInit

" Wait for USB input of 2 numbers.
idleloop:
   USBService   " Must service USB regularly
   cnt = 8      " Specify input buffer size
   USBIn 1, buffer, cnt, idleloop

" Message received.  Increment the bytes and send them back.
   buffer[0] = buffer[0] + 1
   buffer[1] = buffer[1] + 1

outloop:
   USBService   " Must service USB regularly
   USBOut 1, buffer, 2, outloop   " Send the bytes back

   Goto idleloop   " Wait for next buffer

cuando lo compilo me dan los siguientes errores:

ERROR: Macro USBINIT? not found in macro file.
ERROR: Macro USBSERVICE? not found in macro file.
ERROR: Macro USBIN? CBBL not found in macro file.
ERROR: Macro USBOUT? CBCL not found in macro file.

Antes tenia un problema de direccionamiento en la carpeta en la cual estaba mi PBP pero ahora la raiz es la correcta pegue la carpeta en C:PBP y ahora me dan esos errores.... yo no puedo pasar de alli... LloricaLloricaLloricaLlorica

Has tratado de conectarlo en XP, alli mismo dice que ha sido probado bien en XP...!

PD: Alguien tiene idea de por que esos errores...???????

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
RE: Módulo USB del 18Fx550
« Respuesta #34 en: 16 de Agosto de 2005, 19:27:00 »
RebotadoRebotadoRebotadoRebotado Parece que marcha, he hecho magia con los drivers y parece que va. Tengo que reinicar el PC por problemas y ahora te cuento más.

Por fin.

Saludos.
Saludos desde Logroño (España)

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
RE: Módulo USB del 18Fx550
« Respuesta #35 en: 16 de Agosto de 2005, 19:50:00 »
El caso es que he editado las propiedades del dispositivo (todo desde el panel de windows) y le he dicho que coja el driver que me instalo para la prueba del fichero que simula el raton, el del movimiento en circulos, y voilá, ahora tengo comunicacion porque el led se me cambia de estado en los intercambios de datos.  Solo falta saber como leches se pone el driver a la primera.

Respecto a tu problema, pues a mi tambien me pasaba eso en las compilaciones; yo deje el pic basic donde estaba y edité el fichero PBPUSB18.LIB , que es el que me daba el problema y lo tienes en la carpeta del picbasic, en este fichero tienes al principio:
include "....................   PBPPIC18.LIB"

editas esa línea y le dices donde tienes el archivo que te falta, PBPPIC18.LIB

en mi caso queda así:
include "Archivos de programaPB Pro 246PBPPIC18.LIB"

Si has estado retocando los ficheros te aconsejo que vuelvas a meter el Picbasic, como ya comenté me daba un monton de problemas tambien con los nombres de los ficheros en MSDOS.

Voy a seguir jugando, que se comunica pero sigue faltando algo. RebotadoRebotadoRebotado
Saludos desde Logroño (España)

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
RE: Módulo USB del 18Fx550
« Respuesta #36 en: 16 de Agosto de 2005, 20:12:00 »
Este es el programa Basic, de lo más simple (generado por EasyHid y completado despues). Uso el PIC18F2455 y controlo un ventilador por PWM y un led que cambia de estado en las comunicaciones. El montaje final es para un amigo que quiere hacerle modding al PC y controlar 5 ventiladores y no se que más.


Codigo:

DEFINE OSC 48          
"DEFINE LOADER_USED 1

USBBufferSizeMax   con 8  " maximum buffer size
USBBufferSizeTX    con 8  " input
USBBufferSizeRX    con 8  " output

" the USB buffer...
USBBuffer        Var Byte[USBBufferSizeMax]
USBBufferCount   Var Byte

velocidad       var byte
x               var word

TRISB = 0

LED1    var     PORTB.7    " ponemos un Led entre PB7 y masa

high led1                   "enciende y apaga led para ir viendo los pasos
pause 1000               " del programa
low led1

HPWM 1,50,2000       " comprobar que el control del ventilador funciona
pause 1000

" ************************************************************
" * main program loop - remember, you must keep the USB      *
" * connection alive with a call to USBService every couple  *
" * of milliseconds or so...                                 *
" ************************************************************
usbinit " initialise USB...

   velocidad=127
   USBBuffer[2]=127
   HPWM 1,127,2000                      " ponemos PWM a 50%   (127)
   
ProgramStart:

for x = 0 to 1000                          " bucle con una pausa total de 1 segundo
    pauseus 1000                          " para ver cambiar el estado del led.
    USBService                            " Se hace así para llamar a USBService cada
next x                                    " 1 mseg.

toggle led1                               " cambia estado del led  ON/OFF
   
   gosub DoUSBIn                         " leemos datos


   velocidad=USBBuffer[2]            " la velocidad se recibe en el tercer byte (0, 1, 2...)
   HPWM 1, velocidad, 2000        " actualizamos velocidad del ventilador.

goto ProgramStart  

" ************************************************************
" * receive data from the USB bus                            *
" ************************************************************
DoUSBIn:
   USBBufferCount = USBBufferSizeRX              " RX buffer size
   USBService                                    " keep connection alive
   USBIn 1, USBBuffer, USBBufferCount, DoUSBIn   " read data, if available
   return




***********************
Apuntes: 1) Es solo una prueba pero ya me funciona. Rebotado
2) Un dato curioso que no se si es solo en delphi. Se supone que tenemos un array de x bytes para la comunicacion, pues bien, en la parte basic (PIC) perfecto, pero en delphi el array tiene que ser un byte mayor (x+1). Esto se debe a que el primer byte debe ser 0 para no se que rollo de las comunicaciones, y luego ya van los datos.
En el ejemplo de arriba  tengo en USBBuffer[2] el dato de la velocidad para el ventilador pero en el PC (delphi) estará en USBBuffer[3].


Ale, me voy a la cama que ya me lo he currado hoy.

Saludos desde Logroño (España)

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Módulo USB del 18Fx550
« Respuesta #37 en: 16 de Agosto de 2005, 20:22:00 »
Hola:

Felicidades amigo josemyzm... pues yo sigo estancado, hice lo que tu me dijiste pero nada de nada siguen los mismos errores, incluso pegue la carpeta y la llame de la misma manera que esta en tu post edite el fichero lo compile y nada, borre el pbp volvi a pegarlo en esa direccion y nada, intente en otra direccion y nada de nada..... LloricaLloricaLloricaLlorica no se que es lo que pasa........ Como puedo solucionar esto...?

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Módulo USB del 18Fx550
« Respuesta #38 en: 16 de Agosto de 2005, 20:38:00 »
Hola:

Te agradezco mucho josemyzm... aqui recien son las 8:37 de la noche, yo todavia le doy de largo a ver si puedo solucionar el problema, si es asi te lo comento o sino hechame una mano... gracias de antemano...!

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Módulo USB del 18Fx550
« Respuesta #39 en: 16 de Agosto de 2005, 21:51:00 »
POR FIN...!


Ya solucione el primer inconveniente....

Ya pude compilar el ejemplo de USBJADEM.BAS los problemas que tube fueron los siguientes:

1.- No podia compilar por las razones que el amigo josemyzm menciona en uno de sus post, no toque el archivo PBPUSB18.LIB lo que hice fue copiar la carpeta del PBP al dico c, asi quedo el directorio... C:PBP...

2.- una vez superado este inconveniente me dio otros errores diciendo que no podia abrir el archivo 18F4550.INC... esto no sabia a que se debia... y como yo no tengo instalado Mplab en mi maquina, resulta que el MPASM estaba muy antiguo y lo que hice fue descargarme una nueva version de esta pagina:

http://picbasic.com/support/mpasm.htm

Una vez descargado lo copie a la misma carpeta C:PBP... luego en la opcion Compile and Program Options busque manualmente donde se encontraba el nuevo programa mpasmwin401 y voila....compilò a la perfeccion....

Mañana voy a ver si armo el circuito de Bruce Reinolds par probar este ejemplo...

Gracias a todos por su valiosa ayuda....!

PD: De seguro que voy a necesitar mas ayuda cuando ya pruebe el ejemplo...

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
RE: Módulo USB del 18Fx550
« Respuesta #40 en: 17 de Agosto de 2005, 04:25:00 »
Tambien te puedes pillar de microchip la ultima version de MPLAB.

No hace falta que metas las cosas junto al PicBasic, las puedes instalar a parte e indicar al Microcode Studio donde estan, o incluso dejar que haga una búsqueda automática de lo que necesita.
Menu View -> Pic Basic Options .......    (puedes decirle que busque automaticamente el compilador del PicBasic y el ensamblador Mpasm).

Me alegro de que hayas avanzado.

Un saludo.

Saludos desde Logroño (España)

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Módulo USB del 18Fx550
« Respuesta #41 en: 17 de Agosto de 2005, 11:00:00 »
Hola:

Pues solamente lo puse para tener todo en una sola carpeta.... y cuando hice la busqueda automatica seguia encontrando el otro, por eso lo hice manualmente... ji ji ji, pero ahora voy a eliminar al antiguo ya me dio problemas... desquiciado, hoy recien me descargue el mplab IDE y lo voy a instalar para tener todo en orden y borrar la carpeta del PBP...

Desconectado kyo_Meros

  • PIC10
  • *
  • Mensajes: 32
RE: Módulo USB del 18Fx550
« Respuesta #42 en: 19 de Agosto de 2005, 22:59:00 »

Que bien...  hoy me llebo la sorpresa de que hay quien ha crecido en esto del USB... que chido... me da mucho gusto...

Una disculpa por no estar muy al pendiente en estas fechas... pero esque ya entre a la escuelita y pues a "darle"... ahora bien...

Porque no trabajamos para llebar esos 64KB/s del HID y los 128000bit"s/s del CDC... a lo mas que podamos pero ahora con el
• Microchip Custom Driver, que como sabran es la alternativa para manejar el USB a su maxima expresion.... se requiere experiencia en la programada y pues conocer al USB de piez a cabeza.... espero conseguir info cuanto la escuelita lo permita y pues a darle.... por lo pronto creo que me enfocare a buscar informacion sobre todo lo tecnico del USB... y pues por ahi empezarle...

Y pues a plasmar los avances para lograrlo todos....

Suerte... Y saludos

Atte Oscar M R....

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
RE: Módulo USB del 18Fx550
« Respuesta #43 en: 18 de Septiembre de 2005, 09:13:00 »
Que tal a todos, use el generador EasyHID para generar el codigo de comunicacion entre un PIC y el PC a traves del puerto USB,
la cuestion es que no entiendo la sintaxis del lenguaje en bajo nivel (PICBASIC) y el del alto nivel(VISUAL BASIC), estoy usandoun PIC18F4455, y cuando lo conecto al puerto USB el sistema lo detecta, pero no se como enviar datos hacia el PIC desde el PC y viceversa. Lo que pude descubrir son los procedimientos del programa generado en visual basic para enviar y recibir datos pero no entiendo la sintaxis estos son los procedimientos:


"*****************************************************************
" on read event...
"*****************************************************************
Public Sub OnRead(ByVal pHandle As Long)
   
   " read the data (don"t forget, pass the whole array)...
   If hidRead(pHandle, BufferIn(0)) Then
      " ** YOUR CODE HERE **            "se que aqui tengo que escribir el codigo para leer el dato pero no se la sintaxis   
      " first byte is the report ID, e.g. BufferIn(0)
      " the other bytes are the data from the microcontrolller...
   End If
End Sub


"*****************************************************************
" this is how you write some data...
"*****************************************************************
Public Sub WriteSomeData()
   BufferOut(0) = 0   " first by is always the report ID
   BufferOut(1) = 10  " first data item, etc etc

   " write the data (don"t forget, pass the whole array)...
   hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub


En que parte de estos procedimientos tengo que escribir el codigo, y como seria la sintaxis si quisiera enviar(al PIC) y recibir(desde el PIC)  la letra "A" en un TextBox
por ejemplo.


Y lo mismo para el programa en PicBasic, en que parte del codigo recibo y envio la letra "A" y como seria la sintaxis,
el codigo del PICBASIC es el siguiente:



" ************************************************************
" * receive data from the USB bus                            *
" ************************************************************
DoUSBIn:
   USBBufferCount = USBBufferSizeRX              " RX buffer size
   USBService                                    " keep connection alive
   USBIn 1, USBBuffer, USBBufferCount, DoUSBIn   " read data, if available
   return

   

" ************************************************************
" * wait for USB interface to attach                         *
" ************************************************************
DoUSBOut:
   USBBufferCount = USBBufferSizeTX              " TX buffer size
   USBService                                    " keep connection alive
   USBOut 1, USBBuffer, USBBufferCount, DoUSBOut " if bus available, transmit data
   return


Si alguien a trabajado con el EasyHID, espero que me pueda ayudar.

De antemano gracias a todos.Giño

PD: disculpen lo extenso del post.Sonrisa Gigante
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
RE: Módulo USB del 18Fx550
« Respuesta #44 en: 18 de Septiembre de 2005, 17:34:00 »
En PicBasic tienes USBIn  &  USBOut para que el PIC reciva y envíe datos. Los 2 bloques que has puesto de PICBasic creo que son faciles de comprender, según el manual solo hay que tener en cuenta el uso de USBService, indica que hay que ejecutar esta instrucción a intervalos de 10ms máximo, así que cuidado si usas retardos.

En cuanto al PC generalmente  uso Delphi, no sabría indicarte como hacerlo en Basic. Lo que si te puedo decir es que es muy facil y si pillas algún ejemplo lo más básico posible lo verás.

Un saludo.

Saludos desde Logroño (España)


 

anything