Argon Variables/Functions crashing (sometimes)

I just bought and received an Argon to play around with (on fw 2.3.0) and tried to migrate some very basic working code from a Photon to the Argon. (by working, I mean months of uptime, no issues)

The code just gets the value for two DS18B20 temperature sensors every 10 seconds and does an HTTP request (HttpClient library) every 5 seconds to grab a three letter value from the response (“LTE”).

I have three String objects that return the data from these three things, like “OK - 72.3”, “HIGH - 96.5”, and “LTE” or “NA”

String dsTemp1 = "NA - 0";
String dsTemp2 = "NA - 0";
String lte = "NA";

void setup() {
  Particle.variable("ds1", dsTemp1);
  Particle.variable("ds2", dsTemp2);
  Particle.variable("lte", lte);
}

The code executes time and time again without issue, and I’m reading this all in the serial monitor same as I did with the Photon. However, when I try to get the value of any of these variables from the Particle console, about 50% of the time the Argon immediately starts flashing red and reboots itself. I also had a simple function (not included in snippet) that simply printed the input to serial monitor - and that too immediately crashed.

Is there something unique about how the Argon operates that could explain this? Like is it possibly the HTTP request waiting for its response + me requesting a variable in the console that happens at the wrong time, and Argons cannot handle this where Photons can?

Thanks for any leads. I just wanted to get some basic functionality moved to the Argon before I delved in to bluetooth fun, but I’m stuck on some of the most 101 stuff that I’ve been doing on Photons for the better part of a decade.

So I guess the Argon was more sensitive to other calls being made prior to declaring Particle.variable/function. I didn’t bother to disclose a call made prior to these in my code snippet:

void setup() {
  **router.begin();**
  Particle.variable("ds1", dsTemp1);
  Particle.variable("ds2", dsTemp2);
  Particle.variable("lte", lte);
}

because all router.begin() does is serial print “Begin router” – nothing else. Anyway, case closed. Been reliable for dozens of calls to all my variables since about an hour after my first post when I figured this out (by finding a post here mentioning that the setup timing and declaring of variables is touchy)

1 Like