Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Como cambiar de banco de memoria de programa

3 participantes

Ir abajo

Como cambiar de banco de memoria de programa Empty Como cambiar de banco de memoria de programa

Mensaje por cabezadura Jue 15 Dic 2011 - 1:32

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

cabezadura
Participante
Participante

Mensajes : 16
Fecha de inscripción : 23/06/2011

Volver arriba Ir abajo

Como cambiar de banco de memoria de programa Empty Re: Como cambiar de banco de memoria de programa

Mensaje por Pikitin Vie 16 Dic 2011 - 1:20

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:
Código:

PAGESEL MI_SUB

CALL MI_SUB

PAGESEL $

Nota que hay que poner otro PAGESEL al regreso de la subrutina para que el PCLATH se vuelva a ajustar al banco desde el que llamas.


Saludos.

Pikitin
veterano
veterano

Mensajes : 623
Fecha de inscripción : 26/11/2008

http://linuxmicros.blogspot.com/

Volver arriba Ir abajo

Como cambiar de banco de memoria de programa Empty Re: Como cambiar de banco de memoria de programa

Mensaje por cabezadura Vie 16 Dic 2011 - 12:33

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

cabezadura
Participante
Participante

Mensajes : 16
Fecha de inscripción : 23/06/2011

Volver arriba Ir abajo

Como cambiar de banco de memoria de programa Empty Re: Como cambiar de banco de memoria de programa

Mensaje por WaRaW Vie 16 Dic 2011 - 15:16

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.

WaRaW
Participante
Participante

Mensajes : 27
Fecha de inscripción : 18/04/2010

Volver arriba Ir abajo

Como cambiar de banco de memoria de programa Empty Re: Como cambiar de banco de memoria de programa

Mensaje por Pikitin Vie 16 Dic 2011 - 18:23

solo una ultima pregunta el ultimo pagesel va con signo pesos??
Si, el signo "$" representa la linea de programa actual, por ejemplo para saltar 3 lineas puedes poner:

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.


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.
No influye, En los PIC la memoria de programa y la de datos son completamente independientes (Arquitectura Harvard).

Pikitin
veterano
veterano

Mensajes : 623
Fecha de inscripción : 26/11/2008

http://linuxmicros.blogspot.com/

Volver arriba Ir abajo

Como cambiar de banco de memoria de programa Empty Re: Como cambiar de banco de memoria de programa

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.