SIM 900: Error 604 Stack Busy

I'm using a SIM 900 GPRS Shield for Arduino for sending data using HTTP command; sometime when I use the command

AT+HTTPACTION=1

I receive error code 604, that mean Stack Busy.
Someone know what is the problem?

If I reset the board I receive the same this error; I note that if I turn off and turn on the GPRS board, so that I receive a new IP address, the error does not occur, so it's like if the old IP address is "blocked"; why?

If I reset the board I receive the same this error; I note that if I turn off and turn on the GPRS board, so that I receive a new IP address, the error does not occur, so it's like if the old IP address is "blocked"; why?

Does that mean you have the same IP after a reset? In this case the reset wasn't successful.

"Stack busy" sound like a SIM900 internal problem, so resetting the shield is probably the best option. How do you reset the module? By a software command, a hardware button or anything else?

I reset the module by software using a reset pin of Arduino and a digital output low; I don't use the watchdog because it doesn't work into my version of Arduino (Arduino Mega 2560).. However also using the HW reset button I receive sometimes the same IP address, and I don't think this is an error, because the GPRS shield is always turned on, so the reset doesn't have effect on it.

Which module are you using? There are several shields using the SIM 900 module.

I don't use the watchdog because it doesn't work into my version of Arduino (Arduino Mega 2560).

Why should the watchdog feature not work on a Mega2560?

Which module are you using?

I'm using a GPRS Shield v1.4 by Seed Studio (like this but v1.4 http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0)

Why should the watchdog feature not work on a Mega2560?

watchdog feature not work on a Mega2560 because of a bug into the bootloader; newer Mega2560 shouldn't have this bug

watchdog feature not work on a Mega2560 because of a bug into the bootloader; newer Mega2560 shouldn't have this bug

I never heard of this bug and I didn't know that the bootloader is able to disable the watchdog feature completely. Do you have any more information about that?

I reset the module by software using a reset pin of Arduino and a digital output low;

If you mean pin 9, this isn't a reset but a power down of the module. You can power it up and down using this pin, just put a high pulse of 1s length on it. How do you do the reset you mentioned?

Do you have any more information about that?

here: Desert Home: Arduino Mega2560 - Wrapping up the Bootloader Problem

If you mean pin 9

no, i don't mean pin 9, but the reset pin of arduino UNO, I have used part ot this code:

int led = 13;//pin 13 as OUTPUT LED pin
int resetPin = 12;
// the setup routine runs once when you press reset:
void setup() {  
  digitalWrite(resetPin, HIGH);
  delay(200);
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);    
  pinMode(resetPin, OUTPUT);     
  Serial.begin(9600);//initialize Serial Port
  Serial.println("reset");//print reset to know the program has been reset and 
  //the setup function happened
  delay(200);
}

// the loop routine runs over and over again forever:
void loop() {
  delay(10);
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  Serial.println("on");
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  Serial.println("off");
  delay(1000);               // wait for a second
  Serial.println("resetting");
  delay(10);
  digitalWrite(resetPin, LOW);
  Serial.println("this never happens");
  //this never happens because Arduino resets

}

however turning off and turning on the GPRS Shield via software I solved:

void powerUpOrDown()
{
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);
}

here: http://www.desert-home.com/2012/05/arduino-mega2560-wrapping-up-bootloader.html

This is a know problem with most bootloaders of the Arduino. You can use the watchdog but you cannot use watchdog times below 4s.

no, i don't mean pin 9, but the reset pin of arduino UNO, I have used part ot this code:

Resetting the Arduino doesn't change anything because the SIM 900 shield won't even notice.

however turning off and turning on the GPRS Shield via software I solved:

Does that solve your problem?

Does that solve your problem?

yes