TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: pikman en 19 de Enero de 2004, 12:31:00
-
Hola, a todos, pues como dice el titulo, estoy en uno de esos problemillas que dan ganas de machacar el teclado y la placa de desarrollo........el tema es que hace tiempo uso el downloader que fer_taca colgo que por cierto anda muy pero muy bien, claro siempre lo use con codigo generado por CCS, el tema es que ahora quiero implementarlo en un sistema que el codigo ya esta hecho desde hace tiempo en ASM y que pasa?
, agregue las lineas sugeridas
org 0x1F00
clrf PCLATH
goto INICIO
len la etiqueta INICIO hay una directiva org 0x005 que es donde empieza mi programa,
adivinen que......ANDA CUANDO QUIERE es como si no hubiese restet despues de la carga, ni idea de que pasa, compare el codigo mio con el de CCS y hay mas lineas a partir de la 0x1F00
pero no relevantantes ( creo ) pues hacen los mismo que pero una envia a la direccion 0x04 y otra a la 0x05, bueno quedo a la espera de que alguno de ustedes me salve de este maldito enigma, por lo que dice en la web del downloader sirve para cualquier compilador...........
saludos
ARIEL - PIKMAN 
-
Hola Pikman:
Yo utilizo el dowloader con asm y va de miedo. Has comprobado si tienes deshabilitado el ORG 0x00 al principio del programa.
Las instrucciones que van despues de 0x1FF son para llamar al botloader. Despues tienes que volver a la página 0 de la memoria de programa con las instrucciones:
bcf PCLATH,4 ;Con estas dos instrucciones se regresa al......
bcf PCLATH,3 ;Banco 0 de la memoria de programa.
goto Inicio ;Se empieza con el programa.
El goto inicio debe ir antes de ORG 0x05 en concreto queda:
ORG 0x1F00 ;Dirección del Vector de RESET cuando hay bootloader.
goto Inicio ;Comienzo del programa después del vector de Interrupción.
ORG 0x05 ;una posición detrás Vector_Interrupción.
Espero que te sirva, de todas formas, si sigues teniendo problemas te puedo enviar un ejemplo, aunque estoy un poco liado ultimamente por cosas del curro y no dispongo de todo el tiempo que me gustaria, pero prometo contestar.
Ssaludos
Fermin
-
HOLA FERMIN,
Para ser claro no entiendo lo que me explicas, o mejor dicho entiendo esto:
org 0x005
INICIO
programa de usuario????????
goto INICIO
org 0x1F00
bcf pclath,3
bcf pclath,4
goto INICIO ES ESTO LO QUE HAY QUE HACER???
GRACIAS DE NUEVO.
SALUDOS
ARIEL
-
Hola Ariel,
A ver, te aconsejo que además de cambiar el vector de reset como has hecho, introduzcas la instrucción "clrwdt" en tu código para que se ejecute cada 10 millisegundos.
Otra cosa, la última versión del picDownLoader saltaba las 4 primeras líneas del código hex, así que te aconsejo que pongas el origen de tu programa a partir de 0x04. Bueno, a ver qué tal y nos cuentas, vale?
saludos!
Elena
-
Hola Ariel: Adjunto te envio como realizo mi cofiguracion en los programas. Espero que lo entiendas..
LIST P=16F876 ;Selecciona el tipo de micro.
LIST C=132 ;Número de caracteres por línea.
#INCLUDE <P16F876.INC> ;Inserta librería igualdades de registros micro.
#Define Banco_0 bcf STATUS,RP0 ;Selección del banco 0 de la memoria de programa.
#Define Banco_1 bsf STATUS,RP0 ;Selección del banco 1 de la memoria de programa.
; #Define CS1_ON bsf PORTA,0 ;Se habilita las entradas.
; #Define CS1_OFF bcf PORTA,0 ;Se deshabilita las entradas.
#Define CS3_ON bsf PORTA,1 ;Se habilita las salidas.
#Define CS3_OFF bcf PORTA,1 ;Se deshabilita las salidas.
W_Temporal EQU 0x20 ;Dir. a guardar el W en operaciones para salvar su valor.
Status_Temporal EQU 0x21 ;Dir. a guardar el STATUS en operaciones y salvar su valor.
Delay_Tiempo_1 EQU 0x22 ;Dir. a guardar el valor de contaje a en rutinas de delay.
Delay_Tiempo_2 EQU 0x23 ;Dir. a guardar el valor de contaje a en rutinas de delay.
Byte_Entrada EQU 0x24 ;Var_temporal del dato leido de las entradas.
Byte_Salida EQU 0x25 ;Var_temporal del dato a WR para el periférico de Salida-1.
ORG 0x00 ;Dirección del Vector de RESET. Desactivar si hay bootloader.
; ORG 0x1F00 ;Dirección del Vector de RESET cuando hay bootloader.
goto Inicio ;Comienzo del programa después del vector de Interrupción.
ORG 0x05 ;una posición detrás Vector_Interrupción.
Mi programa.......
mas
y mas
;*********************************************************************************************************************
; ORG 0x1F00 ;Página de memoria 4 donde se guarda el programa cargador.
; bcf PCLATH,4 ;Con estas dos instrucciones se regresa al......
; bcf PCLATH,3 ;Banco 0 de la memoria de programa.
; goto Inicio ;Se empieza con el programa.
-
ok, ELENA, gusto de leerte, bueno lo que me tiene desconcertado es que cualqueir codigo generado por CCS funciona correctamente con el bootloader, hice una pequeña rutina en asm y tambien funciona pero un programa de 4 K que quiero usar no funciona otor que mide unas 600 palabra tampoco, ademas si te fijas en el ejemplo de Fermin hay algo que definitivamente no entiendo,
pone
org 0x1FF00
goto INICIO
ORG 0X05
AQUI VA EL CODIGO.
DEPUES DEL CODIGO PONE
org 0x1FF00
bcf pclath,3
bcf pclath,4
goto INICIO
si pongo esto en mi programa el compilador me da error de sobreescritura, no se como es el truco con esto, lo que me tiene complicado es que el codigo generado por CCS, siempre fuciona el problema es con el ASM bueno de igual modo encontre con codigo escrito en y otro en asm de microchip para estudiar un poco esto.
saludos
Ariel
-
Ahhhh , error de sobre escritura....

mira, creo que justamente, te estas pasando de alguna pagina, y como estas definiendo con el ORG, se te estan solapando las lineas..., y eso (aunque no lo uso) esta contemplado en el ccs..
tendrias que determinar que lineas se sobreescriben con el MPLAB...
yo, por ejemplo, marco en el f84 cada pagina
org 0
tablas y codigos
org 100
programa
org 200
programa
org 300
programa
y al compilar, veo en el exa generado, los espacio libres(3FFF),
y me fijo cuanto me queda en cada pagina para seguir cargando, y repartir mi codigo....
espero me entiendas....
suerte! y avisa como fue
Norberto
-
Bueno, el error de sobreescritura era un error de tipeo pues habian dos directivas org con la misma direccion, esto esta mas que calro y solucionado, con respecto al booloader he conseguido de todas las versiones que hay en el sitio microchipc.com un codigo que funciona tanto en ASM y C de CCS, en el caso de CCS funcioan sin agragar nada al codigo pero en ASM debo agragar algunas lineas, las que ya todos saben y algunas mas, de igual modo no tengo claro como es el asunto pero ni bien lo tenga claro lo cuelgo aqui en foro, pues es una herramienta que yo no sabia lo que sirve cuando estas en el campo o en una planta en una puesta en marcha pues ademas de grabar el micro mucho mas rapido que cualquier programador no hay que sacarlo, y solo demanda el puerto serie del mismo,
un saludo y gracias a todos por vuestra ayuda,
Ariel