Autor Tema: Bootloader 18F4550 sin activación del modo carga de programa via HARDWARE  (Leído 3333 veces)

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

Desconectado lluisrovirale

  • PIC10
  • *
  • Mensajes: 3
Hola a todos!

Primero decir que hace mucho tiempo que uso este foro para resolver mis problemas con PIC.

Recientemente me he decidido a usar USB ya que estaba harto de ir con el, ya un poco antiguo, puerto COM. Para tal proposito me hecho una entrenadora la cual ya me ha dado unas pequeñas alegrias (he probado con exito la comunicación usando el USB CDC usando como compilador el CCS). Para aprovechar todas las capacidades del PIC, estoy intentando que en la entrenadora no haya ningun pin con hardware. Asi pues me quedan todos los pines libres (excepto los del clock, MCLR, VDD, VSS y los de la comunicación USB). De este modo puedo también aprovechar los perifericos de mi otra entrenadora 16F877A, que segun me he informado es altamente compatible con el 18F4550.

Para hacer más rapido el trabajo de cargar programas al PIC, cosa muy interesante tratandose de una entrenadora, he estado buscando por internet diferentes bootloaders, he encontrado gracias a los posts que hay en este foro diferentes soluciones pero no hay ninguna que me agrade del todo. Todas las que he visto y probado en algunos casos con éxito :) en otros sin :? necesitan un hardware adicional normalmente un "switch", para entrar o no entrar en el modo de carga del programa.

Asi pues mis preguntas son ¿Sabe alguien de algun bootloader que si tengo el software (de carga del HEX) abierto me ponga el PIC en modo carga (evidentemente despues de reinciarlo, de otro modo lo veo MAGIA :shock: )? ¿Si no existe como podria empezar a crearlo en CDC o mejor usando HID o otro tipo o tal vez es algo imposible crear un bootloader con estas caracteristicas?
Muchas gracias.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Bootloader 18F4550 sin activación del modo carga de programa via HARDWARE
« Respuesta #1 en: 24 de Agosto de 2011, 14:50:58 »
Y si no quieres usar un switch podes utilizar un jumper  :rolleyes: Porque sino, para entrar en modo bootloader el programa que se esté ejecutando debe implementar comunicación USB como para mediante un comando del software establecer un valor en la EEPROM y resetear el microcontrolador. Al Resetearse el código del bootloader, en lugar de testear el switch, testearía el valor en la EEPROM para determinar si entras o no al modo bootloader.  :?


Saludos!

No contesto mensajes privados, las consultas en el foro

Desconectado lluisrovirale

  • PIC10
  • *
  • Mensajes: 3
Re: Bootloader 18F4550 sin activación del modo carga de programa via HARDWARE
« Respuesta #2 en: 24 de Agosto de 2011, 16:02:42 »
Y si no quieres usar un switch podes utilizar un jumper  :rolleyes: Porque sino, para entrar en modo bootloader el programa que se esté ejecutando debe implementar comunicación USB como para mediante un comando del software establecer un valor en la EEPROM y resetear el microcontrolador. Al Resetearse el código del bootloader, en lugar de testear el switch, testearía el valor en la EEPROM para determinar si entras o no al modo bootloader.  :?


Saludos!

Esta solución ya la habia tenido en cuenta usando un jumper en lugar de un switch me evito el problema de tener hardware colgando de una pata del pic.

Yo estaba pensando mas bien en algo parecido a lo que hacia un bootloader que funcionaba mediante el protocolo RS232 para el 16F877A, lo encontre en internet y era excelente.

El mecanismo era el siguiente, al reiniciar el pic se ejecutaba el bootloader y preguntaba si le habia llegado el comando de programación via RS232. Este comando solo le llegaba cuando tenia abierto el software de carga en el PC y habia pulsado el boton write.
Al llegarle dicho comando cargaba el programa sin ningun tipo de modifiación en el codigo fuente. No como en el caso de los bootloaders USB que he visto que el programa debe contener unas linias para no "cargarnos" el propio bootloader (esto ya es ser tocapelotas :x ). Una vez cargado con exito se ejecutava directamente el codigo cargado.
Si el software del PC no estaba abierto o no habiamos pulsado el boton write, el bootloader pasaba directamente a la ejecuccion del programa grabado en la memoria del PIC.

De este modo no haria falta que el programa cargado mediante el bootloader tuviese que tener una comunicación USB implementada.

¿Seria esto posible?

Desconectado lluisrovirale

  • PIC10
  • *
  • Mensajes: 3
Re: Bootloader 18F4550 sin activación del modo carga de programa via HARDWARE
« Respuesta #3 en: 31 de Agosto de 2011, 22:57:21 »
Hola de nuevo

Estoy intentando cargar un código compilado con la versión 4.114 del compilador CCS usando el HID-Bootloader de Microchip. El código me retorna vía USB-CDC (es decir emulando un puerto serie) el estado de unos pins del PIC (18F4550).  Mi problema es el siguiente: a pesar de poder grabar bien el PIC con la aplicación de microchip, al cambiar el switch de la pata B4 de estado y reinciar el PIC, se cambia el tipo de dispositivo en el administrador de dispositivos pero al usar el hyperterminal no aparece nada.

Si grabo el codigo directamente en el PIC usando un quemador externo todo anda perfecto.

He probado varias soluciones que he encontrado en este y otros foros y no me fucniona ninguna (desde la inclusión de código en el CCS para reservar el espacio de memoria hasta importar y exportar el .hex con MPLAB).

Si alguien pudiera darme alguna idea que ando muy perdido y extrañado.

PD: Si alguien quiere los codigos que estoy usando que me los pida y se los mando via mail sin ningun problema.

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Bootloader 18F4550 sin activación del modo carga de programa via HARDWARE
« Respuesta #4 en: 26 de Enero de 2012, 16:13:56 »
Hola!

Quisiera saber si resolviste el problema de la "convivencia" del bootloader con el código de comunicación USB CDC, porque actualmente estoy teniendo el mismo problema.

Estoy usando la versión 4.104 del compilador. Si cargo el programa de comunicación CDC con mi programador externo, todo funciona bien. Ahora, cuando uso el bootloader para cargar el programa, la comunicación CDC deja de funcionar.

Alguna idea???

Saludos