Pages: [1]   Go Down
Author Topic: SIM 900: Error 604 Stack Busy  (Read 1442 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
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?
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4702
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4702
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Quote
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?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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)

Quote
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
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4702
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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?

Quote
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?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Do you have any more information about that?
here: http://www.desert-home.com/2012/05/arduino-mega2560-wrapping-up-bootloader.html

Quote
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:

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:

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

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4702
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote

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

Quote
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.

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

Does that solve your problem?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Does that solve your problem?

yes
Logged

Pages: [1]   Go Up
Jump to: