Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

19/07/2014 #21

Avatar de TRILO-BYTE

puede que compile bien pero el CCS dependiendo la vercion genera errores en el USB
lo se por que me paso ami

lo que puedes hacer es buscar un .hex de un bootloader como el que da microchip que esta en microchip solutions 2013

tiene 2 bootloaders uno para el 2550 y el efectivo del 4550
se lo cargas y funciona bastante bien
19/07/2014 #22
Moderador

Avatar de D@rkbytes

deadsistem dijo: Ver Mensaje
Gracias por tu pronta respuesta D@rkbytes pero sigue sin funcionar.
Si entra el modo bootloader pero la PC no detecta el dispositivo.
Otra pregunta: ¿Tiene que llevar USBDIV, no? Debido a que el periferico es de 48MHz.
Lo que pasa es que existen fuses que el compilador establece por defecto aún sin escribirlos en el programa.
Pones y quitas por software los que no hagan falta, por lo tanto, no es necesario escribirlos todos.
Mirando el archivo hex te puedes dar cuenta sobre la correcta configuración.
deadsistem dijo: Ver Mensaje
Sigue igual. No lo detecta ninguna PC. ¿Qué podrá ser?
Posiblemente tengas algo mal conectado, si usas protobord revisa falsos contactos.
Existen algunos que no hacen buen contacto y dan muchos dolores de cabeza.

Trata con lo siguiente:
.- Prueba subiendo el valor del capacitor del pin 14 a unos 470nF.
.- Cuando ocurre un error al conectar el dispositivo y es mal detectado, tienes que reiniciar la PC.
Esto sucede cuando el PIC no está trabajando a la frecuencia requerida.
.- Realiza un simple programa ejecutandose a 48MHz. (Hacer destellar un LED a 500Ms. Por ejemplo)
Eso descarta algo mal palabra de configuración.
Si notas que el LED destella a otra frecuencia, entonces debes corregirla.
.- Revisa compatibilidades sobre la versión del compilador.

Suerte.
19/07/2014 #23


D@rkbytes dijo: Ver Mensaje
Posiblemente tengas algo mal conectado, si usas protobord revisa falsos contactos.
Existen algunos que no hacen buen contacto y dan muchos dolores de cabeza.
estoy usando placa..
Trata con lo siguiente:
.- Prueba subiendo el valor del capacitor del pin 14 a unos 470nF.
.- Cuando ocurre un error al conectar el dispositivo y es mal detectado, tienes que reiniciar la PC.
Esto sucede cuando el PIC no está trabajando a la frecuencia requerida.
.- Realiza un simple programa ejecutandose a 48MHz. (Hacer destellar un LED a 500Ms. Por ejemplo)
Eso descarta algo mal palabra de configuración.
Si notas que el LED destella a otra frecuencia, entonces debes corregirla.
.- Revisa compatibilidades sobre la versión del compilador.

Suerte.
la frecuencia bien,hice parpadear leds a 1 segundo y todo bien... cargue de nuevo el bootloader e hice todo eso que me dijiste y nada.. la compu no lo detecta, me sorprende que aunque lo conecte en otra compu tampoco lo reconoce, si enciende y todo pero nada...
tiene algo que ver que el bootloader no tenga el PIN SENSE (no se para que sea pero no lo tiene) he visto que otros bootloaders si lo tienen.

Tengo que borrar algun driver USB to UART instalado? como hago eso?
19/07/2014 #24

Avatar de TRILO-BYTE

si estas usando el bootloader de CCS cuando lo conectas dira dispositivo desconocido
y un simbolo con una interrogacion en el panel de control.

lo que sigue es ir a la carpeta del CCS y buscar el Driver deberia detectarlo recuerdo que hise eso una vez
19/07/2014 #25
Moderador

Avatar de D@rkbytes

deadsistem dijo: Ver Mensaje
La frecuencia bien, hice parpadear leds a 1 segundo y todo bien.
Cargué de nuevo el bootloader e hice todo eso que me dijiste y nada.
La compu no lo detecta, me sorprende que aunque lo conecte en otra compu tampoco lo reconoce, si enciende y todo pero nada.
No sé a que se deba que no lo pueda reconocer otra PC, hice una prueba con los programas que subiste tras haber modificado la palabra de configuración y si lo detectó mi PC.
Sin embargo me pide controladores que jamás he podido encontrar y los que vienen con la versión que yo tengo de PICC, no funcionan.

Adjunto un vídeo para que veas como si es detectado el dispositivo en mi PC con esos programas.
Por eso se me ocurre que sigues teniendo algo mal conectado o algo que estés pasando por alto.
Capacitores del cristal, filtraje, lo básico, etc.
deadsistem dijo: Ver Mensaje
¿Tiene algo que ver que el bootloader no tenga el PIN SENSE (no sé para que sea pero no lo tiene) He visto que otros bootloaders si lo tienen.
Mira más atrás en el post #7 dentro del archivo EX_USB_BOOTLOADER.C se explica eso.
deadsistem dijo: Ver Mensaje
¿Tengo que borrar algun driver USB to UART instalado? ¿Cómo hago eso?
Cuando se instala correctamente un dispositivo o un controlador, es mostrado en el administrador de dispositivos.
Como no puedes instalar correctamente el dispositivo, lo más seguro es que no te aparezca nada o te aparezca el dispositivo con un signo de interrogación o advertencia.
Pero verifica si te aparece algo nuevo referente a HID, si es así desinstálalo. Mira por aquí.
No hay problema si remueves algún otro controlador, cuando reinicias, el sistema los vuelve a buscar, y si no los encuentra te los pedirá nuevamente.
Archivos Adjuntos
Tipo de Archivo: rar Test USB Bootloader.rar (142,9 KB (Kilobytes), 181 visitas)
19/07/2014 #26


Adjunto un video para que veas como si es detectado el dispositivo en mi PC con esos programas.
Por eso se me ocurre que sigas teniendo algo mal conectado o algo que estés pasando por alto.
Capacitores del cristal, filtraje, lo básico, etc.
muchisismas gracias por los comentarios pero aun sigue sin funcionar....tengo que ponerle resistencias de pull UP al D+ y D- del USB del PIC? si no es mucha molestia, me puedes pasar el diagrama que utilizaste para que lo reconociera tu PC? estoy pensando que incluso puede ser que mi pic se le quemaron los pines del USB,,, le he cargado otro programa para probar si aun funciona el pic y todo bien, pero supongo que por alguna extraña razon esos pines del USB ya no funcionan.... ire a comprar otro pic18f2550 y probare nuevamente...

si estas usando el bootloader de CCS cuando lo conectas dira dispositivo desconocido
y un simbolo con una interrogacion en el panel de control.

lo que sigue es ir a la carpeta del CCS y buscar el Driver deberia detectarlo recuerdo que hise eso una vez
eso debería pasar, pero ni si quiera lo detecta aunque ya reinicie la PC, elimine los drivers anteriores y nada...

he revisado un poco los archivos que se incluyen en el bootloader y no encuentro la funcion USB_INIT(); que se incluye en el main() del bootloader principal, ha de ser algo que no anda bien en los archivos, o en el usb_enumeratd(); pero no se que es.....
ahora me nace otra duda: el bootloader que trato de usar es HID o simula una comunicacion RS232?
hablo del codigo que puse del bootloader en el comentario Bootloader PIC18F2550 con CCS PIC C Compiler #18
19/07/2014 #27
Moderador

Avatar de D@rkbytes

deadsistem dijo: Ver Mensaje
Muchísimas gracias por los comentarios pero aun sigue sin funcionar.
¿Tengo que ponerle resistencias de pull UP al D+ y D- del USB del PIC?
Si no es mucha molestia, ¿me puedes pasar el diagrama que utilizaste para que lo reconociera tu PC?
No necesitas colocar resistencias pull-up, así como está en el esquema adjunto es como lo probé.

Mira esta parte del código, es importante para que se inicie el reconocimiento del dispositivo.
Código:
void main(void) 
{
   if(!input(BTLDR))             // Si el pin RC2 está en 0 entonces...
   {
      ON(LEDR);                  // Se enciende el LED del pin RC1
      g_InBootloader = TRUE;     
      usb_cdc_init();            // Se inicia el USB CDC
      usb_init();                // Inicialización USB
      while(!usb_enumerated());  // Esperar mientras el dispositivo se enumera...
      load_program();            // Cargar el programa.
   }
   g_InBootloader = FALSE;
   OFF(LEDR);
   #ASM
      goto APPLICATION_START
   #ENDASM
}
Verifica que el pin RC2 esté en 0, yo le puse una resistencia de 4.7k hacia VDD como pull-up.
Para mantenerlo en estado bajo, únicamente coloqué un puente hacia VSS.
Si esté pin se encuentra flotante o en estado alto, la PC nunca reconocerá el dispositivo.

Suerte.
Imágenes Adjuntas
Tipo de Archivo: jpg 18F2550 Bootloader Test.jpg (68,6 KB (Kilobytes), 82 visitas)
19/07/2014 #28


ya correjí el problema , desafortunadamente no se que era .. ya que cambie todo nuevo , pero ahora lo armé en protoboard y funcionó correctamente con tu diagrama Darkbytes gracias ... le cargue el bootloader que coloqué anteriormente en este tema para el pic18f2550 cambiando el siguiente codigo:
Código:
#fuses HSPLL,PLL2,USBDIV,CPUDIV1,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOBROWNOUT,VREGEN,PUT,MCLR,NOPBADEN
#use delay(clock=48MHz)
#define __USB_PIC_PERIF__ 1
#define (__PCH__)
porque uso un cristal de 8MHz, y las demas definiciones se las agregué porque no las tenia y en el USB_BOOTLOADER.H las pide y no estaban definidas...

y ya lo reconoce en el COM9 porque ya tenia instalado el driver que trae el CCS compiler en la direccion C:\Program Files (x86)\PICC\Drivers\NT,2000,XP,VISTA,7... TODO bien hasta ahora...

solo tengo una pregunta mas que refiere a lo siguiente: las direcciones de memoria en las que se carga este bootloader segun son: desde 0x0 hasta 0x1FFF, entonces entiendo que:
el firmware que yo cargue a travez del bootloader empieza desde 0x2000 hasta -1 del final de la memoria de programa del pic, y que las interrupciones de la aplicación empiezan +0x08 a partir del inicio del programa, es decir:

Código:
#define LOADER_SIZE        (0x1FFF)
#define LOADER_START       (0)
#define LOADER_END         (LOADER_SIZE)
#define APPLICATION_START  (LOADER_SIZE+1)
#define APPLICATION_END    (getenv("PROGRAM_MEMORY")-1)
#define APPLICATION_ISR    (APPLICATION_START+8)
1.- entonces como voy a saber cuanto tengo aun de espacio para hacer mi firmware? porque al compilar el bootloader me dice que tiene RAM 31% y ROM 19%, y mi firmware tiene RAM 23% y ROM 65%.
20/07/2014 #29
Moderador

Avatar de D@rkbytes

deadsistem dijo: Ver Mensaje
Ya corregí el problema , desafortunadamente no sé que era ya que cambie todo nuevo.
Pero ahora lo armé en protoboard y funcionó correctamente con tu diagrama D@rkbytes, gracias. ... le cargue el bootloader que coloqué anteriormente en este tema para el pic18f2550 cambiando el siguiente código:
Código:
#fuses HSPLL,PLL2,USBDIV,CPUDIV1,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOBROWNOUT,VREGEN,PUT,MCLR,NOPBADEN
#use delay(clock=48MHz)
#define __USB_PIC_PERIF__ 1
#define (__PCH__)
porque uso un cristal de 8MHz, y las demas definiciones se las agregué porque no las tenía y en el USB_BOOTLOADER.H las pide y no estaban definidas.
OK, que bien que ya pudiste hacer que la PC lo reconociera.
Aunque en el post #18 comentaste que estabas usando un cristal de 20MHz.
deadsistem dijo: Ver Mensaje
les comento que mi diagrama únicamente tiene un cristal de 20Mhz
Por ese motivo fue que corregí la palabra de configuración en tu programa.
deadsistem dijo: Ver Mensaje
ya lo reconoce en el COM9 porque ya tenia instalado el driver que trae el CCS compiler en la direccion C:\Program Files (x86)\PICC\Drivers\NT,2000,XP,VISTA,7... TODO bien hasta ahora.
Si no es molestia, adjunta los controladores que usaste, porque los que yo tengo no funcionan (Posible incompatibilidad de versión)
A muchas personas nos pueden servir, ya que hemos tenido problema con esos controladores.
deadsistem dijo: Ver Mensaje
¿Entonces cómo voy a saber cuanto tengo aún de espacio para hacer mi firmware? porque al compilar el bootloader me dice que tiene RAM 31% y ROM 19%, y mi firmware tiene RAM 23% y ROM 65%.
Como los programas para Bootloaders son muy diferentes y tienen diferentes tamaños, es difícil decir cuanto espacio disponible te quedará tras haberlo cargado.
Lo que yo hago es mirar el archivo hex y me fijo hasta que dirección llega.
De ahí en adelante es el espacio que tendrás disponible.
Algunos tienen dos direccionamientos y también ese espacio se debe tener en cuenta.

Saludos.
20/07/2014 #30


no es ninguna molestia... espero les sirva, mi LAP es Windows 7 Pro x64 y si funciona bien, les dejo el driver...

estoy intentando cargar el firmware en el PIC con el SIOW (desde la opción DOWNLOAD SOFTWARE) del CCs y me da error mientras descarga: dice TIMEOUT WHILE DOWNLOADING y a penas y hace una linea transferida de 1339... que puede ser? los fuses son iguales de mi firmware y del bootloader...

otra pregunta, como le cambio el nombre de CCS BOOTLOADER que viene en el usb_bootloader.h? quiero poner algo como "Nuevo Dispositivo V3.3"...
Archivos Adjuntos
Tipo de Archivo: rar NT,2000,XP,VISTA,7.rar (5,5 KB (Kilobytes), 97 visitas)
20/07/2014 #31

Avatar de TRILO-BYTE

el bootloader .h como que mueve los vectores de interrupcion
cuando quieres hacer eso de cambiar nombre
debes ir al USB descriptor y lo que va entre comillas es el texto que debe salir
20/07/2014 #32


el bootloader .h como que mueve los vectores de interrupcion
cuando quieres hacer eso de cambiar nombre
debes ir al USB descriptor y lo que va entre comillas es el texto que debe salir
gracias TRILO-BYTE lo checaré bien porque hay asignaciones de tamaños antes de cada string y hasta ahora no le entiendo...

respecto al problema del SIOW a veces se friqueaaa (falla)... solo hay que cerrar el SIOW y resetear el PIC y que entre en modo boot de nuevo.. esperamos unos 10 segundos a que lo reconozca bien el sistema operativo y entonces volvemos a correr el SIOW.exe y entonces si detectará automaticamente el COM donde esta instalado el driver... entonces volvemos a cargar nuestro firmware con el DOWNLOAD SOFTWARE...

SALUDOS Y MUCHAS GRACIAS A TODOS... espero que esto sirva de mucha ayuda a quienes estan empezando ya que a mi me ha servido un monton... saludos
23/03/2015 #33


Disculpen alguien me puede ayudar...estoy en un proyecto de la escuela y queria utilizar un bootloader para cargar en el 18f4550...pueden subirlo???estoy utilizando ccsc compiler...no se cual utilizar que no cambie el lenguaje...como son los pinguinos
23/03/2015 #34
Moderador

Avatar de D@rkbytes

El programa adjunto es el que se ha tratado en este tema, pero con la palabra de configuración para un 18F4550.

A mi no me ha funcionado, aunque he probado con varios controladores. (Uso XP SP3)
Imágenes Adjuntas
Tipo de Archivo: jpg Esquema Bootloader.jpg (102,0 KB (Kilobytes), 61 visitas)
Archivos Adjuntos
Tipo de Archivo: rar 18F4550 Bootloader.rar (9,9 KB (Kilobytes), 82 visitas)
09/08/2015 #35


Colegas, yo estoy haciendo el hardware del Bootloader y es completamente funcional.
La PC lo reconoce y carga los archivos HEX si problemas.

El problema es que los programas están mal sincronizados.
Me explico; hice un programa que prende y apaga un led durante un segundo con un cristal de 8 Mhz.
Cuando cargo el HEX al PIC con el Bootloader y empieza a correr el programa el led no prende y apaga en los 1 segundos que programé, se demora un poco más.
Así que pensé que sería porque el Bootloader fue grabado con una frecuencia de 48 Mhz y el HEX con uno de 8 Mhz.
Cambié la frecuencia del HEX a 48 Mhz y me funciona, pero cuando hago el mismo programa con interrupciones, los tiempos no concuerdan con los 1 segundos que programé.

¿Qué puede estar pasando? ¿Qué tengo que configurar?
¿Los archivos HEX a cargar deben tener todos la frecuencia a 48 Mhz.?
09/08/2015 #36

Avatar de TRILO-BYTE

pues es que todo eso suena a un problema de configuracion de los fuses

no se que cristal usas en el bootloader pero respecto al cristal debes hacer cambio en el fuses

otra cosa no se por que pero en CCS con el bootloader del 18f4550 si usas muchas variables el programa no corre por eso no siempre es bueno trabajando con botloader
09/08/2015 #37
Moderador

Avatar de D@rkbytes

Ya tenía esto olvidado porque no lograba que controladores se reconocieran, pero hace poco logré que funcionara.
Grafeno94 dijo: Ver Mensaje
¿Los archivos HEX a cargar deben tener todos la frecuencia a 48mhz?
Por lógica, si el Bootloader se ejecuta a una frecuencia de 48 MHz, también el programa que cargues debe ejecutarse a 48 MHz.

Esta es la configuración que usé para un programa de prueba:
Código PHP:
#include <18F4550.h>
#fuses   NOFCMEN,NOIESO
#use     delay(clock=48MHz,crystal=4MHz,USB_FULL)

#include "usb_bootloader.h" 
Grafeno94 dijo: Ver Mensaje
Cuando hago el mismo programa pero con interrupciones los tiempos no concuerdan con los 1 segundos que programé.
¿Qué puede estar pasando?
Si te es posible, adjunta el programa que mencionas para revisarlo.
16/03/2016 #38


Miré este post en la búsqueda de qué andaba mal con el ejemplo, igual y puede ser el fuse o porque estoy usando el reloj interno.
Yo utilizo la comunicación RS-232, no utilizo los controladores USB, uso un FTDI para la comunicación serial con los ejemplos ex_bootload y ex_bootloade

El problema es que al mandar el programa por Tera Term (configurando el Xon/Xoff que especifica como requerimiento) el PIC me responde correctamente con el ACK y con la solicitud del buffer lleno y vacío que son Xon y Xoff
Al menos eso parece en el osciloscopio, pero al final de la carga no parece ejecutarse el programa que se compiló, en este caso una impresión de la suma de un número por serial (ya lo probé ejecutándolo en el PIC por separado)

No sé si tenga problemas el direccionamiento de memoria o falte ejecutar algo más para que se logre cargar el programa.

Aquí les dejo un vídeo del problema.

El vídeo es pesado como para cargarlo. Una disculpa.

Esta configuración la utilizo para ambos programas. Los fuses son genéricos, puestos por el CCS C Compiler.
Código PHP:
#elif defined(__PCH__)
#include <18F2550.h> 
#fuses NOWDT,INTRC,NOLVP,NOXINST,NOVREGEN 
#use delay(internal=8000000) 
#use rs232(baud=9600,parity=N,xmit=PIN_B0,rcv=PIN_B1,bits=8,stream=PORT1)
#define PUSH_BUTTON PIN_A1
#endif 
18/03/2016 #39
Moderador

Avatar de D@rkbytes

¿Ya probaste usando el SIOW? Es el mismo programa que la empresa recomienda para descargar el programa al microcontrolador.
Se encuentra en la carpeta de instalación del compilador.

Yo también lo he probado con el oscilador interno a 8 MHz. y usando un FT232RL, sin ningún problema.
30/03/2016 #40


Si eh intentado usar el siow tambien pero me hace lo mismo que el tera, le configuro el xon/xoff a 9600.

no se si sea un problema en las conexiones el dtr y cts del ftdi deben conectarse al pic para este procedimiento?
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.