Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Grabar con un bootloader a través el puerto serie o el USB

2 participantes

Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Lun 8 Dic 2008 - 22:17

Grabar con un bootloader a través el puerto serie o el USB

1) El monitor de Jack http://www.wsu.edu/~jackdoll/jmon/
Hice unas versiones para SDCC o PIC-GCC http://per.launay.free.fr/pik_digor/moniteur/
Se puede grabar los programas usarios con gtkterm o minicom

2) El monitor de Juan http://www.iearobotics.com/wiki/index.php?title=PIC_Bootloader
Se puede cargar el programa usario a través del puerto serie o usb
http://www.iearobotics.com/wiki/index.php?title=Pydownloader-wx
La video : Cargando programas en la Skypic con el Pydownloader
https://www.youtube.com/watch?v=-t48-Nccp-c

Per

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Mar 9 Dic 2008 - 20:29

Gracias por los links... muy interesantes.
Parece una forma sencilla de cargar programas y probarlos sin las complicaciones del icsp, ocupando solo 2 pines del pic.
Por lo que me ha parecido en el "monitor de Jack" se puede interactuar con el pic en tiempo real... no?, este me ha gustado por su sencillez. Por lo que he entendido se maneja solo con una terminal serie... no necesita otro software en el PC para comunicarse con el pic?... osea una vez grabado el firmware en el pic solo conectarlo al puerto serie y abrir una terminal serie en el PC y ya está?

El tema es que reduce la memoria disponible del pic... no?
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Vie 12 Dic 2008 - 0:11

La gente que lee el francés : http://per.launay.free.fr/pik_digor/html/moniteur.html
Hice un diagrama de flujo del monitor pero en francés

Con el monitor de Jack se puede comunicar con gtkterm , no necesita otra software.
Cuidado se debe arrancar en una terminal : gtkterm -r '*'
Asi gtkterm espera '*' (una estrella) antes de enviar una nueva linea del fichero hex
Con gtkterm trabajo tambien con el puerto usb con un ft232rl, hay una carta con kicad en mis paginas

Durante 4 segundas, si no pulsa una tecla, el programa usario arranca
si pulsa una tecla el monitor arranca
Si pulsa la tecla "0" se puede leer o modificar la memoria flash
idem "1" la memoria eeprom
"2" la memoria RAM
"3" se carga un programa usario
"4" Arrancar el programa usario
"5" Ver los 256 palabras de la EEPROM
"6" bistable validacion de los interrupciones GIE
"7" Programa de prueba
Como el programa es GPL se puede modificar

Para probar una biblioteca es muy agradable

La version de Jack toma 768 palabras de 14 bits, tengo 2 versiones una igual y una de 1 kilo palabras (añadi un programa de Juan para duplicar PIC)
Los PIC16F877 tienen 8K palabras de 14 bits

Saludos
Per

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Sáb 13 Dic 2008 - 14:37

Me gustaría probar esto, pero creo que tengo el puerto serie roto... así que quizás lo podría hacer por usb... no? :
Con gtkterm trabajo tambien con el puerto usb con un ft232rl, hay una carta con kicad en mis paginas

Quieres decir que tienes algún esquema del circuito en tu página?


EDITO:
creo que ya lo encontré... te refieres a: http://per.launay.free.fr/kicad/realisation/usb/ ??

veo en un esquema (carta): PUERTO USB -> FT232R -> MAX232 -> DB9 ; pero eso es un adaptador USB/serie... no?

Para hacer el monitor se puede conectar directamente FT232 con el pic... no?

Una pregunta: con FT232 se podría hacer un programador directo por USB?
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Sáb 20 Dic 2008 - 21:53

Si trabajo con un ft232rl y un pic 16f88 o pic16f876 con la carta usb , tu puedes ver el circuito aqui
http://per.launay.free.fr/kicad/realisation/usb/usb.png hay las fuentes para kicad en http://per.launay.free.fr/kicad/realisation/usb/

El ft232rl sale en 0-5v y se puede enviar directamente las RX, TX al PIC no se necesita el MAX 232 ,cuidado si quieres trabajar con 38400 baudios los hilos deben ser cortos entre el ft232rl y el PIC, el cable USB puede ser de 1m entre el ft232 y el PC

Per

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Sáb 20 Dic 2008 - 22:26

Pues parece un circuito muy sencillo...
No encuentro el ft232 para compralo donde yo vivo... tendré que pedirlo por internet.

Una pregunta: veo que el ft232 tiene RTS, CTS, DTR,... etc. estos pines se pueden contrplar por USB?

La idea es conectar un programador serie por el puerto USB, alguien preguntaba algo parcecido pero USB-paralelo:
https://pic-linux.forosactivos.net/piklab-f3/como-compilar-piklab-pikloops-y-pk2cmd-para-programar-con-pickit-2-t66.htm#105
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Lun 22 Dic 2008 - 20:37

El ft232rl se compra en Farnel por ejemplo. Se debe poner dos modulos usbserial y ftdi_sio con modprobe para probar y despues ponerlos en /etc/modules. Cuidado para soldar el componente y suerte ( trabajo en un instituto (lycée) y tenemos un horno para los SMD)

Puedes usar todo el puerto serie. Es decir que cuando usas /dev/ttyUSB0 se usa los dos modulos para transformar el comando serie en usb y el ft232rl hace al revés.

Si no usas el estandar del puerto serie no se si funciona bien.

Per

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Dom 28 Dic 2008 - 1:39

Hola...
Quiero probar el Bootloader en otro ordenador con max232 por puerto serie.
He montado el circuito en protoboard, he descargado jmonitor1.0, lo he grabado a un pic16f876... supongo que se puede con 876 también... no?

Que configuración hay que poner en Gtkterm?...
Que reloj pongo en el pic?

En las pruebas que he hecho no pasa nada al encender el pic...

A ver si consigo probar esto, me sería muy util.

Saludos.
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Dom 28 Dic 2008 - 23:37

El reloj del monitor de Jack es 20 MHZ,yo trabajo con un cuarzo de 4 MHZ

en el fichero f877_jmon.inc hay en las lineas 85 -87
;baud rate constant with 20MHz clock...

baud_rate equ 040h ;19200 d'64'(subroutine serialsetup)

;baud_9600 equ 081h ;d'129'
Abajo de GtkTerm \dev\ttyS0 : 19200,8,N,1
Puedes modificar en la ventana configuracion puerto
hay tambien "Contrôle de flux" none

Si haces un reset : si hay una resistencia de polarización en MCLR, pon hilo a masa para hacer el reset
Se debe ver :

Jack's Monitor V1.0

(si apoya la tecla "0")
>Flash @>

cuidado con el monitor de Jack debes empezar tu programa en 0x0020
si trabajas en ensamblador, no hay problemas con org pero en C es mas dificil

Trabajo con este monitor, un pocillo modificado desde 2 años
Si puedo ayudarte, ¡ pregunta !

Per

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Jue 1 Ene 2009 - 21:20

Bien... pues ya conseguí que funcione, al final lo hice con tu versión (monitor.hex) con un cristal a 4 MHz y a 9600 baud.
Lo estoy probando en un pic16f876, ... vale también para pic16f876a?... creo que había una versión diferente para la serie "a"... no?

Ya te iré preguntando dudas mientras lo esté usando... no entiendo bién como hacer debugging mientras el programa usuario está funcionando.

Una cosa: las rutinas Usart y escritura eeprom y flash del monitor están disponibles para programas de usuario.. no?
Es decir puedo hacer un programa en que se llame a estas rutinas sin tener que escribirlas de nuevo?

EDITO:
Se podría hacer otra versión solo para debugging, sin la capacidad para cargar programas, pero que permita ver como está funcionando el programa??

Esto lo digo para pics que no soportan auto-programación, pero sí tienen usart, si se hace un "monitor" y se añade al código del programa y se graba normalmente con cualquier grabador. Se podrían hacer diagnósticos de funcionamiento... no?... sería posible esto?
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Dom 4 Ene 2009 - 21:16

¡ Buen año nuevo !

La grabación de los PIC16F87x y PIC16F87xA es diferente , puedes encontrar mi monitor por los 16F87xA aqui http://per.launay.free.fr/pik_digor/moniteur/monitorA/ se debe ejecutar el programa monitorA.py
para usar en un terminal ./monitorA.py , no olvidas antes el chmod u+x monitor.py
Despues hay 2 ficheros symbol-tablesA.inc y symol-tableA.inc, puedes usar si trabajas en ensamblador en C me parece mas dificil

El "debugging" (como se dice en español en francés tenemos el verbo "deverminer")
Trabajo con alumnos que empiezan el lenguaje C (sdcc) y los microcontroladores PIC16F877 y PIC16F88,
entonces uso mucho el printf.
Cuando usan una bucle (for,while...)
despues deben poner
printf("salida de bucle");
Y dentro de un programa, "mensaje 1",... "mensaje n"
Se hace una emulación ...
Con el monitor y el puerto serie es muy facil modificar, compilar, grabar y ¡ ver lo que funciona o no !
Pero si trabajas en tiempo real con interrupciones puedes usar variables de control y fijar estas variables de manera ciclica.

Saludos

Per

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Vie 9 Ene 2009 - 21:38

No he podido hacer casi nada con el monitor estos días, además estoy haciendo las pruevas con un PC viejo que es muy lento para todo y además se le estropeó una tarjeta de memoria, y ahora solo con 128 MB es lentiiiisimo... voy a conseguir un cable usb-serie para usar mi PC y entonces podré hacer algo.

Ya entiendo como hacerlo con printf... se van mandando mensajes por uart al PC, así sabes por donde va pasando y eso... además se podrían mandar datos, por ejemplo para probar adc, se podrían visualizar los valores leidos y cosas así.. no?.

Lo de las interrupciones no lo tengo muy claro, te refieres a probocar una interrupcion en determinados puntos del programa y en ese momento poder leer o escribir la memoria desde el PC para probar cosas distintas?
Eso de fijar las variables de forma cíclica no lo he entendido...

De todas formas primero tengo que conseguir un puerto serie en mi PC para empezar a conocer bien el funcionamiento

Se podría probocar una interrupción cada ciclo de instrucciones y volcar los registros que se quiera vigilar al PC... bueno estoy imaginando mucho por ahora; vamos a empezar por el principio...

Gracias por las informaciones.
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Dom 11 Ene 2009 - 20:43

Se emplea para probar los programas y tambien para probar adc y temporizador por ejemplo el modo "captura" con un ventilador (3 hilos).

Con las interrupciones, no trabajo con los alumnos y no se puede usar el puerto serie dentro de una interrupción toma demasiado tiempo pero se puede usar variables y enviarlas en el programa principal.

Si te gusta el puerto serie hay tambien un "laboratorio de bolsillo" http://www.liberlab.net/, hice una version para el pic16f877
http://per.launay.free.fr/pik_digor/liberlab_pic/
Con ejemplos en http://per.launay.free.fr/pik_digor/demo_fete_science/

Saludos

Per

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Miér 28 Ene 2009 - 2:24

Pues ya tengo puerto serie...

He estado haciendo algunos intentos con el monitor y gtkterm, para cargar programas muy bien.. funciona perfecto.
Ahora intento hacer algo más interactivo, por lo pronto quiero usar las subrutinas del monitor, pero no tengo claro como hacerlo. He encontrado esto:

Código:

;==========================================================================
;monitor subroutines can be called from user code
;these can be cut and pasted to define the subroutines in user code
;monitor subroutines.......(n)=returned RAM bank
;
startuser  equ 01cffh ; run user code
monitor    equ 01d08h ;()jump into monitor, hard reset
runmon      equ 01d2ah ;()jump into monitor
eeread      equ 01f70h ;(2)eeread returns byte addressed in eeadr
eewrite    equ 01f62h ;(3)eewrite writes the byte to eeprom memory
                ; at the current eeadr
flashread  equ 01f84h;(3)read a location in flash program memory
                ;,or in eeprom data
                            ;address is in eeadrh and eeadr
                            ;data returns in eedath and eedata
flashwrite  equ 01f77h;(3)write to a location in the flash program
                        ;memory -address in eeadrh and eeadr
                        ;data in eedath and eedata
getdigit    equ 01fb6h ;(0)get usart byte and convert to hex digit
                ; in low nibble of w
gethexbyte  equ 01fabh ;(3)two ascii digits from the usart-
                ;convert to a byte in w
gethexword  equ 01fa6h ;(3)two hex bytes returned in addrfh,addrfl
getkey      equ 01fbeh ;(0)getkey checks input for esc,goes to runmon
                ;,or returns ascii key
getbin          equ    01fd0h  ;(3)fast getbyte from usart for loader,
                    ; -no echo adds to checksum
sendbyte    equ 01fc6h ;(0) byte in w as two hex char to usart
sendcrlf    equ 01eebh ;(0)send a cr/lf sequence
serialsetup equ 01f8fh ;(0)initialize the usart for tx,rx
                ; at default baud rate
serrx      equ 01f9ah ;(0)read a byte from usart, return in w
sertx      equ 01fa0h ;(0)transmit byte from w register
sendstring      equ    01febh  ;(2)unpacks one ascii line to the usart
            ;strings are format: da "string\0" (nul term)

            ;must enter with eeadr,eeadrh pointing to a string

            ;macro mssg calls this routine


He intentado llamar a alguna de las subrutinas pero no me funciona... no sé como hay que hacerlo.

Podrías poner algún pequeño ejemplo de cómo usar estas subrutinas en un programa?

Gracias...
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Jue 29 Ene 2009 - 20:46

Cual pic usas ?
Trabajo con un pic16f877
Trabajo con picgcc y por ejemplo se puede usar flashread con
// ./compila.sh ej_lectura_flash 16f877a .
#include <pic/p16f877a.h>
#define FOSC_HZ 4000000

#include <uart.h>
#include <uart2.h>

#define flashread 0x1f7a

int main (void)
{
int a,b;
uart_open(SET_9600_8N1);
uart_putc('\n');
uart_puts("*Lecture(a) Flash");
uart_putc('\n');

while(1)
{
uart_puts("direccion adresse ");
a = getint(uart_getc);
putint(uart_putc,a);
EEADRH=a>>8;
EEADR=a&0xff;

__asm__ __volatile__ ("movlw 0x1f");
__asm__ __volatile__ ("movwf PCLATH");
__asm__ __volatile__ ("call 0x1f7a");
__asm__ __volatile__ ("clrf PCLATH");

b=(EEDATH<<Cool|EEDATA;
uart_puts(" contenu(ido) ");
putint(uart_putc,b);
uart_putc('\n');
}
return 0;
}

Cadena : Un poco de francés y español ')" target="_blank" rel="nofollow">Grabar con un bootloader a través el puerto serie o el USB Icon_wink

Si trabajas en ensemblador, no olvidas que las variables estan en el banco 3

Despues de la rutina, hay un numero entre paréntesis por ejemplo eeread ; (2) es decir que al salir de la rutina estas en el banco 2

Si tienes un ejemplo, puedes escribirlo aqui o aca o enviarme en mi dirección

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Jue 29 Ene 2009 - 21:34

Pero en ese ejemplo que has dado no usas las rutinas del monitor...
Por ejemplo consigo mandar un bit por uart, sin hacer nada, solo esto:

TXREG = mi_byte;
TXEN=1;

Porque el monitor ya inició usart, y tiene todas las funciones,...
Lo que yo quiero es en asm usar algo como esto:

pagesel ..?
call sendbyte

y no tener que iniciar usart desde mi programa.

Gracias.
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Jue 29 Ene 2009 - 21:54

He abierto el chat arcachofo !

Si quieres usar la rutina sendbyte hay que poner antes
movlw 0x1f
movwf PCLATH
call sendbyte
clrf PCLATH
Debes hacer eso porque debes cambiar de pagina

b=(EEDATH << 8 ) | EEDATA ; aqui no me gustan las emoticones



Saludos

Per

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Jue 29 Ene 2009 - 22:09

Gracias....

Esa era la información que necesitaba.... el bootloader vá muy bien, es muy rápido de modificar un programa, cargarlo al pic y ver como funciona, solo me falta utilizar el monitor para ver algunas cosas que pasan... por ejemplo mandar variables o registros que quiera al PC y así ver como está funcionando.

Además si establezco "puntos de parada" puedo cambiar cosas desde el PC y ver como funciona...
Para esto puedo usar?:

movlw 0x1d
movwf PCLATH
call runmon
clrf PCLATH



EDITO:

no había visto esto:
__asm__ __volatile__ ("movlw 0x1f");
__asm__ __volatile__ ("movwf PCLATH");
__asm__ __volatile__ ("call 0x1f7a");
__asm__ __volatile__ ("clrf PCLATH");

Porqué usas usart de PICGCC, no se puede usar "sendstring" del monitor???
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por per Sáb 7 Mar 2009 - 19:56

¡ Hola !

Si trabajas con PICGCC, se puede usar un puntero a función

Pedro José Ramírez Gutiérrez me da la solución :
#define flashread ((void (*)(void))0x1f7a)


un ejemplo con el monitor de Jack, monitor del pic16f877
si usas el pic16f877a hay que cambiar la dirección 0x1f7a

// ./compila.sh ej_lectura_flash3 16f877a .

#include <pic/p16f877a.h>

#define FOSC_HZ 4000000


#include <uart.h>

#include <uart2.h>


// se usa la dirección de la rutina flashread definida en el monitor

// dirección en symbol-table.inc

#define flashread ((void (*)(void))0x1f7a)


int main (void)

{

int a,b;

uart_open(SET_9600_8N1);

uart_putc('\n');

uart_puts("*Lecture(a) Flash");

uart_putc('\n');


while(1)

{

uart_puts("direccion adresse ");

a = getint(uart_getc);

putint(uart_putc,a);

EEADRH=a>>8;

EEADR=a&0xff;

flashread();

b=(EEDATH<<Cool|EEDATA;

uart_puts(" contenu(ido) ");

putint(uart_putc,b);

uart_putc('\n');

}

return 0;

}


No se debe cambiar de pagina PIC-GCC lo hace !

Gracias Pedro

saludos

Per

per
Participante Activo
Participante Activo

Mensajes : 64
Fecha de inscripción : 08/12/2008
Localización : Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Dom 8 Mar 2009 - 18:19

Gracias Per, eso es lo que necesitaba.

Hace un tiempo que no experimento nada con el monitor, lo estoy usando solamente como Bootloader.
Las últimas pruebas que hice con los cambios de página no me funcionaron y lo dejé ahí, a ver si ahora retomo el tema y consigo mejores resultados.

Ya informaré si consigo hacer algo interesante.
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por arcachofo Mar 9 Jun 2009 - 12:11

Después de un tiempo estoy otra vez experimentando con los bootloaders estos...

Entonces me encontré con una pequeña pega:
El monitor modificado por Per ma parce más util, porque no tiene el problema de tener que comenzar el programa en 0x020, entonces se puede usar facilmente con programas escritos y compilados en cualquier lenguaje.
Pero el monitor de Per está configurado para 4 Mhz y 9600 baud. y yo quiero usarlo para 20 Mhz y 19200 baud, entonces hay que mocificar unas lineas en el archivo: f877_jmon2.inc , en las lineas 85 en adelante, ahí se ajustan los valores para el prescaler del timer0 y para el BRG (baudrate generator). Estos son los valores que yo tengo, para cambiar solo hay que dejar descomentadas las lineas que nos interesen, se pueden deducir otros valores a partir de estos:

Código:
;==========================================================================
; read readme.txt for more information
;baud rate constant with 4MHz clock...
;baud_rate      equ    019h          ;d'25' para 9600 baudios (4 MHz)

; Timer0 prescaler with 4MHz clock...
;scale_tmr0    equ    b'00000101'    ;tmr0 prescaler, 1:64


;baud rate constant with 20MHz clock...
baud_rate      equ    040h          ;d'64' para 19200 baudios (20 MHz)
    ;baud_rate      equ    081h      ;d'129' para 9600 baudios (20 MHz)

; Timer0 prescaler with 20MHz clock...
scale_tmr0    equ    b'00000111'    ;tmr0 prescaler, 1:256

;==============================================================================

Una vez modificado el archivo f877_jmon2.inc , se compila monitor.asm y se graba al PIC.
Yo lo he probado con un PIC16F876.

Saludos a todos.
arcachofo
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Grabar con un bootloader a través el puerto serie o el USB Empty Re: Grabar con un bootloader a través el puerto serie o el USB

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.