Proyecto con Arduino Mega 2560 y Shield Ethernet[SOLUCIONADO]

Hola!Como estan?
Estoy realizando un proyecto con Arduino Mega 2560 y un Ethernet Shield.
El proyecto consiste basicamente en enviar una peticion web con datos sobre el estado de 11 sensores y desde la pagina se envia informacion relacionada con la accion que realizaran los sensores segun su estado. El programa esta dividido en distintas funciones, que corresponden a las diferentes partes que realiza el programa (Lectura de sensores, Acciones a realizar, Envio a la Web y Lectura de datos de la Web).
Yo probe cada una de estas funciones de manera separada para ajustar los detalles y corregir errores antes de probar todo junto pero cuando pruebo todo junto el sketch deja de funcionar en la funcion Envio a la Web, con cualquiera de las sentencias de clase cliente(client.available, client.connect, client.print o client.stop).
Pense que podria ser un problema de memoria ya que la diferencia entre el programa total y los programas con cada funcion es su tamaño, pero al parecer me equivoque ya que aun me quedan unos 4000 bytes disponibles de SRAM.
La funcion que presenta problema en el sketch general es esta:

void setup()
{
Serial.begin(9600);
delay(200);
Serial.println("Comenzando la prueba");
if (Ethernet.begin(mac) == 0) {
Ethernet.begin(mac, ip, dnServer, gateway, subnet);
Serial.println("Conectado 0");
}
else if(Ethernet.begin(mac)==1){
Serial.println("Conectado 1");
}
Serial.print("SRAM libre: "); Serial.println(freeRam());
delay(2000);
}

void loop()
{
Serial.println("Leer datos de web");
Serial.print("Memoria disponible: ");
Serial.println(memoryTest());
Serial.print("SRAM libre: "); Serial.println(freeRam());
if (client.connect(server,80))
{
client.print(Cabecera);
Serial.print(Cabecera);
client.println(Peticion.length());
Serial.println(Peticion.length());
client.println();
Serial.println();
client.println(Peticion);
Serial.println(Peticion);
while (Lectura == true)
{
if(client.available())
{
char c = client.read();
Respuesta[index]=c;
Serial.println(Respuesta);
if((index>0)&&(auxlec==true))
{
if(Respuesta[index]=='\n' && Respuesta[index-2]=='\n')
{
analisiscabecera();
index = 0;
memset (&Respuesta,0,500);
}
else
{
index++;
}
}
else
{
if (auxlec == false)
{
if (Lengthleida == Length)
{
analisisdatos();
Lectura = false;
}
else
{
index++;
Length++;
}
}
else
{
index++;
}
}
TimeReadPrevio = millis();
}
else
{
TimeReadActual = millis();
if (TimeReadActual - TimeReadPrevio > TIMEOUT)
{
Serial.println("El tiempo de espera se agoto");
Lectura = false;
}
}
}
Serial.println("Fin");
delay(500);
client.stop();
client.flush();
}
}

Alguien sabe porque esta parte del codigo hace que se clave el arduino?
Desde ya les agradezco su ayuda y si logro solucionar lo comento para que sea de ayuda para los que tengan algun problema similar.
Muchas gracias

Les comento que el problema fue debido a que configure el pin 53 como entrada y la interfaz SPI no funcionaba.