Datos corrompidos en comunicacion de SIM808 con arduino UNO

Buenas!!, estoy teniendo problemas con la comunicación de mi modulo SIM808 con arduino UNO a travez de software serial.
Al enviar los comandos AT para realizar la lectura del gps funciona perfectamente hasta 3 veces, en la cuarta la lectura se mezcla con los comandos que envio.

Para dar un ejemplo, en lecturas exitosas me devuelve esto:
“$GPRMC,171534.000,A,2534.9510,S,05836.9903,W,0.01,160.97,070618,A*6F” y los devulve asi sin problemas 3 veces, luego la cuarta vez ya me los muestra asi:
“AT+CGPSOUT=1AT+C$GPRMC,171553.000,A4S.,10,”, como se observa, totalmente corrompido, se mezcla los comandos enviados con los comandos recibidos y deja el resultado inutil, el codigo de lectura es la siguiente:

void LeerRMC(){
  
  char lido = 0;
  String respuesta = "";
  
  while ((lido = SIM808.read()) != 10) {
    Serial.print(F("Leyendo: "));
    Serial.println(lido);
    if (lido > 0) {
     
      respuesta += lido;
      //Serial.println(respuesta);
    }
  } 
 DesactivarDatosGPS();



  Serial.println(F("Lectura: "));
  Serial.println(respuesta);

 
  
  if (!respuesta.equals(" ")) {
    if (respuesta.indexOf("RMC") > 0)
    {
      Serial.println("RMC Detectado==========================================");
      if (respuesta.charAt(18) == 'A')
      {
        Serial.println("Dato util =A ");
        //decodeRespuesta(respuesta);
        Serial.println(respuesta);
        for(int i=0;i<13;i++)Serial.println(campo[i]);

        Serial.print("Latitud: ");
        //Serial.println(DecodeNMEA(campo[3], campo[4]), 10);
        Serial.print("Longitud: ");
        //Serial.println(DecodeNMEA(campo[5], campo[6]), 10);

        //while (Serial.read() <= 1);

      }
    }
  }
  Serial.println("Nada detectado");
    
  }

lo cual tiene como funcion capturar los datos en un String y me lo muestra por serial, como dato importante creo, aumente el tamaño del buffer de la libreria SoftwareSerial de 64 a 256, y desde ahi falla en la cuarta vez, cuando estaba en 64, fallaba en el segundo intento, desde ya muchas gracias.

Prueba de este modo a ver si mejora

void LeerRMC(){
  
  char lido;
  String respuesta = "";
  
  while (SIM808.available()) {
        lido = SIM808.read();
        Serial.print(F("Leyendo: "));
        Serial.println(lido);
        respuesta += lido;
        //Serial.println(respuesta);
  } 
  DesactivarDatosGPS();

  Serial.println(F("Lectura: "));
  Serial.println(respuesta);

  if (!respuesta.equals(" ")) {
    if (respuesta.indexOf("RMC") > 0) {
      Serial.println("RMC Detectado==========================================");
      if (respuesta.charAt(18) == 'A') {
          Serial.println("Dato util =A ");
          //decodeRespuesta(respuesta);
          Serial.println(respuesta);
          for(int i=0;i<13;i++)Serial.println(campo[i]);

          Serial.print("Latitud: ");
          //Serial.println(DecodeNMEA(campo[3], campo[4]), 10);
          Serial.print("Longitud: ");
          //Serial.println(DecodeNMEA(campo[5], campo[6]), 10);

          //while (Serial.read() <= 1);
          respuesta = "";
      }
    }
  }
  Serial.println("Nada detectado");    
}