TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: marito en 23 de Febrero de 2012, 22:35:03

Título: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 23 de Febrero de 2012, 22:35:03
Hola a todos!

Estoy trabajando con un PIC 18F4550, tengo que recibir señales y efectuar un controlador, para lo que necesito enviar señales a una PC para graficar.

Intenté trabajar con comunicación y bootloader USB CDC, pero es muy complicado que funcionen ambas tareas todo el tiempo.

Necesitaría hacer funcionar un bootloader por el puerto serie RS232, ya que considero que es mucho más robusto su funcionamiento, al mismo tiempo que sencillo.

Alguien podría darme algo de información de como implementar un bootloader serie en un PIC18F4550?


Gracias!
Saludos
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Suky en 23 de Febrero de 2012, 22:44:03
Intenté trabajar con comunicación y bootloader USB CDC, pero es muy complicado que funcionen ambas tareas todo el tiempo.

 :shock: No funciona así, no se ejecutan al mismo tiempo, sino que al iniciarse se ejecuta uno u otro sector del código. Seguramente el bootloder no es el problema, porque es algo ya probado y si lo implementas bien no tendrás problemas, lo que tienes que estudiar bien es como utilizar USB CDC en tu aplicación. Hay varios ejemplos dando vuelta por la red.

Y sino utiliza el buscador, bootloader RS232 hay varios  ;-)
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: darck_khronos en 23 de Febrero de 2012, 23:55:11
en la carpeta de samples de ccs viene un codigo de bootloader en 232 asi como dice suky dudo que el problema sea el boot posiblemente es como lo quieres aplicar
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 24 de Febrero de 2012, 08:27:04
El problema que tengo es que tengo que resetear muchas veces el PIC para que se conecte en modo bootloader. Otra cosa es que cuando estoy descargando el programa a veces se cuelga la misma.

He usado el bootloader serie en PICs de la línea 16F, y realmente es muy sencillo, y ni me entero que tengo un bootloader, directamente reseteando el PIC ya estoy listo para efectuar la descarga sin problemas.


darck_khronos has usado el bootloader de los samples que mencionabas?

Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 24 de Febrero de 2012, 10:56:30
darck_khronos quería hacerte unas preguntas más,

cual es el sample de CCS?

que programa hay que usar para descargar los programas con el bootloader ese?

Gracias!
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 24 de Febrero de 2012, 11:58:24
Por si te sirve, yo utilizo este bootloader:

   http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm

El bootloader resetea automaticamente al micro a través de la línea RTS del RS232.

El firmware adaptado al micro 18F2550 puedes conseguirlo en la página original o en la mía.
En mi página encontrarás el firmware ya adaptado y compilado a hex para varias velocidades de transmisión y de reloj:

   Tiny PIC Bootloader 18F2550 (https://sites.google.com/site/picuino/picuino-18f2550/bootloader/TinyBoot_18F2550.zip?attredirects=0)

El interface se puede realizar con MAX232 o con transistores:

(https://sites.google.com/site/picuino/picuino-18f2550/bootloader/RS232_BJT_Interface.png) (https://sites.google.com/site/picuino/picuino-18f2550/bootloader/RS232_BJT_Interface.png)

(https://sites.google.com/site/picuino/picuino-18f2550/bootloader/moz-screenshot%20Michael%20St.%20Pierre.jpg) (https://sites.google.com/site/picuino/picuino-18f2550/bootloader/moz-screenshot%20Michael%20St.%20Pierre.jpg)


Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 24 de Febrero de 2012, 12:12:59
picuino yo necesitaría el bootloader para el 4550, en tu página y en el link que pusiste sólo encuentro para el 2550... está para el que necesito?


gracias!

Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 24 de Febrero de 2012, 12:22:59
El PIC18F2550 y el 18F4550 son el mismo micro.
El 18F4550 tiene más líneas de entrada-salida, pero funciona igual, con el mismo bootloader y mismo software.

Saludos.

Editado:
Si quieres modificar el fichero ensamblador, entonces sí que te puede interesar cambiar las referencias al 18F2550 por el 18F4550.
Esto es necesario si quieres utilizar en el bootloader entradas/salidas que sólo estén en el 4550.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 24 de Febrero de 2012, 12:29:24
Buenísimo! En un rato lo pruebo y te comento los resultados!

Pienso usar el MPLAB 8.8 con mi programador ICD2-USB para descargar el bootloader.

Luego directamente con el tiny bootloader descargo los programas con el PIC montado sobre mi circuito.

Te parece la mejor manera?

Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 24 de Febrero de 2012, 12:32:39
Citar
El interface se puede realizar con MAX232 o con transistores

Estoy usando el MAX232 como interface, ayer estuve probando enviar datos a la PC, y funcionó perfecto. La misma placa ya la había usado con PICs de la línea 16F.

Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 24 de Febrero de 2012, 12:38:47
Cada bootloader es un mundo y debes tener en cuenta sus limitaciones.

El Tiny PIC Bootloader se almacena en las últimas 100 direcciones de memoria (que no se pueden utilizar)

Por otro lado las 4 primeras direcciones del micro se utilizan para saltar al bootloader.
Por lo tanto las 4 primeras direcciones de tu programa se deben guardar en otro sitio y deberían contener sólo un salto a la rutina principal.

La mayoría de programas no debería darte problemas. Si encuentras problemas consulta. Este bootloader es más sencillo de utilizar que otros.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 24 de Febrero de 2012, 12:42:13
Entonces debería colocar una protección para las cuatro primeras direcciones en cada programa que utilice con este bootloader? O escribo mi programa sin tener en cuenta que existe un bootloader en el mismo chip?

Gracias!
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 24 de Febrero de 2012, 12:52:37
Yo suelo escribir como si no hubiera bootloader y no suele darme ningún problema.
Si después el bootloader da un aviso mientras grabo el programa, coloco el inicio del programa a partir de la dirección 20h y listo.
Cada compilador tiene una instrucción diferente. Para el C18 sería:

#pragma code=20h

/* Y aquí comienza el código */

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 25 de Febrero de 2012, 19:00:33
Picuino estoy intentando montar el bootloader PIC18F2550_HS_20Mhz_57600baud.hex en un PIc18F4550.

Descargo el .hex con el mplab y mi programadora ICD2-USB en el PIC. Pero cuando intento conectarme con el PIC a través del Tiny Bootloader me genera el error siguiente:

Citar
Connected to \\.\COM5 at 57600
  HEX: 6 min old, INHX32,18Fcode+cfg, total=120 bytes.
  Searching for PIC ...Not found,
  ERROR!

En que puedo estar fallando?
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 25 de Febrero de 2012, 19:02:10
Otro dato es que si le doy CheckPic, tengo la falla:

Citar
Connected to \\.\COM5 at 57600
  Searching for PIC ...Not found,
  ERROR!
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 25 de Febrero de 2012, 19:33:19
¿Estás seguro de que funciona el hardware a 57600baud y el reloj a 20Mhz?

En caso contrario, comienza con PIC18F2550_i8Mhz_19200baud.hex

Funciona con el oscilador interno a 8Mhz (no necesita reloj externo)

Funciona a 19200 baud verdaderos (con poco error) que es una velocidad lenta que da menos problemas.

Otro problema que puedes tener es de hardware. Comprueba que las señales Tx y Rx se reciban y envíen correctamente con un terminal rs232 quitando el micro del zócalo y puenteando los pines correspondientes.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 25 de Febrero de 2012, 19:54:15
Probé la comunicación RS232 PIC-PC y funciona. Le cargue un programa para enviar datos y los recibo correctamente en el terminal de la PC. Entonces el hard está ok.

Necesitaría que sea con 20MHz porque tengo la placa  armada con ese cristal

Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 25 de Febrero de 2012, 20:31:57
Los 8Mhz funcionan con el oscilador interno, aunque tengas cristal externo de 20Mhz.

De todas formas estoy pensando que antes de intentar la comunicación con el PIC necesitas resetearle.
El bootloader sólo funciona durante el primer segundo posterior al reset. Si pasado ese tiempo no recibe comunicación por el RS232, entonces el bootloader termina y salta al programa de usuario.

Si no has cableado el cable RTS del RS232 al reset del PIC, entonces debes pulsar reset en el PIC mientras el programa del PC está buscando al micro.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 25 de Febrero de 2012, 21:09:03
Estoy probando con el PIC18F2550_HS_20Mhz_19200baud, pero tampoco me conecta.

Uso un pulsador para forzar el reset
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 26 de Febrero de 2012, 07:43:49
He probando el PIC18F2550_HS_20Mhz_19200baud y a mí tampoco me conecta reseteando a mano.

El caso es que conecta perfectamente cuando el reset lo produce el PC, pero con el reset a mano no hay forma.
No se si el problema estará en el programa del PC.

Por ahora te recomiendo que intentes producir el Reset con la línea RTS del RS232. Esto automatiza mucho el procedimiento:

(http://www.etc.ugal.ro/cchiculita/software/resetpic.gif)

De todas formas yo recuerdo haber reseteado a mano con este bootloader sin problemas.
Cuando descubra el problema lo posteo.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 26 de Febrero de 2012, 13:03:47
Ya me funciona.
He comprobado el archivo PIC18F2550_HS_20Mhz_19200baud.hex  con un PIC18F2550 y con un PIC18F4550 y en ambos casos funciona correctamente.

El error que estaba cometiendo consistía en que estaba retirando el cable de TX en vez de el cable de Reset.

Con el cable TX y RX conectados (además de GND y Vdd) y sin el cable de Reset conectado, el bootloader funciona bien.

Mientras el programa del PC está buscando al microcontrolador hay que pulsar Reset en el microcontrolador.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 28 de Febrero de 2012, 09:50:54
Hola Picuino! He vuelto del descanso.

Te comento que he realizado las pruebas con el PIC18F2550_HS_20Mhz_19200baud.hex y tampoco he conseguido que funcione. Los pasos que hago son:

1) Monto el PIC18F4550 en mi placa programadora ICD2 USB y descargo el bootloader con el MPLab 8.8

2) Coloco el PIC en mi circuito, en el que el pueto serie tiene conectados los pines Tx, Rx, GND y Vdd.

3) Conecto la PC y el PIC, abro el tiny bootloader y doy la orden de buscar el PIC, en este momento pulso el reset del PIC... y no lo consigue detectar.

Puede ser que mi problema venga del windows 7 64 bits que estoy usando?

La comunicación entre PIC y Pc, con un programa que envía datos desde el PIC funciona de manera correcta.

Saludos!

Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 28 de Febrero de 2012, 10:21:46
Voy a preparar un bootloader modificado para poder observar fallos.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 28 de Febrero de 2012, 10:45:35
Adjunto bootloader de pruebas. Este bootloader no carga ningún programa en el microcontrolador, sólo comprueba que funcione correctamente la comunicación RS232 entre la aplicación bootloader del PC y el microcontrolador.

Velocidad de reloj = 8Mhz internos (no hace uso del oscilador externo de 20Mhz)
Velocidad de comunicaciones RS232 = 19200 baudios
Después de reset el puerto RA = 0

El puerto RA se utiliza para comprobar que se ejecutan las distintas fases del bootloader:
   RA0 = 1  Iniciado bootloader
   RA1 = 1  Iniciada la espera de recibir caracter por RS232
   RA2 = 1  Recibido al menos un caracter por el puerto RS232
   RA3 = 1  Bootloader finalizado después de esperar a recibir un caracter por el puerto RS232 y no recibir ningún caracter.
   RA4 = 1  Bootloader finalizado después de enviar por RS232 el código de microcontrolador y la letra 'K'

Una vez activada una salida del puerto RA, esta se mantiene activa hasta que se pulse reset.
Una vez finalizado el proceso de test el bootloader no salta al programa de usuario, se mantiene en un bucle indefinido hasta que se pulse reset.



EJEMPLO:
========
En caso de que funcione el bootloader y no reciba ninguna señal por el puerto RS232, los valores en el puerto A deben ser:
   RA0 = 1
   RA1 = 1
   RA2 = 0
   RA3 = 1
   RA4 = 0
Entonces deberías comprobar con un polímetro que llega alguna señal a la patilla RX (RC7) mientras envías datos por un terminal desde el PC.


Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 29 de Febrero de 2012, 17:56:38
Programa para testear comunicaciones RS232:

Programa test RS232 (https://sites.google.com/site/picuino/picuino-18f2550/bootloader/USART_echo.zip?attredirects=0)

Este programa realiza un echo (devuelve todas las señales que llegan desde el RS232)
Para probar comunicaciones:
   1. Grabar el programa en el microcontrolador
   2. Abrir un terminal RS232
   3. Enviar una cadena de texto por el terminal
   4. Comprobar que el terminal recibe la misma cadena de texto desde el microcontrolador

   5. Apagar el microcontrolador
   6. Enviar una cadena de texto por el terminal
   7. Comprobar que NO LLEGA ningún dato desde el microcontrolador

Saludos
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 01 de Marzo de 2012, 20:38:36
Picuino a que velocidad se debe configurar el terminal para testear la comunicación?
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 02 de Marzo de 2012, 08:47:03
Hasta el momento no he logrado que detecte el PIC con el tinybootloader.

Lo que he conseguido es, cargando un programa con la programadora, recibir datos en el terminal del PC desde el PIC. Por lo que el hardware estaría funcionando bien
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 02 de Marzo de 2012, 09:06:10
Picuino, para hacer la carga del bootloader en el PIC, tengo el programador ICD2-USB y el MPLAB v8.80.

En el MPLAB, importo el archivo .hex y luego doy la orden de program.

Te parece correcto este método?

No se me ocurre ninguna idea de cual puede ser el motivo de que no me funcione
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 02 de Marzo de 2012, 11:04:43
El programa de test funciona para cualquier velocidad de comunicación hasta 115200 baudios y puede que más porque no utiliza la USART, simplemente copia la señal de un pin en otro pin:

Programa test. RS232 echo (https://sites.google.com/site/picuino/picuino-18f2550/bootloader/USART_echo.zip?attredirects=0)

Creo que te funciona bien el envío de datos PIC --> PC
Pero puede que esté fallando la recepción de datos PC --> PIC

El test te puede decir si funciona el RS232 en los dos sentidos.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 05 de Marzo de 2012, 08:35:13
Hola Picuino!

Para el bootloader necesito que la comunicación PC-PIC sea en ambos sentidos? PIC-->PC y PC-->PIC?
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino 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.



Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito 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;
            }

           
   }
}
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 05 de Marzo de 2012, 21:04:47
Tampoco logré descargar con el bootloader a 19200 baudios...
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino 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.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito 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!
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino 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 (http://sites.google.com/site/picuino/picuino-18f2550/bootloader/TinyBoot_18F2550.zip?attredirects=0)
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.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito 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!
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino 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 (http://sites.google.com/site/picuino/picuino-18f2550/bootloader/TinyBoot_18F2550.zip)

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

Saludos
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito 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?
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino 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.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito 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
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino 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
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito 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
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 09 de Marzo de 2012, 18:55:01
Prueba a descargar este programa a ver si te funciona:

Blink and Usart Test (http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=37651.0;attach=18079)

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.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito 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.

Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 10 de Marzo de 2012, 13:57:54
Tienes toda la razon.
Por lo menos ahora sabemos que un programa puede enviar datos al PC.
Voy a preparar un programa de test para hacer echo y lo posteo.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 10 de Marzo de 2012, 15:15:26
Aquí está el test de USART (RS232) que devuelve todos los caracteres enviados:

   USART Test echo (http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=37651.0;attach=18081)

Hay versiones para varias velocidades de transmisión.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 10 de Marzo de 2012, 16:54:30
Funciona perfecto, el envío y recepción.

Tiene un problema que si quiero cargar por segunda vez el programa, se genera el siguiente error:

Citar
Connected to \\.\COM5 at 9600
  Searching for PIC ...
  Found:18F 2550/4550
 
Connected to \\.\COM5 at 9600
  HEX: 2 hours old, INHX32,18Fcode, total=90 bytes.
  Searching for PIC ...
  pic sending unknown data:  "K" <>  Ah=
 
Check baudrate & Start Write while PIC is not sending serial data (e.g. in reset)
  ERROR!

Lo probé a 9600 baudios. En resumen, la primera vez que hago la descarga, funciona bien. Si quiero descargar nuevamente el programa, genera error. Todo esto con el programa de TEST ECHO

Será por la protección de escritura de las primeras líneas del bootloader?

Voy a estudiar un poco los fuses de mi programa para ver si encuentro porque no funciona con mi aplicación
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 10 de Marzo de 2012, 22:05:15
A veces aparece ese error si intentas comunicar con el bootloader mientras este está utilizando el RS232.

Intenta otra vez pulsar "Check PIC" o "Write Flash" y la segunda vez funciona.

Saludos.

Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 15 de Marzo de 2012, 16:07:25
Hola Picuino!!!

Estuve probando el bootloader y sólo funciona con el programa que me enviaste para la comunicación ida y vuelta RS232. Podrías pasarme la configuración de fuses que debería tener?

Gracias!
Saludos
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 15 de Marzo de 2012, 19:25:10
El bootloader en formato HEX ya trae incluidos los fuses necesarios para funcionar. Cuando grabes el bootloader, aseguraté de grabar también los fuses incluidos en el HEX.
Las aplicaciones las graba el bootloader sin fuses. La aplicación que te envié tenía el código asm adjunto (sin fuses porque no se modifican los fuses del bootloader)

Como mi programa se carga y funciona correctamente, el problema no está en el microcontrolador ni en el bootloader, creo que está en tu programa.

Yo no conozco el compilador que utilizas, pero seguro que tiene una directiva #pragma o algo similar para decirle que comience en la dirección 50h. A ver si de esa manera te funciona.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 16 de Marzo de 2012, 08:55:58
Perfecto, voy a compilar mi programa sin fuses. Me podrías pasar la configuración de fuses del bootloader? La protección del área del bootloader ya la conseguí ubicando el programa a partir de la dirección 20h.

Utilizo el compilador PCW.

Saludos!
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 16 de Marzo de 2012, 16:29:27
Cada bootloader tiene una configuración de fuses. Te copio la de uno de ellos:

Enlace a todos los bootloader con código fuente (http://sites.google.com/site/picuino/picuino-18f2550/bootloader/TinyBoot_18F2550.zip?attredirects=0)


Fuses del fichero: PIC18F2550_i8Mhz_19200baud.asm

Código: ASM
  1. ;********************************************************************************************
  2. ; FUSE OPTIONS
  3. ;
  4. ; PLL Prescaler Selection bits:
  5. ;    CONFIG   PLLDIV = 1          ;No prescale (4 MHz oscillator input drives PLL directly)
  6. ;    CONFIG   PLLDIV = 2          ;Divide by 2 (8 MHz oscillator input)
  7. ;    CONFIG   PLLDIV = 3          ;Divide by 3 (12 MHz oscillator input)
  8. ;    CONFIG   PLLDIV = 4          ;Divide by 4 (16 MHz oscillator input)
  9.     CONFIG   PLLDIV = 5          ;Divide by 5 (20 MHz oscillator input)
  10. ;    CONFIG   PLLDIV = 6          ;Divide by 6 (24 MHz oscillator input)
  11. ;    CONFIG   PLLDIV = 10         ;Divide by 10 (40 MHz oscillator input)
  12. ;    CONFIG   PLLDIV = 12         ;Divide by 12 (48 MHz oscillator input)
  13. ;
  14. ; CPU System Clock Postscaler:
  15.     CONFIG   CPUDIV = OSC1_PLL2  ;[OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
  16. ;    CONFIG   CPUDIV = OSC2_PLL3  ;[OSC1/OSC2 Src: /2][96 MHz PLL Src: /3]
  17. ;    CONFIG   CPUDIV = OSC3_PLL4  ;[OSC1/OSC2 Src: /3][96 MHz PLL Src: /4]
  18. ;    CONFIG   CPUDIV = OSC4_PLL6  ;[OSC1/OSC2 Src: /4][96 MHz PLL Src: /6]
  19. ;
  20. ; USB Clock Selection bit (used in Full Speed USB mode only; UCFG:FSEN = 1):
  21. ;    CONFIG   USBDIV = 1          ;USB clock source comes directly from the primary oscillator block with no postscale
  22.     CONFIG   USBDIV = 2          ;USB clock source comes from the 96 MHz PLL divided by 2
  23. ;
  24. ; Oscillator Selection bits:
  25. ;    CONFIG   FOSC = XT_XT        ;XT oscillator, XT used by USB
  26. ;    CONFIG   FOSC = XTPLL_XT     ;XT oscillator, PLL enabled, XT used by USB
  27. ;    CONFIG   FOSC = ECIO_EC      ;External clock, port function on RA6, EC used by USB
  28. ;    CONFIG   FOSC = EC_EC        ;External clock, CLKOUT on RA6, EC used by USB
  29. ;    CONFIG   FOSC = ECPLLIO_EC   ;External clock, PLL enabled, port function on RA6, EC used by USB
  30. ;    CONFIG   FOSC = ECPLL_EC     ;External clock, PLL enabled, CLKOUT on RA6, EC used by USB
  31. ;    CONFIG   FOSC = INTOSCIO_EC  ;Internal oscillator, port function on RA6, EC used by USB
  32. ;    CONFIG   FOSC = INTOSC_EC    ;Internal oscillator, CLKOUT on RA6, EC used by USB
  33. ;    CONFIG   FOSC = INTOSC_XT    ;Internal oscillator, XT used by USB
  34. ;    CONFIG   FOSC = INTOSC_HS    ;Internal oscillator, HS used by USB
  35. ;    CONFIG   FOSC = HS           ;HS oscillator, HS used by USB
  36.     CONFIG   FOSC = HSPLL_HS     ;HS oscillator, PLL enabled, HS used by USB
  37. ;
  38. ; Fail-Safe Clock Monitor Enable bit:
  39.     CONFIG   FCMEN = OFF         ;Fail-Safe Clock Monitor disabled
  40. ;    CONFIG   FCMEN = ON          ;Fail-Safe Clock Monitor enabled
  41. ;
  42. ; Internal/External Oscillator Switchover bit:
  43.     CONFIG   IESO = OFF          ;Oscillator Switchover mode disabled
  44. ;    CONFIG   IESO = ON           ;Oscillator Switchover mode enabled
  45. ;
  46. ; Power-up Timer Enable bit:
  47.     CONFIG   PWRT = ON           ;PWRT enabled
  48. ;    CONFIG   PWRT = OFF          ;PWRT disabled
  49. ;
  50. ; Brown-out Reset Enable bits:
  51.     CONFIG   BOR = OFF           ;Brown-out Reset disabled in hardware and software
  52. ;    CONFIG   BOR = SOFT          ;Brown-out Reset enabled and controlled by software (SBOREN is enabled)
  53. ;    CONFIG   BOR = ON_ACTIVE     ;Brown-out Reset enabled in hardware only and disabled in Sleep mode (SBOREN is disabled)
  54. ;    CONFIG   BOR = ON            ;Brown-out Reset enabled in hardware only (SBOREN is disabled)
  55. ;
  56. ; Brown-out Voltage bits:
  57. ;    CONFIG   BORV = 0            ; 4.59 v
  58.     CONFIG   BORV = 1            ; 4.33 v
  59. ;    CONFIG   BORV = 2            ; 2.79 v
  60. ;    CONFIG   BORV = 3            ; 2.05 v
  61. ;
  62. ; USB Voltage Regulator Enable bit:
  63. ;    CONFIG   VREGEN = OFF        ;USB voltage regulator disabled
  64.     CONFIG   VREGEN = ON         ;USB voltage regulator enabled
  65. ;
  66. ; Watchdog Timer Enable bit:
  67.     CONFIG   WDT = OFF           ;HW Disabled - SW Controlled
  68. ;    CONFIG   WDT = ON            ;HW Enabled - SW Disabled
  69. ;
  70. ; Watchdog Timer Postscale Select bits:
  71. ;    CONFIG   WDTPS = 1           ;1:1
  72. ;    CONFIG   WDTPS = 2           ;1:2
  73. ;    CONFIG   WDTPS = 4           ;1:4
  74. ;    CONFIG   WDTPS = 8           ;1:8
  75. ;    CONFIG   WDTPS = 16          ;1:16
  76. ;    CONFIG   WDTPS = 32          ;1:32
  77. ;    CONFIG   WDTPS = 64          ;1:64
  78. ;    CONFIG   WDTPS = 128         ;1:128
  79. ;    CONFIG   WDTPS = 256         ;1:256
  80. ;    CONFIG   WDTPS = 512         ;1:512
  81. ;    CONFIG   WDTPS = 1024        ;1:1024
  82. ;    CONFIG   WDTPS = 2048        ;1:2048
  83. ;    CONFIG   WDTPS = 4096        ;1:4096
  84. ;    CONFIG   WDTPS = 8192        ;1:8192
  85. ;    CONFIG   WDTPS = 16384       ;1:16384
  86.     CONFIG   WDTPS = 32768       ;1:32768
  87. ;
  88. ; MCLR Pin Enable bit:
  89. ;    CONFIG   MCLRE = OFF         ;RE3 input pin enabled; MCLR disabled
  90.     CONFIG   MCLRE = ON          ;MCLR pin enabled; RE3 input pin disabled
  91. ;
  92. ; Low-Power Timer 1 Oscillator Enable bit:
  93. ;    CONFIG   LPT1OSC = OFF       ;Timer1 configured for higher power operation
  94.     CONFIG   LPT1OSC = ON        ;Timer1 configured for low-power operation
  95. ;
  96. ; PORTB A/D Enable bit:
  97.     CONFIG   PBADEN = OFF        ;PORTB<4:0> pins are configured as digital I/O on Reset
  98. ;    CONFIG   PBADEN = ON         ;PORTB<4:0> pins are configured as analog input channels on Reset
  99. ;
  100. ; CCP2 MUX bit:
  101. ;    CONFIG   CCP2MX = OFF        ;CCP2 input/output is multiplexed with RB3
  102.     CONFIG   CCP2MX = ON         ;CCP2 input/output is multiplexed with RC1
  103. ;
  104. ; Stack Full/Underflow Reset Enable bit:
  105.     CONFIG   STVREN = OFF        ;Stack full/underflow will not cause Reset
  106. ;    CONFIG   STVREN = ON         ;Stack full/underflow will cause Reset
  107. ;
  108. ; Single-Supply ICSP Enable bit:
  109.     CONFIG   LVP = OFF           ;Single-Supply ICSP disabled
  110. ;    CONFIG   LVP = ON            ;Single-Supply ICSP enabled
  111. ;
  112. ; Extended Instruction Set Enable bit:
  113.     CONFIG   XINST = OFF         ;Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
  114. ;    CONFIG   XINST = ON          ;Instruction set extension and Indexed Addressing mode enabled
  115. ;
  116. ; Background Debugger Enable bit:
  117. ;    CONFIG   DEBUG = ON          ;Background debugger enabled, RB6 and RB7 are dedicated to In-Circuit Debug
  118.     CONFIG   DEBUG = OFF         ;Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
  119. ;
  120. ; Code Protection bit Block 0:
  121. ;    CONFIG   CP0 = ON            ;Block 0 (000800-001FFFh) code-protected
  122.     CONFIG   CP0 = OFF           ;Block 0 (000800-001FFFh) not code-protected
  123. ;
  124. ; Code Protection bit Block 1:
  125. ;    CONFIG   CP1 = ON            ;Block 1 (002000-003FFFh) code-protected
  126.     CONFIG   CP1 = OFF           ;Block 1 (002000-003FFFh) not code-protected
  127. ;
  128. ; Code Protection bit Block 2:
  129. ;    CONFIG   CP2 = ON            ;Block 2 (004000-005FFFh) code-protected
  130.     CONFIG   CP2 = OFF           ;Block 2 (004000-005FFFh) not code-protected
  131. ;
  132. ; Code Protection bit Block 3:
  133. ;    CONFIG   CP3 = ON            ;Block 3 (006000-007FFFh) code-protected
  134.     CONFIG   CP3 = OFF           ;Block 3 (006000-007FFFh) not code-protected
  135. ;
  136. ; Boot Block Code Protection bit:
  137. ;    CONFIG   CPB = ON            ;Boot block (000000-0007FFh) code-protected
  138.     CONFIG   CPB = OFF           ;Boot block (000000-0007FFh) not code-protected
  139. ;
  140. ; Data EEPROM Code Protection bit:
  141. ;    CONFIG   CPD = ON            ;Data EEPROM code-protected
  142.     CONFIG   CPD = OFF           ;Data EEPROM not code-protected
  143. ;
  144. ; Write Protection bit Block 0:
  145. ;    CONFIG   WRT0 = ON           ;Block 0 (000800-001FFFh) write-protected
  146.     CONFIG   WRT0 = OFF          ;Block 0 (000800-001FFFh) not write-protected
  147. ;
  148. ; Write Protection bit Block 1:
  149. ;    CONFIG   WRT1 = ON           ;Block 1 (002000-003FFFh) write-protected
  150. ;    CONFIG   WRT1 = OFF          ;Block 1 (002000-003FFFh) not write-protected
  151. ;
  152. ; Write Protection bit Block 2:
  153. ;    CONFIG   WRT2 = ON           ;Block 2 (004000-005FFFh) write-protected
  154.     CONFIG   WRT2 = OFF          ;Block 2 (004000-005FFFh) not write-protected
  155. ;
  156. ; Write Protection bit Block 3:
  157. ;    CONFIG   WRT3 = ON           ;Block 3 (006000-007FFFh) write-protected
  158.     CONFIG   WRT3 = OFF          ;Block 3 (006000-007FFFh) not write-protected
  159. ;
  160. ; Boot Block Write Protection bit:
  161. ;    CONFIG   WRTB = ON           ;Boot block (000000-0007FFh) write-protected
  162.     CONFIG   WRTB = OFF          ;Boot block (000000-0007FFh) not write-protected
  163. ;
  164. ; Configuration Register;Write Protection bit:
  165. ;    CONFIG   WRTC = ON           ;Configuration registers (300000-3000FFh) write-protected
  166.     CONFIG   WRTC = OFF          ;Configuration registers (300000-3000FFh) not write-protected
  167. ;
  168. ; Data EEPROM Write Protection bit:
  169. ;    CONFIG   WRTD = ON           ;Data EEPROM write-protected
  170.     CONFIG   WRTD = OFF          ;Data EEPROM not write-protected
  171. ;
  172. ; Table Read Protection bit Block 0:
  173. ;    CONFIG   EBTR0 = ON          ;Block 0 (000800-001FFFh) protected from table reads executed in other blocks
  174.     CONFIG   EBTR0 = OFF         ;Block 0 (000800-001FFFh) not protected from table reads executed in other blocks
  175. ;
  176. ; Table Read Protection bit Block 1:
  177. ;    CONFIG   EBTR1 = ON          ;Block 1 (002000-003FFFh) protected from table reads executed in other blocks
  178.     CONFIG   EBTR1 = OFF         ;Block 1 (002000-003FFFh) not protected from table reads executed in other blocks
  179. ;
  180. ; Table Read Protection bit Block 2:
  181. ;    CONFIG   EBTR2 = ON          ;Block 2 (004000-005FFFh) protected from table reads executed in other blocks
  182.     CONFIG   EBTR2 = OFF         ;Block 2 (004000-005FFFh) not protected from table reads executed in other blocks
  183. ;
  184. ; Table Read Protection bit Block 3:
  185. ;    CONFIG   EBTR3 = ON          ;Block 3 (006000-007FFFh) protected from table reads executed in other blocks
  186.     CONFIG   EBTR3 = OFF         ;Block 3 (006000-007FFFh) not protected from table reads executed in other blocks
  187. ;
  188. ; Boot Block Table Read Protection:
  189. ;    CONFIG   EBTRB = ON          ;Boot block (000000-0007FFh) protected from table reads executed in other blocks
  190.     CONFIG   EBTRB = OFF         ;Boot block (000000-0007FFh) not protected from table reads executed in other blocks
  191. ;
  192. ;********************************************************************************************

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 22 de Marzo de 2012, 08:21:43
Picuino quería preguntarte si has usado algún otro bootloader? Porque ya estoy pensando en usar un zócalo zif y mi programadora, pero no quisiera darme por vencido antes de tiempo...
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 22 de Marzo de 2012, 08:50:37
No te des por vencido. Te aseguro que merece la pena todo el esfuerzo necesario para poder utilizar bootloader.
Antes programaba con programador y zócalo zif.
Desde que conozco los bootloader no he vuelto a programar micros de esa forma.


Vamos a ver donde está el problema. ¿Puedes decirme otra vez qué es lo que si funciona y lo que no funciona?

Para que hablemos de lo mismo:

Carga el bootloader: PIC18F2550_i8Mhz_19200baud.hex (https://sites.google.com/site/picuino/picuino-18f2550/bootloader/PIC18F2550_i8Mhz_19200baud.hex?attredirects=0)

Prueba el test de UART a 19200 baudios: Programa: Test de funcionamiento USART a varias velocidades (https://sites.google.com/site/picuino/picuino-18f2550/bootloader/USART_echo_test.zip?attredirects=0)


Y me cuentas los problemas que encuentres.


Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 22 de Marzo de 2012, 09:08:52
Realmente es muy cómodo usar el bootloader, he trabajado con los 16F con bootloader y nunca tuve ningún inconveniente.

El problema es que una vez que grabo mi programa con el bootloader, no puedo enviar y recibir datos vía serial entre el PIC y la PC. Necesito que además del bootloader, me funcioné la comunicación serie.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 22 de Marzo de 2012, 09:12:30
Hola marito, estoy en linea y tengo la mala costumbre de editar los mensajes.
He cambiado unas líneas en el mensaje anterior.

Si descargas ahora el bootloader que he dejado y cargas el programa de test te puedo echar una mano.


Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 22 de Marzo de 2012, 09:16:53
La configuración de la comunicación serie la cambia el bootloader antes de saltar a tu programa.

Si quieres volver a utilizar el RS232 en tu programa tienes que volver a configurar la UART.

Si me envías el programa con el que tienes problemas y todos los archivos generados por el compilador (listados, ensamblador, hex, etc) les echo un vistazo para decirte donde puede estar el problema.


Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 22 de Marzo de 2012, 09:23:26
El código del programa que estoy utilizando es el siguiente:

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;
            }

           
   }
}

Por la tarde si te parece necesario te adjunto todos los archivos de mi proyecto
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 22 de Marzo de 2012, 09:27:32
Necesito los archivos porque yo no tengo el compilador que utilizas.


Un saludo.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 22 de Marzo de 2012, 09:41:49
Me he bajado la demo del CSS.
Voy a ver que se puede hacer.

Un saludo.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 22 de Marzo de 2012, 09:48:55
Gracias Picuino!

Si no lográs compilas, me acisas y en un par de horas te pasó mi proyecto
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 22 de Marzo de 2012, 09:58:23
Lo he compilado y funciona todo OK.

Fuentes:
Código: [Seleccionar]
#include <18F4550.h>
#fuses HSPLL,NOMCLR,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=8000000)
#use rs232(baud=19200,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("\r\nDato recibido: %c",dato);     //imprimo datos por RS232;
      }
   }
}

Adjunto fichero hex

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 22 de Marzo de 2012, 10:02:37
Te envía y recíbe los datos desde la PC a 19200 cargando el programa con el bootloader?
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 22 de Marzo de 2012, 10:08:16
Te dejo una foto.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 22 de Marzo de 2012, 10:10:42
jaja, Hola!!!
Buenísimo. Será que no me funcioná porque tengo windows7???

En un par de horas lo pruebo y te aviso!!!
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 22 de Marzo de 2012, 10:10:58
El programa lo cargo con el bootloader.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 22 de Marzo de 2012, 10:13:16
jaja, Hola!!!
Buenísimo. Será que no me funcioná porque tengo windows7???

En un par de horas lo pruebo y te aviso!!!

Venga, que esta es la definitiva.

Si tienes algún problema yo estaré en linea dentro de unas 6 horas, por si todavía hay problemas.

Si te funciona no dejes de postearlo.

Un saludo y hasta luego.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: marito en 22 de Marzo de 2012, 19:31:00
Hola Picuino, lamentablemente no funcionó.

Tengo mi placa con un cristal de 20MHz, por lo cual cargué el PIC18F2550_HS_20Mhz_19200baud.HEX con el programador.

Luego, cargué el programa .hex de echo que me pasaste.

Cuando envío caracteres, recibo valores erróneos. Será un problema que genera windows 7?

Te adjunto una imagen con los caracteres que recibo cuando envío un 6.

(http://C:\Users\Marito\Desktop\Captura error comunicación.png)
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 23 de Marzo de 2012, 03:45:19
El PIC18F2550_i8Mhz_19200baud.hex  funciona aunque tengas cristal a 20Mhz.
y si tienes problemas con el cristal, seguirá funcionando. Prueba con el a ver si el problema está en el oscilador.

Saludos
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 23 de Marzo de 2012, 19:37:06
Hola marito,

Si quieres intentarlo a 20Mhz te adjunto el bootloader y el código del programa adaptado.
Yo lo he probado y a mi me funciona.

Código: C
  1. #include <18F4550.h>
  2. #fuses HSPLL,NOMCLR,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
  3. #use delay(clock=20000000)
  4. #use rs232(baud=19200,xmit=pin_c6,rcv=pin_c7)//configuracion del puerto rs232 envia por pin_c6 y recibe por pin_c7
  5.  
  6. void main()
  7. {
  8.    char dato;
  9.    
  10.    while(true)
  11.    {
  12.       if(kbhit()) {
  13.          dato=getc();
  14.          printf("\r\nDato recibido: %c",dato);//imprimo datos por RS232;
  15.       }
  16.    }
  17. }


Si no te funciona y quieres ir tirando con otro bootloader te recomiendo el USB-HID bootloader a través del puerto USB.
Yo lo he probado y es rápido en las transferencias y cómodo de instalar (no necesita driver) pero prefiero mucho antes el bootloader por RS232.

Saludos.
Título: Re: Bootloader 18F4550 RS232 Serie
Publicado por: Picuino en 25 de Marzo de 2012, 07:52:21
Hola marito,
Si me envías una imagen del TinyBld mientras recibe caracteres extraños, pomemos saber si el problema es la configuración del programa.

Saludos.