TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: josepunki en 08 de Mayo de 2007, 11:43:00
-
cuendo creo un proyecto (igual que en el manual) para el 16f871 con mplab 7.5 me da el siguiente error:
MPLINK 4.06, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - section 'INT_VECTOR' can not fit the absolute section. Section 'INT_VECTOR' start=0x00000004, length=0x00000010
Errors : 1
por que es? como puedo solucionarlo?
una ayudita por favor, thanks
-
cuendo creo un proyecto (igual que en el manual) para el 16f871 con mplab 7.5 me da el siguiente error:
MPLINK 4.06, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - section 'INT_VECTOR' can not fit the absolute section. Section 'INT_VECTOR' start=0x00000004, length=0x00000010
Errors : 1
por que es? como puedo solucionarlo?
una ayudita por favor, thanks
¿Estas usando el relocatable mode?
El error te está diciendo que tu sección de interrupción (INT_VECTOR) es muy pequeña para el código que le has puesto en ella. Ampliala en el linker file y tu problema habrá desaparecido.
-
gracias maunix, pero:
como se amplia la seccion en el linker file?? es que aun no me he topado con ningun problema asi y no se hacerlo.
por cierto yo no he modificado para nada el fichero asm que incluye mplab. el error ya estara como "predeterminado"
un saludo
-
gracias maunix, pero:
como se amplia la seccion en el linker file?? es que aun no me he topado con ningun problema asi y no se hacerlo.
por cierto yo no he modificado para nada el fichero asm que incluye mplab. el error ya estara como "predeterminado"
un saludo
Has incluido un archivo .lkr en tu proyecto?
-
eso si que lo he hecho.
es el 16f871.lkr.
ahora supongo que tendre que modificarlo de alguna manera...
espero tu respuesta
-
eso si que lo he hecho.
es el 16f871.lkr.
ahora supongo que tendre que modificarlo de alguna manera...
espero tu respuesta
El default es así
CODEPAGE NAME=vectors START=0x0 END=0x4 PROTECTED
CODEPAGE NAME=page0 START=0x5 END=0x7FF
CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
Ahora si me muestras cómo tienes definido el area de arranque de tu programa y qué has puesto en la sección del vector de interrupción te puedo indicar bien qué hacer
-
pues yo tengo el mismo que tu. no lo he tocado y por eso me extraña que de error sin modificarlo para nada (ni el lkr ni el asm)
el programa aparece asi:
list p=16f871 ; list directive to define processor
#include <p16f871.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_ENABLE_ON & _LVP_ON & _CPD_OFF
......
.......
.......
RESET_VECTOR CODE 0x000 ; processor reset vector
movlw high start ; load upper byte of 'start' label
movwf PCLATH ; initialize PCLATH
goto start ; go to beginning of program
INT_VECTOR CODE 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
.....
.......
......
MAIN CODE
start
nop
y aun no hay definido ninguna interrucion
-
he vuelto a retomar este punto y necesito continuar. alguien puede ayudarme?
-
Tu problema es que el linker file, por default, está hecho para la mier.... jejeje.
Fijate que la sección vectors comienza en 0x0000 y termina 0x0004 inclusive!!
Entonces, si tu comienzas un código en una sección que comienza en 0x04 el linker va a chillar porque tienes solo un word (de 0x0004 a 0x0004) para tu código que ocupa más bytes.
Solución, haz las primeas líneas del linker así
CODEPAGE NAME=vectors START=0x0 END=0x3 PROTECTED
CODEPAGE NAME=page0 START=0x4 END=0x7FF
CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
Saludos
-
COOOORRECTO!
ya no tengo errores al compilar, muchas gracias maunix, ahora a ver si consigo hacer funcionar el programador para poder probar mi proyecto.
saludos
-
COOOORRECTO!
ya no tengo errores al compilar, muchas gracias maunix, ahora a ver si consigo hacer funcionar el programador para poder probar mi proyecto.
saludos
Bueno, me alegro. :mrgreen: