Empezar con PIC18F2550 y USB.
Página 1 de 1.
Empezar con PIC18F2550 y USB.
Asi es. Todos mis proyectos se basaban en la comunicacion pc-periférico por medio de la puerta serial y paralela. Nada mal hasta hace un tiempo. Pero ahora que la seriales y paralelas quedaron en la historia, hace falta aprender todo de nuevo y meterse de lleno en las comunicaciones USB.
Leyendo posteos acerca de este tema en este y en otros foros logré primero que nada hacerme con una plataforma de desarrollo con máquinas y programas disponibles en mi laboratorio.
Veamos la plataforma:
En un notebook Lenovo G450:
-> Linux Ubuntu 9.1 (Karmic Koala).
En este NB:
-> Piklab 0.15.4
-> sdcc 2.9.0
-> VirtualBox 3.1.6
El Vbox lo utilizo para otros proyectos, para correr desde DOS 3.1 hasta Win7, pasando por varias distribuciones de Linux.
En particular, bajo esta virtualizacion: Windows XP
En WinXPi: Proteus 7 - Isis
En un pc veterano AMD 500Mhz, con puerta paralela, serial y USB: Windows XP
En Windows XP: WinPic800
En la puerta paralela del pc de antaño, un programador de PIC 18F, Art2003.
El Art2003 lo escogi por su simplicidad y conveniencia, ya que tenia todos los componentes para su armado y en esta etapa no queria complicarme con el armado y puesta en marcha de un programador mas avanzado. Tengo en vista hacerme de un Pickit2 clone, pero mas adelante.
No voy a partir de cero. Primero el estudio de la hoja de datos PIC18F2455/2550/4455/4550.pdf del sitio de MicroChip nos brinda indicaciones a nivel de HW de donde se desarrolla la relacion entre el microprocesador y el subsistema de comunicaciones USB. Otro fuente de informacion vital es el excelente libro de Jan Axelson "USB complete" en su cuarta edición.
Con todo esto, el problema queda confinado a establecer el FirmWare necesario en el PIC18F2550 a fín que implemente una máquina de estados de acuerdo a las especificaciones de USB 2.0. Para que el PIC pueda ser detectado, consultado, reconocido y enumerado por un host USB. Todo esto, antes que pueda ser enviado y recibido un solo bit de utilidad para las aplicaciones finales.
En la busqueda de un FW ya establecido, me encuentro con dos proyectos relacionados: El FW de Enzmann y el FW de Maccioni.
Estos me interesaron por que el primero ofrece un FW escrito en SDCC con un programa de comunicaciones bajo Windows, y el segundo ofrece un FW en MCC18, escrito en base al primero, con un programa de comunicaciones bajo Linux en modo consola.
El FW de Enzmann fué publicado en el número de junio de 2006 en la revista "Nuts&Volts", y se puede bajar desde su sitio web www.nutvolts.com
El FW de Maccioni esta disponible en el sitio http://openprog.altervista.org/USB_firm_eng.html junto con una muy buena introducción y descripción de su proyecto y de la interface USB HID.
La estrategia a seguir consiste en probar paulatinamente los sistemas, para poder hacer desarrollo a partir de ellos.
Luego de algunas pruebas con el FW original de Enzmann en un archivo HEX. Se concluye lo siguiente:
- Como es de esperar el FW solo se puede grabar con el Art2003, si en el conjunto de registros de configuracion (fuses) se establece activo a LVP.
- Al montar en protoboard el PIC grabado, con la configuracion circuital minima, xtal, capacitores, filtros de entrada, alimentacion, etc. Se conecta a una puerta USB del NB Lenovo y ocurren dos cosas:
En una de las tres puertas el PIC-FW es reconocido, enumerado y su estado es posible leerlo con el comando "lsusb -v": USB HID vendor=0x4d8, product=0x01ff, etc.
En las otras dos puertas, el mismo dispositivo arroja un error: "hub: connect debounce failed port n disabled" . La inclusion de resistencias de 27 Ohm en serie con los pines 15(D-) y 16(D+) del PIC soluciona este problema y el dispositivo puede operar en cualquiera de las tres puertas USB.
Continuara...
Saludos.
EOL
Leyendo posteos acerca de este tema en este y en otros foros logré primero que nada hacerme con una plataforma de desarrollo con máquinas y programas disponibles en mi laboratorio.
Veamos la plataforma:
En un notebook Lenovo G450:
-> Linux Ubuntu 9.1 (Karmic Koala).
En este NB:
-> Piklab 0.15.4
-> sdcc 2.9.0
-> VirtualBox 3.1.6
El Vbox lo utilizo para otros proyectos, para correr desde DOS 3.1 hasta Win7, pasando por varias distribuciones de Linux.
En particular, bajo esta virtualizacion: Windows XP
En WinXPi: Proteus 7 - Isis
En un pc veterano AMD 500Mhz, con puerta paralela, serial y USB: Windows XP
En Windows XP: WinPic800
En la puerta paralela del pc de antaño, un programador de PIC 18F, Art2003.
El Art2003 lo escogi por su simplicidad y conveniencia, ya que tenia todos los componentes para su armado y en esta etapa no queria complicarme con el armado y puesta en marcha de un programador mas avanzado. Tengo en vista hacerme de un Pickit2 clone, pero mas adelante.
No voy a partir de cero. Primero el estudio de la hoja de datos PIC18F2455/2550/4455/4550.pdf del sitio de MicroChip nos brinda indicaciones a nivel de HW de donde se desarrolla la relacion entre el microprocesador y el subsistema de comunicaciones USB. Otro fuente de informacion vital es el excelente libro de Jan Axelson "USB complete" en su cuarta edición.
Con todo esto, el problema queda confinado a establecer el FirmWare necesario en el PIC18F2550 a fín que implemente una máquina de estados de acuerdo a las especificaciones de USB 2.0. Para que el PIC pueda ser detectado, consultado, reconocido y enumerado por un host USB. Todo esto, antes que pueda ser enviado y recibido un solo bit de utilidad para las aplicaciones finales.
En la busqueda de un FW ya establecido, me encuentro con dos proyectos relacionados: El FW de Enzmann y el FW de Maccioni.
Estos me interesaron por que el primero ofrece un FW escrito en SDCC con un programa de comunicaciones bajo Windows, y el segundo ofrece un FW en MCC18, escrito en base al primero, con un programa de comunicaciones bajo Linux en modo consola.
El FW de Enzmann fué publicado en el número de junio de 2006 en la revista "Nuts&Volts", y se puede bajar desde su sitio web www.nutvolts.com
El FW de Maccioni esta disponible en el sitio http://openprog.altervista.org/USB_firm_eng.html junto con una muy buena introducción y descripción de su proyecto y de la interface USB HID.
La estrategia a seguir consiste en probar paulatinamente los sistemas, para poder hacer desarrollo a partir de ellos.
Luego de algunas pruebas con el FW original de Enzmann en un archivo HEX. Se concluye lo siguiente:
- Como es de esperar el FW solo se puede grabar con el Art2003, si en el conjunto de registros de configuracion (fuses) se establece activo a LVP.
- Al montar en protoboard el PIC grabado, con la configuracion circuital minima, xtal, capacitores, filtros de entrada, alimentacion, etc. Se conecta a una puerta USB del NB Lenovo y ocurren dos cosas:
En una de las tres puertas el PIC-FW es reconocido, enumerado y su estado es posible leerlo con el comando "lsusb -v": USB HID vendor=0x4d8, product=0x01ff, etc.
En las otras dos puertas, el mismo dispositivo arroja un error: "hub: connect debounce failed port n disabled" . La inclusion de resistencias de 27 Ohm en serie con los pines 15(D-) y 16(D+) del PIC soluciona este problema y el dispositivo puede operar en cualquiera de las tres puertas USB.
Continuara...
Saludos.
EOL
eol- Participante
- Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile
Temas similares
» Empezar con PikLab
» Como empezar a utilizar PIC-GCC
» Empezar a programar con SDCC y Piklab desde cero
» Como empezar a programar PICs en Ubuntu en 10 minutos (Asm, C, Basic)...
» pic18f2550 y otros micros
» Como empezar a utilizar PIC-GCC
» Empezar a programar con SDCC y Piklab desde cero
» Como empezar a programar PICs en Ubuntu en 10 minutos (Asm, C, Basic)...
» pic18f2550 y otros micros
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.