Bootloader y Mikroc

#1
Buenos dias estimados, después de mucho buscar eh decidido hacerles la consulta.

Estoy intentando programar mis PIC con algún bootloader por puerto serial, intente programar un 16f88 con el bootloader de tiny pero sin mucho exito, luego intente con el bootloader de microchipc.com sobre un 16f877A y nuevamente no tuve mucho éxito.

En ambos caso el inconveniente fue que desconozco como se debe empezar el programa para que al inicio salte hasta la subrutina del bootloader. En el caso del tiny pude bajar el programa pero me pisa las primeras lineas y no lo puedo programar mas.

Cualquier experiencia que tengan con Mikroc y bootload me encantaría escucharla.

Gracias!! ...
 
#2
En general depende, pero....
Un programa se compila desde la dirección 0h de la memoria.
Un bootloader puede estar al inicio o final de la memoria.
En caso de estar al inicio, el código que se quiere grabar por bootloader debe de estar compilado por sobre el código del bootloader, es decir que no se debe de compilar desde 0h, si no desde otra dirección mayor...

En MikroC creo que se puede establecer usando la directiva ORG o #pragma orgall, busca como usarlo.

Saludos
 
#4
Funciono !

Mi experiencia para quien le sirva: Cuando trabajen con Mikroc y Bootloader se debe anteponer al inicio del programa antes de cualquier declaraciòn #pragma orgall 0x0004, esto hace que el programa que compilemos comience desde la linea de memoria 0x0004 y no "pise" el salto de nuestro bootloader que se aloja desde 0x0000 hasta 0x0003.

Pude solucionar el inconveniente para ambos PIC y ambos bootloader.


Código:
#pragma orgall 0x0004

void main() {

Trisa = 0;
Trisb = 0;
Trisc = 1;
Trisd = 0;

while (1){

UART1_Init(38400);
Delay_ms(100);
UART1_Write_Text("forosdeelectronica");
portd.f0 = 0;
portd.f1 = 0;
Delay_ms(700);
portd.f0 = 1;
portd.f1 = 1;

}
}
Gracias ByAxel
 

Adjuntos

Última edición:
#5
Bien!!!... solo un detalle cuando trabajes con interrupciones, recuerda que una interrupción tiene cierto vector o dirección en la memoria donde siempre va... y no se como controle esto MikroC.... ante ese detalle es mejor colocar un valor correcto a #pragma orgall.... ya que con #pragma orgall 0x0004 se está pisando el vector de interrupción, si se trata de un PIC de gama media claro...

Saludos.
 

Temas similares

Arriba