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

Publicar nuevo tema   Responder al tema

Página 2 de 2. Precedente  1, 2

Ver el tema anterior Ver el tema siguiente Ir abajo

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

Mensaje  arcachofo el Jue 29 Ene 2009 - 23: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
Participante Activo
Participante Activo

Cantidad de envíos: 90
Fecha de inscripción: 26/11/2008

Volver arriba Ir abajo

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

Mensaje  per el Jue 29 Ene 2009 - 23: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
Participante

Cantidad de envíos: 26
Fecha de inscripción: 08/12/2008
Localización: Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

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

Mensaje  arcachofo el Vie 30 Ene 2009 - 0: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
Participante Activo
Participante Activo

Cantidad de envíos: 90
Fecha de inscripción: 26/11/2008

Volver arriba Ir abajo

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

Mensaje  per el Sáb 7 Mar 2009 - 21: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
Participante

Cantidad de envíos: 26
Fecha de inscripción: 08/12/2008
Localización: Rennes Bretaña Francia Europa

http://per.launay.free.fr

Volver arriba Ir abajo

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

Mensaje  arcachofo el Dom 8 Mar 2009 - 20: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
Participante Activo
Participante Activo

Cantidad de envíos: 90
Fecha de inscripción: 26/11/2008

Volver arriba Ir abajo

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

Mensaje  arcachofo el Mar 9 Jun 2009 - 14: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
Participante Activo
Participante Activo

Cantidad de envíos: 90
Fecha de inscripción: 26/11/2008

Volver arriba Ir abajo

Página 2 de 2. Precedente  1, 2

Ver el tema anterior Ver el tema siguiente Volver arriba


Publicar nuevo tema   Responder al tema
Permiso de este foro:
No puedes responder a temas en este foro.