Como cambiar de banco de memoria de programa
3 participantes
Página 1 de 1.
Como cambiar de banco de memoria de programa
Hola, por primera vez mi programa supera el primer banco de memoria del PIC en este caso el 16F887, lo que me pasa es, que hay partes del programa que estan en el banco 1 que llaman a subrutinas del banco 1, que al mismo tiempo llaman a subrutinas del banco 0.
hice pruebas de poner algunas partes del programa en el banco 3 de memoria, pero sigo con lo mismo. mi problema en este momento no es grave ya que solo elimine algunas rutinas que no usaba y listo, pero me preocupa el dia que espero que sea pronto que llene por completo la memoria del pic y quiero tenerlo solucionado de antemano.
Estuve googleando y todo lo que encuento es como hacer un direccionamiento indirecto , pero siempre es en la memoria ram no encuentro nada de la memoria de programa. solo encontré un párrafo que decía algo del PCLATH pero no tenia ningún ejemplo y no lo entendí muy bien la hoja de datos tampoco habla mucho de esto.
si a alguien le paso , o sabe como solucionarlos se lo agradecería.
por si les sirve el error que me da es el siguiente.
Message[306] D:\INFORMACIONES\WEAPON X\PIC\16F648\16F887 BASE\16F887-MATRIZ01.ASM 219 : Crossing page boundary -- ensure page bits are set.
gracias
hice pruebas de poner algunas partes del programa en el banco 3 de memoria, pero sigo con lo mismo. mi problema en este momento no es grave ya que solo elimine algunas rutinas que no usaba y listo, pero me preocupa el dia que espero que sea pronto que llene por completo la memoria del pic y quiero tenerlo solucionado de antemano.
Estuve googleando y todo lo que encuento es como hacer un direccionamiento indirecto , pero siempre es en la memoria ram no encuentro nada de la memoria de programa. solo encontré un párrafo que decía algo del PCLATH pero no tenia ningún ejemplo y no lo entendí muy bien la hoja de datos tampoco habla mucho de esto.
si a alguien le paso , o sabe como solucionarlos se lo agradecería.
por si les sirve el error que me da es el siguiente.
Message[306] D:\INFORMACIONES\WEAPON X\PIC\16F648\16F887 BASE\16F887-MATRIZ01.ASM 219 : Crossing page boundary -- ensure page bits are set.
gracias
cabezadura- Participante
- Mensajes : 16
Fecha de inscripción : 23/06/2011
Re: Como cambiar de banco de memoria de programa
Hola cabezadura.
Supongo que estás programando en asm.. no?
Hay varios métodos, pero creo que lo maś sencillo es usar la directiva PAGESEL, que se encarga de ajustar el PCLATH, por ejemplo si quieres llamar a la subrutina MI_SUB que está en cualquier banco de memoria:
Saludos.
Supongo que estás programando en asm.. no?
Hay varios métodos, pero creo que lo maś sencillo es usar la directiva PAGESEL, que se encarga de ajustar el PCLATH, por ejemplo si quieres llamar a la subrutina MI_SUB que está en cualquier banco de memoria:
- Código:
PAGESEL MI_SUB
CALL MI_SUB
PAGESEL $
Saludos.
Re: Como cambiar de banco de memoria de programa
Si estoy programando en .ASM,
Gracias por la data, hoy voy a hacer una prueba, solo una ultima pregunta el ultimo pagesel va con signo pesos??, justamente ayer lei algo del pagesel, pero no decia nada de esta linea.
mi miedo es, (tendre que probarlo hoy), que mi programa esta constantemente pasando de un banco de memoria a otro pero en la RAM, esto no se si influye con los bancos de memoria del programa.
gracias
Gracias por la data, hoy voy a hacer una prueba, solo una ultima pregunta el ultimo pagesel va con signo pesos??, justamente ayer lei algo del pagesel, pero no decia nada de esta linea.
mi miedo es, (tendre que probarlo hoy), que mi programa esta constantemente pasando de un banco de memoria a otro pero en la RAM, esto no se si influye con los bancos de memoria del programa.
gracias
cabezadura- Participante
- Mensajes : 16
Fecha de inscripción : 23/06/2011
Re: Como cambiar de banco de memoria de programa
Saludos. viendo que programas en ASM creo que te podría interesar esta entrada del blog: https://pic-linux.forosactivos.net/t241-se-busca-info-asm-avanzado
y derivado de eso esta este link que tiene una informacion muy buena con respecto al mpasm: http://perso.wanadoo.es/pictob/directivas_mpasm.htm
Bueno solo quería complementar esta entrada con mas información interesante. pero Pikitin ya te ha dado una solución.
y derivado de eso esta este link que tiene una informacion muy buena con respecto al mpasm: http://perso.wanadoo.es/pictob/directivas_mpasm.htm
Bueno solo quería complementar esta entrada con mas información interesante. pero Pikitin ya te ha dado una solución.
WaRaW- Participante
- Mensajes : 27
Fecha de inscripción : 18/04/2010
Re: Como cambiar de banco de memoria de programa
Si, el signo "$" representa la linea de programa actual, por ejemplo para saltar 3 lineas puedes poner:solo una ultima pregunta el ultimo pagesel va con signo pesos??
Goto $+3
Es último pagesel es necesario para que que el PCLATH vuelva apuntar a la página de memoria desde donde se llama la subrutina, equivale a decir: "selecciona la página donde estoy ahora". Si no lo pones, el PCLATH se quedaría apuntando a la página donde está la subrutina.
No influye, En los PIC la memoria de programa y la de datos son completamente independientes (Arquitectura Harvard).
mi miedo es, (tendre que probarlo hoy), que mi programa esta
constantemente pasando de un banco de memoria a otro pero en la RAM,
esto no se si influye con los bancos de memoria del programa.
Temas similares
» programa para 89C51 en sdcc no funciona como deberia
» Cambiar de un código a otro de PIC. Temprorizador.
» No enlaza el pic con el circuito
» que ha pasado con este programa??
» Qt con QtCreator
» Cambiar de un código a otro de PIC. Temprorizador.
» No enlaza el pic con el circuito
» que ha pasado con este programa??
» Qt con QtCreator
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.