TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: patolinec en 09 de Mayo de 2005, 13:22:00

Título: Módulo USB del 18Fx550
Publicado por: patolinec en 09 de Mayo de 2005, 13:22:00
Hola a todos

Invito a toda la gente a que aporte toda su informacion apara desde aqui ir creado una base de infromacion sobre todo lo que refiere a esta importante tecnologia que es el USB, cualquier comentario haganlo y en los proximos 2 días tratare de subir la informacion que tengoRebotado
Título: RE: Módulo USB del 18Fx550
Publicado por: patolinec en 11 de Mayo de 2005, 13:46:00
EN esta direccion pueden encontrar ejemplos de una aplicacion y del software de interface con el computador y el micro

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2124&param=en022613&Pagetitle=Full%20Speed%20USB%20Solutions
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 15 de Mayo de 2005, 10:56:00
Que tal,aqui envio una direccion con un ejemplo usando el puerto USB y el 18F4550 http://www.microchipc.com/sourcecode/#pic18f4550usb
Título: RE: Módulo USB del 18Fx550
Publicado por: svt en 18 de Mayo de 2005, 11:31:00
Hola, yo tambien estoy interesado en el tema, hace algun tiempo ya escribi algo por este foro al recpecto de suplicar por ayuda Muchas risas, bueno, una página que supongo que conocereis, pero como no esta aqui, la pongo por si alguien no la conoce,
www.lvr.com

El señor de esta web, tiene un libro referente al usb, que esta muy bien, ingles, pero muy bien. La web tiene muchas cosas

Cuando llegue a casa, esta noche, pegare otra dirección, donde si no recuerdo mal, habia el codigo asm para el pic con usb 2.0, y el programa creo que en delphi para poder visualizar por el pc, el valor analogico de la entrada del pic,  y otra cosa mas....ahora no recuerdo exactamente, pero el link lo tengo seguro, yo os lo paso.

Otra cosa, que yo creo es importante, os pasare un pdf, donde describe pasito a pasito, como a partir del firmware asm de microchip para los 16c (usb low), se configuran para hacer nuestro programa.

Una cosa, uno de vuestros links, muestra un codigo para hacer un rs232 virtual?, lo habeis probado?, quisiera hacer un programa o un proyectito, en el cual, un pic (ocn usb), recibiera por la usart unos cuantos bytes, y los enviara via usb al pc, que opinais?, complicado?, perdonad si he escrito mas de la cuenta en esta seccion.

Esta noche os pongo el otro link, y el pdf.

Saludos desde valencia
Título: RE: Módulo USB del 18Fx550
Publicado por: svt en 20 de Mayo de 2005, 09:59:00
Perdon por no ponerlo anoche, aunque no creo que mucha gente (por no decir nadie) se diera cuenta. Bueno, el siguiente link, es un pdf que ayuda a configurar el firmware que microchip nos proporciona en asm para poder usar el usb del pic 16c765. El segundo link, es el codigo fuente del hombre que ha hecho este pdf.

www.arrl.org/qex/qx5lichtel.pdf

http://www.arrl.org/qexfiles/0405Lichtel.zip


Mirare de poner esta noche otro link con un proyectito con un 18F.Por cierto, por si no os habias dado cuenta, el pic16c con usb, tiene una version con ventanita para poder borrarlo por UV tantas veces como necesites, yo he pillado uno para probarlo.

saludos
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 21 de Mayo de 2005, 14:46:00
Que tal, en esta direccion http://www.sixca.com/eng/articles/usbdaq.php podran encontrar un articulo para la configuracion del 18F4550 usando el modulo usb. Esta basado en un sistema de adquisicion de datos, y podran descargar todos los archivos se usaron incluyendo software de alto nivel.Rebotado
Título: RE: Módulo USB del 18Fx550
Publicado por: micro_pepe en 22 de Mayo de 2005, 15:31:00
Hola svt, ¿donde está el codigo del programa delphi para el PC?, podrias poner el link.

Gracias y saludos: Juan.
Título: RE: Módulo USB del 18Fx550
Publicado por: patolinec en 25 de Mayo de 2005, 13:39:00
Hola amigos.

He usado el 16c745 con interfaz USB y funciona a las mil maravillas, pero el 18f2550 no puedo ni siquiera inicializar el modulo para que la compu me reconozca, ahora les pediria que se descarguen el asm que esta por alla arriba y traten de usarlo y cualquier resultado lo pongan aqui cualquier cosa yo les aviso
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 25 de Mayo de 2005, 15:10:00
Que tal, tengo un 16C745 pero es OTP y no quiero programarlo con cualquier cosa; tu crees que puedas colocar tu codigo para poder usar la interfaz USB por que si me equivoco en algo y programo el PIC y no me funciona adios 16C745. Sonrisa Gigante
Título: RE: Módulo USB del 18Fx550
Publicado por: svt en 27 de Mayo de 2005, 11:45:00
El link es el que ya ha puesto el aqui el compañero,  http://www.sixca.com/eng/articles/usbdel_en.php

antes de descargar hay que darse de alta.

Por cierto, si el codigo para el pic16c745 te esta funcionando explendidamente, pasamelo haz el favor


mi email svt_spa@hotmail.com


Si alguien necesita algo y puedo ayudar, pues tb puede mandarme un email aunque estoy bastante pez en muchos aspectos.

Saludos
Título: RE: Módulo USB del 18Fx550
Publicado por: patolinec en 29 de Mayo de 2005, 14:30:00
Dejenme su correo y yo les envio el codigo
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 30 de Mayo de 2005, 07:54:00
Dale aqui esta mi correo:

atlasdelcarinakeel@yahoo.es

Gracias.
Título: RE: Módulo USB del 18Fx550
Publicado por: patolinec en 04 de Junio de 2005, 19:55:00
Les envie los archivos, cualquier duda que tengan me la hacen en este post

Casi me olvido tienen que cambiar el nombre del ejecutable yo le mande sin la extension .exe ya que mi correo no los permite por seguridad
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 06 de Junio de 2005, 07:54:00
Gracias patolinec por enviar el codigo, pero tengo una duda, en lo que enviaste hay varios archivos .asm pero cual es el que se debe compilar para despues quemar en el pic, y para que son los otros archivos.

Y de nuevo gracias.Sonrisa
Título: RE: Módulo USB del 18Fx550
Publicado por: svt en 06 de Junio de 2005, 08:15:00
Perdona por enviarte un email, lo hice antes de leer el post, i´m sorry.
Respecto a lo de los asm, no abras ninguno, tienes que abrir el pjt con el mplab.Este archivo es el proyecto, y contiene todoslos asm. Una vez hecho esto le das a buildall. Yo supoongo que no hay que tocar nada mas. Te creara un hex para quemar en el pic.
Respecto al esquema del micro, hay que poner una r entre vusb y d-?, y un condensador de filtro?, una ultima pregunta, es autoalimentado por el  bus?

Si alguien tiene mas ejemplos para usar el usb en el pic, por favor si me lo pueden enviar estare agradecido.
Saludos
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 06 de Junio de 2005, 08:48:00
Gracias svt por aclararme la duda, con respecto a tus preguntas se recomienda una resistencia de 1,5 K entre Vusb y D-, tambien un capacitor de 300 nf entre Vusb y GND(tierra), y si el Vusb puede alimentarse por el bus o puedes colocar tu propia fuente de alimentacion sino quieres alimentarla por el bus. Espero que eso te ayude.Sonrisa
Título: RE: Módulo USB del 18Fx550
Publicado por: patolinec en 06 de Junio de 2005, 14:05:00
Miren tienen que aderir todos los archivos asm al proyecto, y el programa principal es el piccalc.asm en donde les recomiendo q" realicen las modificaciones, en el descript.asm pueden modificar para que al conectar el pic les salga el nombre del producto que ustedes quieran suerte y cualuier cosa me lo dicen
Título: RE: Módulo USB del 18Fx550
Publicado por: patolinec en 06 de Junio de 2005, 14:13:00
Hay por poco lo ovido para poder instalar en sus maquinas se necesita un OCX que posee compatibilidad con Visual Basic, esto tambien es desarrollado por Microchip y aqui les pongo una direccion de donde lo pueden descargar porque en la pagina de microchip ya no lo ponen por ser muy viejo

http://www.cattopasto.com/dload.php?id=104
Título: RE: Módulo USB del 18Fx550
Publicado por: svt en 07 de Junio de 2005, 10:01:00
No me funciona el usb con el codigo que si funciona. Por ello, creo que el fallo debe estar en la pcb, alguien poria pasarme una pcb?. Creo que el fallo puede deberse al zocalo usb que no tenga bien ruteado las pistas. Si alguien me puede pasar alguna pcb para poder compararlo, lo agradeceria. Si alguien quiere ver mi pcb que me lo comente y se la mando.


saludos
Título: RE: Módulo USB del 18Fx550
Publicado por: peddrorolo en 21 de Junio de 2005, 01:56:00
Escrito originalmente por atlasdelcarinakeel
Que tal, tengo un 16C745 pero es OTP y no quiero programarlo con cualquier cosa; tu crees que puedas colocar tu codigo para poder usar la interfaz USB por que si me equivoco en algo y programo el PIC y no me funciona adios 16C745. Sonrisa Gigante


Hola a todos, yo hize mi proyecto con el pic 16c765, que es igual que el 16c745 pero con más memoria y para nada es otp, lo que pasa es que no es flash y hay que borrarlo con ultravioletas durante unos 7 minutos.
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 21 de Junio de 2005, 15:13:00
Que tal, disculpa pero el mio si es otp, ya que no tiene ese filtro de vidrio que tienen los dispositivos UV, ademas en el pdf, del 16c745 dice que hay modelos UV y OTPLlorica
Título: RE: Módulo USB del 18Fx550
Publicado por: patolinec en 25 de Junio de 2005, 10:59:00
Disculpen por haberme desaparecido, esque tenia exmanes de fin de ciclo.

Miren dureante estos dias me prestaron el nuevo Pic basic pro, y o sorpresa nos trae un exelente wizard para crear aplicaciones con el 18F2550, 4550, que es mucho mas barato que los 16C7X5, asi que les invito a que lo revisen se llma HID wizard, y hasta te crea un programa para Visual Basic o visual C

Oye atlasdelcarinakeel explicame tu problema a ver si te puedo ayudar, dime que estas haciendo y que programa grabaste en tu OTP
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 26 de Junio de 2005, 08:29:00
Qua tal patolinec, yo todavia no he grabado nada ya que mi programador no me esta funcionando y no he tenido tiempo de rebisarlo, aunque lo mas probable es que sean los transistores yo uso el picallw.

Gracias por todo.
Título: RE: Módulo USB del 18Fx550
Publicado por: svt en 29 de Junio de 2005, 12:25:00
Hola patolinec, me puedes comentar, que version del programa te han pasado?


gracias y saludos
Título: RE: Módulo USB del 18Fx550
Publicado por: olotill en 29 de Junio de 2005, 19:26:00
HOLA PATOLINEC..

QUE GUSTO VER QUE EN MI PAIS SI HAY GENTE QUE ANDA TRABAJANDO Y DURO CON LOS PICS, BUENO YO RECIEN ESTOY APRENDIENDO A USARLOS PERO QUERIA FELICITARTE PRIMERO POR TU EMPEÑO Y LUEGO POR LAS APLICACIONES QUE ESTAS COMPARTIENDO...

YO VIVO EN QUITO Y ESPERO PODER ESTAR EN CONTACTO CONTIGO PARA VER SI BRINDAS UNA AYUDA PARA APRENDER MAS RAPIDO SOBRE PICS....  

UN GUSTO Y SALUDOS...

ATTE. OLOTILL Rebotado
Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre en 04 de Julio de 2005, 11:31:00
Hola Compañeros:

Quisiera tomar el hilo a esto del USB estoy interesado en aprender ya consegui los PIC 18F2550 y 18F4550, he estado buscando un poco de info por la red, pero no hay ejemplos en PBP o Proton que son los compiladores que uso para programar los PIC, PATOLINEC que version de pbp o de microcode tienes que te permite crear esas aplicacions con un wizard? yo tengo PBP 2.46 y micocode studio plus 2.2.1.1 y no he visto o no se como hacerlo.... te agradeceria que me expliques como lo haces, y si es posible con la aplicacion para vb 6.0 pues mejor aun, tengo que hacer un pequeño proyecto que utilice comunicacion USB e interfaz con VB 6.0.... les agradesco a todos por su ayuda desde ya...!

Un abrazo a todos los compañeros del foro.....! Sonrisa Gigante
Título: RE: Módulo USB del 18Fx550
Publicado por: kyo_Meros en 04 de Julio de 2005, 19:32:00

Ayuda...

He estado checando este post... y hasta ahora he tenido problemas con la comunicacion entre el PIC-PC... he probado ambos links:

http://www.microchipc.com/sourcecode/#pic18f4550usb
http://www.sixca.com/eng/articles/usbdaq.php

Y en ambos obtengo el mismo resultado...

/*
* No se reconoce el dispositivo USB
*
*Uno de los dispositivos USB vinculados a este equipo ha tenido un mal *funcionamiento y Windows no lo ha reconocido.
*/

Hago mencion solo de estos link"s porque en ellos se maneja el uso del micro 18F4550 (ya que es el que tengo)... ademas por que en ellos semaneja la comunicacion atravez del CDC de microchip...

Si alguien ya ha probado un programa para este micro y con el CDC... porfa necesito una orientada... ya que no tengo ni idea en donde pueda estar el problema...

Gracias por su ayuda... ATTE Oscar...
Título: RE: Módulo USB del 18Fx550
Publicado por: calcius en 05 de Julio de 2005, 05:25:00
yo estoy en la misma situacion que tu, estoy probando con los bits de configuracion de sixca.com y tampoco me funciona, es como si cuando conectase se reiniciara el solo
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 14 de Julio de 2005, 08:43:00
Que tal a todos, buscando por la red encontre un software muy interesante, que segun sus creadores genera dos codigos para comunicacion usb con el pc usando PICs, unos de los codigos es del pic de la familia 18FX550, y el otro codigo o software el del alto nivel.

El Software generador el completamente gratis. Aqui esta la direccion en donde lo pueden bajar. Rebotado

http://www.mecanique.co.uk/products/usb/easyhid.html

y por aqui consegui otra direccion esta en frances e ingles.

http://pic18fusb.online.fr/wiki/wikka.php?wakka=PageIndex.

Bueno a probar se a dicho y recuerden relatar sus experiencias en el foro.
Título: RE: Módulo USB del 18Fx550
Publicado por: kyo_Meros en 14 de Julio de 2005, 10:48:00

Buen HID atlasdelcarinakeel...

Segun la pagina:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2124&param=en022625

Es posible alcanzar velocidades de transmicion de hasta 1Mbit/s... esto claro como indica la pagina atravez del empleo del CDC de microchip...
Estube checando este CDC... y claro este emula un puerto serie alcanzando una velocidad maxima (supuestamente como cualquier otro "puerto serie" de 128000 bits/s).

Me agrada mas la velocidad del HID que mencionas tu... aparentemente de 64KByte/s... espero hacer pruebas pronto con el... para ver... cual de estas 2 alternativas me convence...

Gracias por tu link

Atte Oscar M R
Título: RE: Módulo USB del 18Fx550
Publicado por: kyo_Meros 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
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm 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.

Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm 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.

Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre 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...???????
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm 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.
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm 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
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm 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.

Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre 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...?
Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre 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...!
Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre 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...
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm 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.

Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre 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...
Título: RE: Módulo USB del 18Fx550
Publicado por: kyo_Meros 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....
Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel 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
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm 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.

Título: RE: Módulo USB del 18Fx550
Publicado por: atlasdelcarinakeel en 19 de Septiembre de 2005, 08:00:00
Bueno gracias, voy a seguir intentando enviar y recibir un dato, de todas maneras si alguien a trabajado con el easyhid generando en visual basic, le agradeceria la ayuda.

Rebotado
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm en 19 de Septiembre de 2005, 08:17:00
Sabes programar otra cosa que no sea Visual Basic? EasyHid permite tambien Delphi & Visual C++.  Si el problema que tienes es la programacion ve directamente a la seccion de Visual Basic xq por lo que veo ya sabes donde tienes que poner el código pero no sabes qué.

Un saludo.

Título: RE: Módulo USB del 18Fx550
Publicado por: motorola1212 en 24 de Septiembre de 2005, 01:52:00
hola amigos del foro, no se muchgo sobre el puerto usb y quisiera hacerle unas preguntas a ustedes que dominan mas el tema, mi consulta es cual es la tension del puerto usb, creo q son 5V no estoy seguro, y si es asi cual ez su capacidad de corriente y si esa tension esta disponible en todo instante, ademas cual es la districbucion de pines de dicho puerto, espero me puedan ayudar.saludos.
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm en 24 de Septiembre de 2005, 10:25:00
Soy nuevo en esto pero te contesto hasta donde llego.
El puerto USB suminstra 5V y creo que un máximo de 500mA. En mi caso los 5V están presentes en el conetor USB con solo tener el PC enchufado a la red, sin necesidad de estar encendido.
Estos 5V los tienes entre los pines 1 y 4 (extremos), los otros 2 son los de datos (D+ y D-).   Para ver la disposicion de pines lo mejor es el manual de la placa base o algún   circuito de ejemplo, en la seccion de programadores tienes programadores USB, mirado el PCB lo tendrás claro.

Un saludo.

 
Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre en 24 de Septiembre de 2005, 10:33:00
Hola:

aqui tienes un ejemplo de coneccion a un 18F4550...

Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre en 03 de Octubre de 2005, 23:51:00
Hola:

Una pregunta para josemyzm:

Como es el circuito que armaste....? es como el del esquema que esta en la ayuda del HID...? como el del post de arriba? El cristal que utilizas es de 48mhz como en la declaracion o es de 20 como en el circuito?

Gracias...!
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm en 04 de Octubre de 2005, 04:52:00
Pues basicamente el esquema es el mismo. Creo que usé el PIC18F2455, el más pequeño de la gama (es que ahora lo tiene un amigo para probarlo y no lo se, era el más pequeño de la gama pero como en microchip hay otros 2 nuevos no estoy seguro de si es el modelo)

La unica diferencia es que usé cristal de 4 MHz y no puse la resistencia en paralelo al cristal. (Como acepta varios cristales de cuarzo pues trate de ahorrarme la compra de otro, total, el programa correrá a la misma velocidad)

¿que pregunta tienes exactamente?


Un saludo

Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre en 04 de Octubre de 2005, 09:26:00
Hola:

Es solamente una cosa que no me queda claro... es que utilizas el cristal de 4MHz y en el programa de PBP generado por el easy HID  define uno de 48MHz...

Solo queria tener claro esto para el momento de hacer algunas pruebas no llevarme alguna sopresa...
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm en 04 de Octubre de 2005, 18:48:00
Te confirmo que usé el 18F2455.

Lo del cristal si que es curioso y estuve un tiempo dandole vueltas porque habia visto varios esquemas distintos (20 y 24MHz) pero en todos el programa PICBasic usaba DEFINE OSC 48. Era la primera vez que usaba un PIC con PLL.

Antes de nada indicar que por lo que he leido creo que PicBasic predefine el uso de un cristal de 20MHz y que a mí me parecio más simple adaptar los parámetros directamente en el WinPic800 a la hora de programar que modficarlos en el PicBasic (al menos por ahora)

Ejecutar el programa a 48 MHz es lo más rápido que se puede, pero hay más opciones, todo depende de como lo configuremos.

A partir de aqui puede que meta la pata en algún punto, pero basicamente es algo así ...
Primero tener el DataSheet delante, concretamente página 24 con esquema interno de la etapa de oscilador y páginas 29 & 30 con la tabla de configuracion de registros del oscilador.

El USB se puede hacer trabajar a dos velocidades (48 y 24 MHz), esta parte no la controlo pero bueno, siempre buscamos velocidad no???, je je   Muchas risas. pues eso 48 MHz (como de aqui sale tambien el reloj para la velocidad a la que irá el programa pues sigo).
Para obtener esos 48MHz tenemos dos opciones con las que jugar:
1) usar directamente un cristal de 48MHz
2) utilizar un PLL interno que se encarga de generarlos (basandonos en el cuarzo que coloquemos y unos toques de configuracion) Esto nos puede evitar comprar un cuarzo y usar uno que tengamos (si hay suerte) Muchas risas

si usamos el PLL interno vemos en la parte arriba-centro del esquema de la pag.24 algo que pone 96 MHz PLL. Este es el generador interno, 96 MHz, luego viene un divisor por 2 y de ahí salen los 48MHz para el rollo USB.  Justo antes de este divisor por 2 vemos que los 96MHz van tambien a un PLL Postcaler,  (HSPLL, ECPLL, XTPLL, ECPIO), de aqui sale la frecuencia de trabajo del PIC (la de siempre, vamos, la que hay que usar en el programa). En este PLL Postcaler entran 96 MHz y como se ve podemos dividirlos por 2,3,4,6;  con lo que podemos obtener frecuencias de 48, 32, 24 ó 16 MHz para el PIC.    Este PLL Postcaler es para sacar la frecuencia del PIC a patir de los 96 MHz generados internamente, pero tambien podemos obtener la frecuencia de reloj usando el valor que nos da el cuarzo y el bloque que vemos a la izquierda del PLL Postcaler,  el Oscillator Postcaler, que nos permite obtener otras frecuencias diferentes a las anteriores.


Ahora el cuarzo:

Volviendo al generador interno de 96MHz, vemos que sobre el pone (4 MHz input only). Esto indica que para generar los 96MHz debemos tener en la entrada 4MHz. Para eso tenemos justo antes otro divisor, PLL Prescaler, que divide la frecuencia del cuarzo que coloquemos por 12,10, 6, 5, 4, 3, 2 ó 1. Sabiendo que a la salida de estos divisores hay que tener 4MHz, pues multiplicamos y vemos que podemos usar cristales de 48, 40, 24, 20, 16, 12, 8 ó 4 MHz. Y con cualquiera de ellos podremos usar el generador interno a 96MHz que nos dará los 48MHz para el USB y el máximo de 48MHz para el reloj del programa.


Siguiendo las lineas en el esquema del oscilador vemos que registros hay que configurar para seguir un camino u otro; para eso nos vamos a la tabla de las páginas 29 y 30 (que nos indican que valores poner en los registros para obtener USB a 48MHz y la Frecuencia de reloj de la columna de la derecha a partir del cuarzo indicado en la columna 1)



Perdón por el rollo, pero cogiendo el esquema de circuiteria del reloj es facil de entender.

Un saludo.
Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre en 05 de Octubre de 2005, 00:11:00
Hola:

Interesante explicacion... pero lamentablemente por un error en el que meti mal los dedos acabo de eliminar el DS del PIC y no he podido mirar lo que comentas y ahora estoy intentando descargar pero mi conexion esta un poco inestable y tengo problemas con la descarga...!

Perdon por parecer comodo pero me podrias indicar lo siguiente...?

- Con el cristal de 4Mhz hiciste algun cambio en el winpic...? en que parte fue....?

espero no molestar... es solo que intento descargar el DS y no puedo se me cancela a cada momento la descarga... Llorica
Título: RE: Módulo USB del 18Fx550
Publicado por: josemyzm en 05 de Octubre de 2005, 04:51:00
uff, pues ahora que lo vuelvo a mirar no me parece tan facil como antes.

Se supone que tienes DEFINE OSC 48  en el programa (PIC a 48 MHz)
En la configuracion para grabar el PIC:
OSCILLATOR
XT Oscillator, PLL Enabled, XT used by USB  (el problema es que ahora veo dos opciones iguales)

*** Si no seleccionaba XT el cristal no arrancaba.


CPU System Clock
96MHz PLL div 2

Oscillator Selection
No divide-direct (4Mhz input)


El unico problema es en la primera opcion (Oscillator), sea la que sea con "PLL enabled", las otras dos ya se ven facil.

Un saludo.
Título: RE: Módulo USB del 18Fx550
Publicado por: J1M en 05 de Octubre de 2005, 08:16:00
Respecto al tema del oscilador del 18fxx5x ... la verdad esq tiene su cosa :p

Se supone que no deberia cambiarse nada en el programa de grabación, sino añadir los fuses necesarios para el oscilador.. por ejemplo (os lo pongo en C para CCS q no se como se declaran en Basic)

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
#use delay(clock=48000000)

en el delay debo poner a la frecuencia a la que va a ir mi sistema... no la frecuencia del cristal que esté usando. 48Mhz para obtener 12mips y los 1,5MB de transmision del protocolo USB 2.0

El siguiente paso es configurar los fuses para que apartir de un cristal X obtener la frecuencia del sistema Y (en este caso 48Mhz), para eso nos vamos al DataSheet del 18Fxx5x, y a la página 31 y 32.

Vemos un peaaazo tabla en la que tendremos q mirar primero la columna de la izquierda (Input Oscillator Frecuency), seleccionamos la casilla correspondiente al cristal q estemos usando, en mi caso es de 12Mhz, ahora nos vamos a la columna de la derecha(Microcontroller Clock Frecuency) y buscamos los 48Mhz que queremos conseguir.

Ahora tenemos que ver que parámetros nos da la tabla para poner como Fuses, para el que estamos calculando tenemos:

PLL Division: +3 (011)
Clock Mode: HSPLL, ECPLL, ECPIO (a elegir entre uno de los tres...)
MCU Clock Division: +2 (00)

Por ultimo seleccionamos los fuses adecuados a esos parametros, esto ya dependerá un poco del compilador y los nosmbres q le haya dado, aunque generalmente se respetan los del datasheet, para el caso del CCS se tiene:

PLL Division: PLL3
Clock Mode: HSPLL
MCU Clock Division: USBDIV (para indicarle q vamos a usar el divisor tb para el USB), CPUDIV1 (aunq arriba sea +2, es el 00, y es el primero, usea "1"Giño

Para vuestro caso que es de 4Mhz tendriais:
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN
#use delay(clock=48000000)


Bueno espero que os haya quedado un poco mas claro... y q no os haya terminado de liar :P

Saludos! Giño
Título: RE: Módulo USB del 18Fx550
Publicado por: Lord_Jedator en 07 de Octubre de 2005, 15:13:00
Estoy Realizando un proyecto de conectar dos Pc atraves de un PIC18F4455, el PIC servira de interfase entre las dos PC donde una estara conectada por RS232 y la otra por USB, necesito ayuda, ya que no s programar en C y todo lo que consiguo esta en C y en Ingles, Gracias
Título: RE: Módulo USB del 18Fx550
Publicado por: RaDoN en 07 de Octubre de 2005, 16:18:00
Para no saber programar has apuntado un poco alto ... Helado
Título: RE: Módulo USB del 18Fx550
Publicado por: PABCAT en 29 de Octubre de 2005, 17:16:00
Que tal, Alguien sabe cuales son las instrucciones para poder adquirir datos desde el uart del 18f4550; es para complementar el codigo del usb y mandarle datos desde RS232.     Gracias
Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre en 22 de Noviembre de 2005, 11:04:00
Holas:

Pues yo tambien me uno al grupo....! Sonrisa Gigante

Ya me funciono el USB... claro que no e la gran cosa pero antes no me reconocia ni el dispositivo... Llorando

Ahora hice un pequeño ejemplo que encienda un led bicolor, es justamente el del GTP USB LITE que tengo, la aplicacion la hice con PBP y Visual Basic...!

micodigo para el pic es este:

Codigo:
DEFINE OSC 48          

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

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

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

PORTB = 0
TRISB = 0

usbinit " initialise USB...
ProgramStart:
    gosub DoUSBIn
    PORTB = USBBuffer[7]
    goto ProgramStart


PD: Estoy utilizando el EasyHID
Título: RE: Módulo USB del 18Fx550
Publicado por: halcon120 en 02 de Diciembre de 2005, 06:59:00
Hola a todos, queria felicitaros a todos por el trabajo que han realizado y la ayuda que prestana  novatillos como yo.

Actualmente estoy intentado montar algo con un 18f2550, y tras muchos esfuerzos he conseguido programar el PIC con el art2003. El código esta hecho con el c18 y mplab, y es una modificacion dl proyecto sixca, con las modificaciones pertinentes (link de enlace, conexiones, includes, etc.) para cdc. El problema que tengo ahora es el que menciono en su dia kyo_meros, k no me reconoce el dispositivo debido a un mal funcionamiento. Según la cita, él mismo habia encontrado la solucion, asi k le pido ( y aquien lo sepa) que me oriente un poco, que me esta volviendo loco. Actualmente no tengo acceso al pic basic (se puede bajar por la mula?), asi que a ser posible, una que funcione para el c18. Muchas gracias por adelantado, y pido disculpas si me he saltado un post con la solución, pero no lo he visto.


Escrito originalmente por kyo_Meros

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




PDD: gracias a nocturno por resolverme una duda tonta sobre el art por correo
Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre en 02 de Diciembre de 2005, 08:22:00
Hola:

Cuando me olvidava de hacer lo que josemyzm dice a continuacion... (ajustar PLL) aun asi el programa este bien me salia un erro diciendome que el dispositivo que se a conectado no funciona correctamente, no se si ese pueda ser tu error...


Escrito originalmente por josemyzm
uff, pues ahora que lo vuelvo a mirar no me parece tan facil como antes.

Se supone que tienes DEFINE OSC 48  en el programa (PIC a 48 MHz)
En la configuracion para grabar el PIC:
OSCILLATOR
XT Oscillator, PLL Enabled, XT used by USB  (el problema es que ahora veo dos opciones iguales)

*** Si no seleccionaba XT el cristal no arrancaba.


CPU System Clock
96MHz PLL div 2

Oscillator Selection
No divide-direct (4Mhz input)


El unico problema es en la primera opcion (Oscillator), sea la que sea con "PLL enabled", las otras dos ya se ven facil.

Un saludo.


Título: RE: Módulo USB del 18Fx550
Publicado por: alexander_azuaje en 02 de Diciembre de 2005, 08:31:00
hola buen dia necesito de su ayuda  necesito realizar un proyecto que me permita enviar datos por el puerto usb de la pc con el pic 18f4550 me podrias enviar si tienes las rutinas y los programas para la comunicacion te lo aSonrisagradeceria saludos....
Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre en 02 de Diciembre de 2005, 09:02:00
Hola:

No nos dices mucho con eso, que quieres hacer exactamente?, y cuales son las herramientas de las que dispones para hacer el proyecto....
Título: RE: Módulo USB del 18Fx550
Publicado por: halcon120 en 02 de Diciembre de 2005, 09:49:00
en mi caso la configuracion del PIC, tanto en el apartado serial (los descriptores del cdc) como en el del propio pic es la siguiente:

serie:

byte cdc_rx_len;            // total rx length

byte cdc_trf_state;         // States are defined cdc.h
POINTER pCDCSrc;            // Dedicated source pointer
POINTER pCDCDst;            // Dedicated destination pointer
byte cdc_tx_len;            // total tx length
byte cdc_mem_type;          // _ROM, _RAM

    line_coding.dwDTERate._dword = 115200;      // baud rate
    line_coding.bCharFormat = 0x00;             // 1 stop bit
    line_coding.bParityType = 0x00;             // None
    line_coding.bDataBits = 0x08;               // 5,6,7,8, or 16

en cdc.c.Tb parametros en cdc.h


PIC:

//Configuración del PIC (según "PIC18 CONFIGURATION SETTINGS ADDENDUM"Giño:
//CPUDIV = OSC1_PLL2 =>[OSC1/OSC2 Src: /1][96MHz PLL Src: /2]
//USBDIV = 2         => Clock source from 96MHz PLL/2
//FOSC = HSPLL_HS    => HS oscillator, PLL enabled, HS used by USB
//PLLDIV = 5         => Divide by 5 (20MHz input)
//                  El esquema de frecuencia esta en la pagina 24 del datasheet
//                  Se deducen 48 MHz de reloj
//VREGEN = ON        => USB Voltage Regulator Enable
//MCLRE = ON         => MCLR Enable         / Reset.Si se desactiva se puede usar el puerto E
//DEBUG = OFF        => Background Debugger disable
//LVP = OFF          => Low Voltage ICSP disable
//WDT = OFF          => Watchdog Timer HW Disabled - SW Controlled
//CCP2MX = ON        => CCP2 input/output is multiplexed with RC1   /CCP2:Capture 2 input/Compare 2 output/PWM 2 output.

los datos "serie" son declaradas como variables, las opciones de configuracion comodirectivas pragama en el c18. El lvp lo cambie al grabar con el art2003, y en las opciones de configuracion no he visto ninguna ams que afecte, por lo que creo
Título: RE: Módulo USB del 18Fx550
Publicado por: LordLafebre en 02 de Diciembre de 2005, 10:00:00
Hola:

oooops pero yo de C solo C que nada C Avergonzado, pero segun veo tu error no seria el que comento ya que haces la division para un cristal externo de 20MHZ, porque no posteas todo el codigo para que alguien que entienda bien de C te ayude...
Título: RE: Módulo USB del 18Fx550
Publicado por: halcon120 en 22 de Diciembre de 2005, 04:11:00
a ver, que he estado liado soldando el art2003 y con otras cosillas, perdona que haya tardado tanto en contestar. Muchas gracias de todas maneras, lord lafabre. El codigo del programa principal es:

#include <p18cxxx.h>                        //Incluye las definiciones de los registros de configuración
                                       //Esta situado en la carpeta del compilador, al igual que 18F2550.lkr
#include "system   ypedefs.h"                        // Required
#include "systemusbusb.h"                         // Required
#include "io_cfg.h"                                 // Required
#include "useruser.h"                              // Modifiable

//Configuración del PIC (según "PIC18 CONFIGURATION SETTINGS ADDENDUM"Giño:
//CPUDIV = OSC1_PLL2 =>[OSC1/OSC2 Src: /1][96MHz PLL Src: /2]
//USBDIV = 2         => Clock source from 96MHz PLL/2
//FOSC = HSPLL_HS    => HS oscillator, PLL enabled, HS used by USB
//PLLDIV = 5         => Divide by 5 (20MHz input)
//                  El esquema de frecuencia esta en la pagina 24 del datasheet
//                  Se deducen 48 MHz de reloj
//VREGEN = ON        => USB Voltage Regulator Enable
//MCLRE = ON         => MCLR Enable         / Reset.Si se desactiva se puede usar el puerto E
//DEBUG = OFF        => Background Debugger disable
//LVP = OFF          => Low Voltage ICSP disable
//WDT = OFF          => Watchdog Timer HW Disabled - SW Controlled
//CCP2MX = ON        => CCP2 input/output is multiplexed with RC1   /CCP2:Capture 2 input/Compare 2 output/PWM 2 output.


#pragma config CPUDIV = OSC1_PLL2, USBDIV = 2,FOSC = HSPLL_HS,PLLDIV = 5,VREGEN = ON
#pragma config MCLRE = ON,DEBUG = OFF,LVP = OFF,WDT = OFF,CCP2MX = ON

//#pragma config MCLRE = ON,PBADEN = ON,STVREN = ON,DEBUG = OFF,LPT1OSC = OFF
//#pragma config FCMEM = OFF,IESO = OFF,BOR = ON,WDT = OFF,LVP = OFF,CCP2MX = ON

/** V A R I A B L E S ********************************************************/
#pragma udata               //especifica una sección con variables estáticas no inicializadas, que se almacenará en la memoria de datos

/** P R I V A T E  P R O T O T Y P E S ***************************************/
static void InitializeSystem(void);
void USBTasks(void);


/** D E C L A R A T I O N S **************************************************/
#pragma code
/******************************************************************************
 * Function:        void main(void)
 *
 * PreCondition:    None
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        Main program entry point.
 *
 * Note:            None
 *****************************************************************************/
void main(void)
{   
    InitializeSystem();
    while(1)
    {
        USBTasks();         // USB Tasks
        ProcessIO();        // See useruser.c & .h        
    }//end while
}//end main

/******************************************************************************
 * Function:        static void InitializeSystem(void)
 *
 * PreCondition:    None
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        InitializeSystem is a centralize initialization routine.
 *                  All required USB initialization routines are called from
 *                  here.
 *
 *                  User application initialization routine should also be
 *                  called from here.                  
 *
 * Note:            None
 *****************************************************************************/
static void InitializeSystem(void)
{
    ADCON1 |= 0x0F;                 // Default all pins to digital                  
    mInitializeUSBDriver();         // See usbdrv.h    
    UserInit();                     // See user.c & .h

}//end InitializeSystem

/******************************************************************************
 * Function:        void USBTasks(void)
 *
 * PreCondition:    InitializeSystem has been called.
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        Service loop for USB tasks.
 *
 * Note:            None
 *****************************************************************************/
void USBTasks(void)
{
    /*
     * Servicing Hardware
     */
    USBCheckBusStatus();                    // Must use polling method.Ver usbdrv.c
    if(UCFGbits.UTEYE!=1)
        USBDriverService();                 // Interrupt or polling method.Ver usbdrv.c
   
    #if defined(USB_USE_CDC)
    CDCTxService();                     //ver cdc.c
    #endif

}// end USBTasks

/** EOF main.c ***************************************************************/




es decir, practicamente el que viene con el programa sixca. No voy a poner todos los modulos, pq practicamente no los he tocado. Solo el user.c, y el de incializacion de entradas:




#ifndef IO_CFG_H
#define IO_CFG_H

/** I N C L U D E S *************************************************/
#include "autofilesusbcfg.h"

/** T R I S *********************************************************/
#define INPUT_PIN           1
#define OUTPUT_PIN          0

/** U S B ***********************************************************/
#define tris_usb_bus_sense  TRISAbits.TRISA1    // Input

#if defined(USE_USB_BUS_SENSE_IO)      //Seria en usbcfg.h.No definido actualmente
#define usb_bus_sense       PORTAbits.RA1
#else
#define usb_bus_sense       1
#endif

#define tris_self_power     TRISAbits.TRISA2    // Input

#if defined(USE_SELF_POWER_SENSE_IO)   //Seria en usbcfg.h.No definido actualmente
#define self_power          PORTAbits.RA2
#else
#define self_power          1
#endif

/** OUTPUT ***********************************************************/
#define mInitOutput()     LATB = 0X00 ; TRISB = 0X00



/** INPUT *****************************************************/
#define mInitInput()  TRISA=0xFF; ;

#define InPut1              PORTAbits.RA0
#define InPut2              PORTAbits.RA1
#define InPut3              PORTAbits.RA2
#define InPut4              PORTAbits.RA3
#define InPut5              PORTAbits.RA4


/** ADC ***********************************************************/
// AD Clock = Fosc/4, Acq.Time = 6TAD
// Right justified
//Ya que no usare ningún conversor A/D, lo anulo con adcon0 =0
#define mInitADC()          ADCON0=0x00;ADCON2=0x3C;ADCON2bits.ADFM = 1;

#endif //IO_CFG_H


el user no lo pongo (realmente lo unico que hara el pic sera de puente de datos, sin procesamiento, son cosas como LATB = DATA, LATB = PORTA o output_buffer