Hola matyvico,
tal vez no sea ayuda ni consuelo, pero podrías intentar forzando al CCS a que guarde el array justo alineado al inicio de un banco de RAM, de esa forma por ahi el CCS te lo pone secuencialmente de corrido. Había una sentencia en CCS para indicar la posición RAM pero no la recuerdo. Tal vez es tan evidente como #RAM. Si no la encontrás decime que la busco en algún proyecto pasado.
Un gusto haberte conocido la voz.
Saludos.
BrunoF! Muchas gracias por la rapida respuesta! Si, es muy lógico lo que decís, y ademas le da sentido a algo que me sucedio al definir un char de la forma:
char imagen[9][96]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,240,240,240,240,240,240,240,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,240,240,240,
240,240,240,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,240,240,240,240,240,240,240,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,3,15,63,255,255,255,255,255,255,252,248,240,224,192,128,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,128,192,224,
240,248,252,255,255,255,255,255,255,63,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,7,15,31,
63,127,255,255,255,255,255,254,252,252,248,248,240,240,255,255,255,255,255,255,255,255,240,240,248,248,252,252,254,255,255,255,255,255,127,63,31,15,
7,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,240,240,240,240,240,240,240,240,240,240,240,240,
241,241,243,243,247,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,247,247,243,243,241,241,240,240,240,240,240,240,240,
240,240,240,240,240,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,143,
143,207,207,239,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,207,207,143,143,15,15,15,15,15,15,15,15,15,15,15,
15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,192,224,240,248,252,254,255,255,255,255,255,127,
63,63,31,31,15,15,255,255,255,255,255,255,255,255,15,15,31,31,63,63,127,255,255,255,255,255,254,252,248,240,224,192,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,240,252,255,255,255,255,255,255,63,31,15,7,3,1,0,0,0,0,0,0,0,0,255,255,255,255,
255,255,255,255,0,0,0,0,0,0,0,0,1,3,7,15,31,63,255,255,255,255,255,255,252,240,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,12,15,15,15,15,15,15,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,15,15,15,15,15,15,
14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
Ese char almacena la información para enviar una imagen al LCD (muestra el logo de la universidad a la que voy como presentación), el problema es que si la defino SOLO con la habitual definición de char, aparecen unas líneas salidas de contexto de la imagen, por el contrario si lo defino como:
const char imagen[9][96]={...}La cosa cambia, la imagen se muestra perfectamente y encima se ocupa menos RAM, ya que de la ayuda de ccs, se tiene para la definición de const lo siguiente:
const Data is read-only. Depending on compiler configuration, this qualifier may just make the data read-only -AND/OR- it may place the data into program memory to save space.
Y a la vez el inconveniente es que se convierte en solo lectura (pasa a formar parte de la memoria de programa), imposibilitando su modificación. Lo raro de todo esto es que AVECES lo hace y otras no y supongo que ese comportamiento se debe a que quizás en alguna de esas veces alguna variable definida antes o algo raro que haga el CCS genera que ese char 'consiga' un banco propio de RAM y no se vea alterado...
Respecto a lo que haces mención sobre forzarl al CCS a que guarde el array alineado al inicio de un banco de la RAM, me parece que el comando #LOCATE serviría, de la ayuda del CCS:
#LOCATE
works like #BYTE however in addition it prevents C from using the area.
A special form of this directive may be used to locate all A functions local variables starting at a fixed location.
Use: #locate Auto = address
This directive will place the indirected C variable at the requested address.
No se que opinen, pero esto ya me esta desesperando, pregunte a otros amigos y no podían creer que no pudiera hacer lo que quería con un char global!
Nos vemos! Y gracias por recibimiento!