TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: sota_de_bastos en 17 de Octubre de 2007, 14:39:14
-
hola que tal,
este programa me da el siguiente error:
LIST P=16F873a
#include "p16f873a.inc"
bank1 udata
auxH res 1
auxL res 1
auxLBank2 res 1
auxPR2 res 1
Startup code
pagesel Main
goto Main
nop
nop
code
Main
...
Error - section 'bank1' can not fit the section. Section 'bank1' length=0x00000004
Errors : 1
pues este error es el que me dá, y despues de mucho tratar de averiguarlo en el foro de microchip al final he desistido que con el inglés que tengo ya no sabía muy bien de qué se estaba hablando.
en fin, el problema está según decían por allí en el linker script, no sé por qué rollo de que este pic no tiene las regiones esas definidas. Y si elimino la seccion bank1 compila sin problemas. No le veo la solucion ya que normalmente este programa lo hago así en todos los micros pero a este parece que no le entra,
gracias por vuestra ayuda :mrgreen:
-
pues ya está solucionado el error, ya me respondieron en el foro de microchip, y además me parece que ha sido maunix, si no me equivoco (un saludo).
ahora el problema es que no me funciona el codigo, no veo donde puede estar el fallo, la verdad es que da la impresion que no entre en el main ya que lo que tiene que hacer es tan sólo encender el led conectado a RB1.
he aquí el programa:
LIST P=16F873a
#include "p16f873a.inc"
;gpr0 udata_shr
Startup code
pagesel Main
goto Main
nop
nop
code
Main
loop
banksel TRISB
movlw 0x00
movwf TRISB
banksel PORTB
bsf PORTB,1
pagesel loop
goto loop
end
un saludo
-
es el típico programa de prueba para encender un led simplemente y no funciona. Me da la sensacion de que no entra en el main, nole veo otro error. Esto mismo en un f84 ya estaría funcionando lo q pasa es q no se que le puede pasar a este micro y a su linker script, como no domino muy bien el tema del codigo relocalizable no consigo solucionarlo. De momento he conseguido (gracias a la ayuda del foro de microchip) que compile que ya es bastante, pero ahora falta que funcione
saludos :P
-
es el típico programa de prueba para encender un led simplemente y no funciona. Me da la sensacion de que no entra en el main, nole veo otro error. Esto mismo en un f84 ya estaría funcionando lo q pasa es q no se que le puede pasar a este micro y a su linker script, como no domino muy bien el tema del codigo relocalizable no consigo solucionarlo. De momento he conseguido (gracias a la ayuda del foro de microchip) que compile que ya es bastante, pero ahora falta que funcione
saludos :P
Que linker file estás usando? Es un problema recurrente el que tienes, tienes el link de la ayuda en el foro de microchip? me suena conocido :mrgreen: :mrgreen:
-
como que fuiste tú el que me respondiste je je (soy JL en mchip).
PUes aunque conseguí compilar todavía no funciona y como te decía, da la impresion de que no entra en el main,
este es el lkr: (te va a sonar repetido ya que es lo mismo que ya he posteado en mchip, pero la verdad no me aclaraba muy bien en inglés)
// Sample linker command file for 16F873
// $Id: 16f873a.lkr,v 1.4 2006/02/04 00:06:40 nairnj Exp $
LIBPATH .
CODEPAGE NAME=vectors START=0x0 END=0x4 PROTECTED
CODEPAGE NAME=page0 START=0x5 END=0x7FF
CODEPAGE NAME=page1 START=0x800 END=0xFFF
CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
CODEPAGE NAME=.config START=0x2007 END=0x2007 PROTECTED
CODEPAGE NAME=eedata START=0x2100 END=0x217F PROTECTED
DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
SHAREBANK NAME=gpr0 START=0x20 END=0x7F
SHAREBANK NAME=gpr0 START=0x120 END=0x17F
SHAREBANK NAME=gpr1 START=0xA0 END=0xFF
SHAREBANK NAME=gpr1 START=0x1A0 END=0x1FF
SECTION NAME=STARTUP ROM=vectors // Reset and interrupt vectors
SECTION NAME=PROG1 ROM=page0 // ROM code space - page0
SECTION NAME=PROG2 ROM=page1 // ROM code space - page1
SECTION NAME=IDLOCS ROM=.idlocs // ID locations
SECTION NAME=DEEPROM ROM=eedata // Data EEPROM
a ver si consigo hacerlo funcionar, la verdad es que este micro se resiste al codigo relocatable no sé por qué
1 saludo maunix.
-
Si, me sonaba conocido :mrgreen: :mrgreen:, solo que en Microchip tengo otro nick. El tema es que mi nick anterior y de siempre era el de microchip, al quererme registrar en el viejo miarroba... no me dejaba porque ya existía! asi que lo tuve que cambiar por el nick que usaba en los chats de linux y aquí quedé :D :D
Si te fijas en el linker file no defines nada que se llame BANK1 , y en ese pic como te fijas, todo es 'shared' por ende debieras hacer algo así como reemplazar
BANK1 udata
por
gpr0 udata_shr
En relocatable mode uno por un lado define las variables y la zona que ocupará. La zona uno 'la define' como le plazca (siempre que entre en el pic por supuesto, si no entra también se puede definir pero en la práctica no va a funcionar) pero esa zona debe estar definida en el linker file, sino salta el error porque te dice que no hay espacio suficiente.
En tu código le estas diciendo que las variables las ubique en BANK1 pero para el linker la zona bank1 tiene 0 bytes de tamaño (porque no existe) y de allí el error.
-
sí, eso ya lo había solucionado gracias a lo que me respondiste en el foro de microchip. Ahora el problema es que compila pero no funciona, incluso sin definir la parte de "gpr0 udata_shr" no funciona. Y ya puedes ver que el programa lo que hace es tan sólo encender los led del portb. La verdad ya he pasado del codigo relocatable con este pic, pero todavía me ha quedado la espina clavada y voy a ver si lo hago funcionar, con vuestra ayuda :mrgreen:
un saludo. :)
-
sí, eso ya lo había solucionado gracias a lo que me respondiste en el foro de microchip. Ahora el problema es que compila pero no funciona, incluso sin definir la parte de "gpr0 udata_shr" no funciona. Y ya puedes ver que el programa lo que hace es tan sólo encender los led del portb. La verdad ya he pasado del codigo relocatable con este pic, pero todavía me ha quedado la espina clavada y voy a ver si lo hago funcionar, con vuestra ayuda :mrgreen:
un saludo. :)
y en el simulador te funciona? pudieras tener mal configurado el clock en el pic u otra causa... revisa bien.