Autor Tema: Bootloader 18F4550 RS232 Serie  (Leído 19863 veces)

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

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #30 en: 05 de Marzo de 2012, 11:07:08 »
Si, es necesario que comunique en ambos sentidos.

El protocolo inicial es el siguiente:
   PC -> microcontrolador    envía byte  0xC1
   Microcontrolador  -> PC    envía el código de microcontrolador y la letra 'K'

Saludos.




Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #31 en: 05 de Marzo de 2012, 20:55:32 »
Finalmente pude detectar el PIC con el TinyBootloader!

Tenía un problema en el circuito RS232 con el MAX232. Ahora logró que me detecte el PIC con el bootloader a 57600, pero al momento de descargar el programa me genera un error; en el tinybootloader tengo el siguiente mensaje cuando me detecta el PIC:

Citar
Connected to \\.\COM5 at 57600
  Searching for PIC ...
  Found:18F 2550/4550
 

Y el error al intentar descargar el programa es:

Citar
Connected to \\.\COM5 at 57600
  HEX: 5 min old, INHX32,18Fcode+cfg, total=144 bytes.
  Searching for PIC ...unknown pic type:  0h,
  ERROR!

El programa que intento descargar es el que pongo a continuación:

Código: [Seleccionar]
#include <18F4550.h>
#fuses HSPLL,NOMCLR,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#use rs232(baud=115200,xmit=pin_c6,rcv=pin_c7)//configuracion del puerto rs232 envia por pin_c6 y recibe por pin_c7

void main()
{
char dato;
   while(true)
   {


 if(kbhit())
         {
            dato=getc();
            printf("Recibi el dato: %c",dato);//imprimo datos por RS232;
            }

           
   }
}
« Última modificación: 05 de Marzo de 2012, 20:57:39 por marito »

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #32 en: 05 de Marzo de 2012, 21:04:47 »
Tampoco logré descargar con el bootloader a 19200 baudios...

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #33 en: 06 de Marzo de 2012, 10:24:56 »
Enhorabuena, ya has detectado el pic con el bootloader.

El otro problema parece ser del bootloader. Prueba con esta versión:

   PIC18F2550_i8Mhz_9600baud.hex

Es muy lento, pero seguro.

Saludos.
« Última modificación: 06 de Marzo de 2012, 10:29:40 por picuino »

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #34 en: 07 de Marzo de 2012, 19:49:48 »
Hola Picuino!

Al final pude descargar el programa que subí un post atrás! Me funciono con el bootloader a 9600 que posteaste. El problema es que la comunicación que quiero establecer con el programa que subí no me funciona. Si descargo el programa directamente con la placa programadora, si me funciona. Además, una vez que hice la descarga del programa, no puedo volver a descargar con el bootloader, me genera un error:

Citar
Connected to \\.\COM5 at 9600
  HEX: 24 min old, INHX32,18Fcode+cfg, total=148 bytes.
  Searching for PIC ...
  pic sending unknown data:  "K" <>  0h=
Check baudrate & Start Write while PIC is not sending serial data (e.g. in reset)
  ERROR!

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #35 en: 08 de Marzo de 2012, 09:50:31 »
Si grabas tu programa directamente con la placa programadora, probablemente estás borrando el bootloader.
Graba otra vez el bootloader y podemos hacer pruebas a ver porqué tu programa de aplicación no funciona.

Para comenzar, creo que deberías probar que el bootloader funciona con un programa muy sencillo que hace parpadear todos los pines de RA y RB y envía caracteres por la USART a la misma velocidad a la que esté configurado el Bootloader:
Busca Blink Test en este archivo: Firmware para PIC18F2550
También adjunto el programa hex con este mensaje.


Si esto funciona, el problema en tu aplicación puede deberse a:

   1.- El programa necesita un salto en la dirección 0
   Prueba a poner el origen del programa en la dirección 20h

   2.- Los fuses del programa son distintos a los fuses del bootloader
   El bootloader no graba la configuración de los fuses, hay que adaptarse a la configuración del bootloader.
   También se puede cambiar la configuración a mano con los "códigos iniciales" del tiny pic bootloader siempre que no interfieran con el bootloader.

   3.- Inicialización
   Cuando el bootloader salta al programa de aplicación, mantiene la configuración de la usart, oscilador, etc,
   Esta configuración es diferente a la configuración que hay después del reset.



Saludos.
« Última modificación: 08 de Marzo de 2012, 09:54:32 por picuino »

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #36 en: 08 de Marzo de 2012, 11:44:57 »
El programa lo grabe con la placa para estar seguro que realmente funcionaba. Este programa, recibe un caracter del PC y lo reenvia. Funciona OK.

Luego de la prueba, grabé de nuevo el bootloader de 9600 baudios. Posteriormente, cargue mi programa con el bootloader. Cuando envio un caracter, recibo valores erráticos. Probé con el programa a diferentes velocidades y siempre el mismo problema. También probé a 9600 baudios y tampoco funcionó.

Otro problema, es que una vez que descargo mi programa con el bootloader, si intento descargar otra vez el programa, obtengo error.

Por lo que comentas en el punto 3, debería mantener la misma configuración en mi programa que en el bootloader y también los fuses por lo que comentas en el punto 2; por lo que necesitaría si me podes pasar el programa ya que con el HEX no tengo acceso a la configuración.

Lo del punto 1, lo voy a probar porque quizás esa es la causa de mi problema de no poder descargar más de una vez con el bootloader.

Gracias!
Saludos!

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #37 en: 08 de Marzo de 2012, 15:30:09 »
En mi web puedes encontrar las distintas versiones del bootloader con los ASM y los HEX. Te paso el enlace directo al archivo ZIP:

Tiny PIC Bootloader firmware para PIC18F2550

El programa de test que te he pasado en el mensaje anterior está probado y funciona OK con el bootloader.

Saludos
« Última modificación: 08 de Marzo de 2012, 15:34:16 por picuino »

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #38 en: 08 de Marzo de 2012, 19:37:22 »
Hola Picuino!

Estoy viendo la configuración de fuses y no encuentro si hay alguno diferente entre mi programa y el bootloader.

Los de mi programa son los que siguen:

Código: [Seleccionar]
#fuses HSPLL,NOMCLR,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
Hay alguno que se encuentre diferente y que pueda afectar el funcionamiento de mi programa?

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #39 en: 08 de Marzo de 2012, 20:12:18 »
Creo que no.
¿Has probado mi programa de test con el bootloader?
Si el programa de test funciona, el problema está en tu programa.
Si es ese es el problema, puedes mandarme tu HEX para que le eche un vistazo.

Saludos.

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #40 en: 08 de Marzo de 2012, 20:35:24 »
Agregue la protección de las primeras líneas del bootloader en mi programa y ahora puedo descargar tantas veces como quiera!

 Aún no puedo hacer funcionar el programa de enviar y recibir datos. Estoy configurando a la velocidad de 9600 baudios y no recibo nada. Aumentando la velocidad en el terminal que uso para recibir los datos a partir de 56000 baudios, comienzo a recibir caracteres erróneos, pero por debajo de 56000 no recibo nada.

Si cargo el programa directamente con la placa programadora el programa funciona bien... muy raro
« Última modificación: 08 de Marzo de 2012, 20:51:23 por marito »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #41 en: 09 de Marzo de 2012, 11:58:08 »
Aún no puedo hacer funcionar el programa de enviar y recibir datos. Estoy configurando a la velocidad de 9600 baudios y no recibo nada. Aumentando la velocidad en el terminal que uso para recibir los datos a partir de 56000 baudios, comienzo a recibir caracteres erróneos, pero por debajo de 56000 no recibo nada.



El programa que intento descargar es el que pongo a continuación:

#include <18F4550.h>
#fuses HSPLL,NOMCLR,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#use rs232(baud=115200,xmit=pin_c6,rcv=pin_c7)//configuracion del puerto rs232 envia por pin_c6 y recibe por pin_c7
...

A mi me parece que tu programa funciona a 115200 baudios.

Saludos
« Última modificación: 09 de Marzo de 2012, 12:00:12 por picuino »

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #42 en: 09 de Marzo de 2012, 15:49:13 »
En el código que copie, tengo configurado a 115200, pero también he trabajado con la configuración del RS232 a 9600

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #43 en: 09 de Marzo de 2012, 18:55:01 »
Prueba a descargar este programa a ver si te funciona:

Blink and Usart Test

Devuelve todos los caracteres que le envíes por RS232 (función echo)
También enciende y apaga todos los pines de los puertos RA y RB.

Está probado y funciona OK con el bootloader.

Saludos.
« Última modificación: 09 de Marzo de 2012, 19:05:58 por picuino »

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Bootloader 18F4550 RS232 Serie
« Respuesta #44 en: 10 de Marzo de 2012, 10:52:43 »
Hola Picuino!

Probé el programa que me pasaste. Lo que hace es enviar ceros y unos de manera alternativa. Me funciona. Lo de echo no lo hace. Viendo un poco el código creo que sólo realiza el envío.



 

anything