SoloCodigo

Programación Específica => Microcontroladores => Dispositivos Parallax: Propeller => Mensaje iniciado por: drm en Miércoles 20 de Agosto de 2008, 13:00

Título: Memoria
Publicado por: drm en Miércoles 20 de Agosto de 2008, 13:00
Hola a todos, necesito de ayuda más experta, por eso acudo al foro, para ver si podeis ayudarme.
El problema que tengo es el siguiente:

Estoy desarrollando una aplicación con los drivers TV y Graphics. Mi programa contiene 720 líneas de código Spin, y cuando pulso F8 en el Editor de Spin, el resultado que muestra es el siguiente:

Program: 1809 Longs
Variable: 243 Longs
stack/free: 6136 Longs

Cuando ejecuto el programa con F10, todo funciona correctamente sin ningún tipo de error.

El problema es que ahora mismo, si le intento poner una línea más de código, me hace cosas raras en la pantalla, o la pone directamente en negro o en azul, depende como le de.

Yo pienso que es un problema de memoria, pero no se como sacarle más memoria para seguir programando.
Os pongo las constantes que tengo definidas por si tengo que tocar algo de ahí.

CON
  _clkmode = xtal1 + pll16x  
  _xinfreq = 5_000_000
 
  _stack = ($12_000 + $12_000 + 100) >> 8

  x_tiles = 16
  y_tiles = 12

  paramcount = 14      
  bitmap_base = $2200
  display_base = $5000
...

también queria haceros otra pregunta relacionada con el funcionamiento del microprocesador. Si yo cargo el programa en una Eprom de capacidad superior a la memoria Ram del propeller, ¿El propeller lee de la Eprom, o me daría error porque carga de la Eprom a su Ram y la Eprom al ser superior que la Ram no lo cargaría?

Muchas Gracias a todos.
Antonio
Título: Re: Memoria
Publicado por: Hal2000 en Jueves 21 de Agosto de 2008, 00:30
Pues lo que te pasa es que tu programa entra en la memoria de Video, ten en cuenta que la librería grafica utiliza doblebufer, lo que puedes hacer es quitar peso a la librería grafica.
Edítala eliminando comandos graficos que no uses tipo triangulos y cosas de ese tipo, así liberas algo de espacio.

¿en que consiste tu programa?
Título: Re: Memoria
Publicado por: Hal2000 en Jueves 21 de Agosto de 2008, 00:34
también queria haceros otra pregunta relacionada con el funcionamiento del microprocesador. Si yo cargo el programa en una Eprom de capacidad superior a la memoria Ram del propeller, ¿El propeller lee de la Eprom, o me daría error porque carga de la Eprom a su Ram y la Eprom al ser superior que la Ram no lo cargaría?


El propeller no ejecuta el programa desde la eprom, como tu dices la vuelca a ram y desde hay ejecuta.
Otra cosa es que pongas una memoria más grande (512Kbit 8 bit)para que tu programa guarde datos en ella, digamos que (32Kbs32bit)(128Kbit(8)) serian el programa y el resto para almacenar
Título: Re: Memoria
Publicado por: drm en Jueves 21 de Agosto de 2008, 10:48
Hola Hal2000.

La librería Graphics ya la tenía optimizada y solo tiene las funciones que necesito.
¿Sabes si alguien tiene optimizado el driver TV?. Éste, al estar en ensamblador me es más complicado quitarle cosas, y posiblemente pueda sacarle algo de espacio al programa reduciendolo.

El programa que estoy desarrollando es, un prototipo domótico para gestionar una vivienda.

Muchas Gracias Hal2000 por tu respuesta.
Título: Re: Memoria
Publicado por: Hal2000 en Lunes 25 de Agosto de 2008, 03:43
una cosa que puedes hacer es quitar el doble bufer, borras la zona de la pantalla que utilizas, esto hará un parpadeo , pero así dejaras libre un buen pedazo de memoria, el código no emplea tanta memoria como parece, es el bufer lo que deja seco al micro, ten en cuenta que un cog en solo puede tener 2k de programa, lo que no es mucho espacio, por lo visto otro problema es que la memoria del cog hace la función de pila, y se queda sin espacio. ¿Has pensado usar un display de texto?
yo te aconsejo que uses uno, así solo necesitarías la librería serial, eso si no tendrías gráficos, otra cosas que puedes hacer es usar un controlador grafico tipo picoso
 me cuentas que te parece

 http://www.bricogeek.com/tienda/index.php?id=24 (http://www.bricogeek.com/tienda/index.php?id=24" onclick="window.open(this.href);return false;)
Título: Re: Memoria
Publicado por: drm en Miércoles 27 de Agosto de 2008, 22:10
Hola Hal2000,
Agradezco mucho tus respuestas para ayudarme a solucionar el problema.

He mirado las opciones que me dices, y la que veo mejor es la del Controlador de Video, pero de momento para el proyecto, quisiera realizarlo todo con el Propeller.

Tengo que desarrollarlo con la TV, porque me gustaría que se visualizara en cualquier televisión, por eso no utilizo un display de texto.

Una pregunta, ya que no tengo mucha experiencia en esto: ¿Cómo hago para quitar el doble bufer y sacarle algo más de memoria?

Muchas Gracias Hal2000.
Título: Re: Memoria
Publicado por: Hal2000 en Sábado 30 de Agosto de 2008, 01:14
Dejame que lo mire, te puedo anticipar que al principio de la libreria hay unos paramentros que hacen referencia al bufer de memoria.
Un saludo