Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

15/05/2014 #1

Avatar de joelexel

Bootloader y Mikroc
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!! ...
15/05/2014 #2

Avatar de ByAxel

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
16/05/2014 #3

Avatar de joelexel

Gracias por tu respuesta ! por ahi viene la cosa, tan pronto como tenga el parámetro específico y lo pruebe lo publicare.

Gracias
16/05/2014 #4

Avatar de joelexel

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
Archivos Adjuntos
Tipo de Archivo: txt orgall.txt (403 Bytes, 14 visitas)
17/05/2014 #5

Avatar de ByAxel

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.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.