Hola amigos, Not enough RAM for all variables es el error que me da cuando intento compilar el código expuesto mas abajo, que básicamente digitaliza unas señales analógicas i las envia por 232 (que ya me funciona perfectamente) y a su vez se pretende que a través de 232 le puedan llegar órdenes como por ejemplo que deje de capturar las señales analógicas, que encienda un led,.. Y esto último es precisamente lo que me esta dando problemas y es lo que expongo a continuación:
void rece_232()
{
int buffer[tam_buf],i=0;
buffer[i++]=getc();
for(i=0; i<8; i++)
{
byt0[i]=buffer[i];
}
for(i=8; i<16; i++)
{
byt1[i]=buffer[i];
}
for(i=16; i<24; i++)
{
byt2[i]=buffer[i];
}
for(i=24; i<32; i++)
{
byt3[i]=buffer[i];
}
for(i=32; i<40; i++)
{
byt4[i]=buffer[i];
}
}
#INT_RDA
Interrupcio_recep232()
{
rb2=1;
rece_232();
}
Donde los siguientes parámetros estan definidos de forma global
#define tam_buf 40
#define tam_byt 8
int conta_byt=0,cont_sens,byt0[tam_byt],byt1[tam_byt],byt2[tam_byt],byt3[tam_byt],byt4[tam_byt];
El problema viene cuando se usa el tipo de dato especial: int nombre_variable[x]
, esto me ocupa muchiiiisima memoria RAM, aunque tengo que decir que antes de usar esto ya me movia con un uso de la RAM entre el 75% y el 85%, a que puede deberse? Por si sirve de algo comentar que la función principal del programa (main) es muy corta y lo que hace es ir llamando a funciones que a la vez se llaman entre ellas y que se encuentran en diversos .c con sus respectivos .h (esto lo tengo que arreglar y linkar). Uso un 16F877A transmitiendo a 9600 baudios.
Un saludo.