TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: bones18 en 16 de Noviembre de 2006, 12:18:28
-
Wuenas..
estoy haciendo un programa con un 16f876, el programa ocupa cerca de 3000 lineas, y gran parte del trabajo se hace cada vez que recibo un caracter por el puerto serie.
Iva programando tan felizmente hasta que de golpe, el chip dejaba de hacer lo que tocaba y se volvia medio loco(LEds que se encienden solos rollo poltergeist). Me ha dado cuenta que paso al ir añadiendo lineas, mi programa funciona, pero al añadirle un linea más de codigo no importa donde, éste deja de funcionar y en el MPLAB pasa a darme este mensaje
Message[306] C:\PIC16F876-XARXA\GPS_LCD_BASIC8.ASM 2736 : Crossing page boundary -- ensure page bits are set.
nose que significa, dudo que se me haya acabado la memoria de codigo pues tengo 8k, y si la mayoria de instrucciones necesitan solo un byte, 3000 lineas tampoco son tantas.
alguna idea?
gracias!
-
leo q es problema de paginas....
pero tengo dudas sobre lo que hay que hacer.
-
Hola bones!
Le puedes pegar un vistazo a esto a ver si te sirve de algo:
http://www.todopic.com.ar/foros/index.php?topic=8533.msg54160#msg54160
Un saludo desde Alicante.
-
WUENAS....
estoy rompiendome la cabeza con este problema.
segun el datasheet es tan facil como
ORG 0
bcf PCLATH,4
bsf PCLATH,3
call sub1_p
.
.
.
ORG 0x900
sub1_p
.
.
.
return
es decir, si quiero passar de una pagina a otra sólo he de tocar el PCLATH y ya tendria que saltar a la siguiente página, el problema es que no lo hace.
Alguien seria tan amable de probar este codigo, y mirar si compila bien, ojo en el compilador sale el mensajito verde donde dice que ha compilado bien, pero si nos leemos los warnings sale uno alli donde haya el salta hacia la siguiente pagina.
Message[306] C:\PIC16F876-XARXA\ENCENDRE_LEDS_PROBA.ASM 82 : Crossing page boundary -- ensure page bits are set
A lo mejor es cosa de mi version de MPLAB v7.43.
gracias!
-
Hola bones.
El problema surge ya que si bien el 16F877A posee 8K, estos estan divididos entre cuatro paginas. Es decir que cada pagina posee 2K (2048 words(lineas)).
Cuando excedes esta capacidad de lineas, debes asegurarte que los bits del PCLATH esten correctamente seteados segun a donde vaya o retorne el codigo.
ORG 0
Hola
PAGESELW aja
movwf PCLATH
call aja
nop
nop
ORG 0x900
aja
return
Saludos.
-
si creo que yata arreglado, el problema es que creia q el warning habia de desaparecer del log de compilación, y ahora acabo de ver que aunque salga el micro ya funciona correctamente.
gracias!
-
Hola bones. Si. el ensamblador arroja Messages y Warnings muchas veces, simplemente para indicar o alertar al usuario programador sobre ciertos posibles errores y cosas a tener en cuenta.
Si deseas, puedes suprimir los mensajes y advertencias.
Por ejemplo podrias hacer esto:
ERRORLEVEL -306 ;Suprimir advertencia de seleccion de pagina
ORG 0
Hola
PAGESELW aja
movwf PCLATH
call aja
nop
nop
ERRORLEVEL +306 ;Restaurar advertencia de seleccion de pagina(evitemos errores, ¿eh? :D)
ORG 0x900
aja
return
Saludos.
-
ok gracias
-
BrunoF muy buena la info, no conocia el comando:
PAGESELW aja
Yo antes para hacer un cambio de pag, para setear el PCLATH me fijaba en la pag que estava la subrrutina a llamar y lo escribia, (que macaco jeje) esto es mas comodo ya que te permite cambiar de lugar las subrrutinas sin tener que cambiar el codigo donde fueron llamadas
Gracias
-
Hola esteca55.
Precisamente para eso que acabas de mencionar existe la funcion PAGESELW. Es un detalle que nos quita un dolor de cabeza a la hora de modificar codigo existente.
Saludos.
-
Las ensaye todas, para solucionar lo del cambio de pagina...pero no me anda ninguna de las opciones...Las mas tentadora y facil es esta que explica BRUNO, pero no me anda...PAGESELW !!!
estoy haciendo esto desde pag 0
PAGESELW STOPF
MOVWF PCLATH
CALL STOPF
luego en pag 1
org 0x800
STOPF "ALGO POR ACA"
RETURN
No hay caso, no funciona...por lo que vengo leyendo hace unas horas, es muy comun este problema...NO ASI LA SOLUCION !!!
Creo que ademas de la pag1, viene con el PCLATH apuntado a pag1...habra que cambiarlo otra vez a pag0...XXDDDDD !!!
Seguire mañan con la cabeza mas fresca !!!
SALUDOS !!!
-
Hola Resistencio.
Acabo de simular el codigo que expusiste en el MPLAB y anda perfecto...
Saludos.
-
"Que lo pan con queso"...lo voy a revisar otra vez !!! :-)
Gracias BRUNO....
Parece que BRUNO es como el sol (aunque no lo veamos, siempre esta :D)
______________________________
"Justo a mi me toco ser YO" QUINO