Board is NodeMcu Amica
Compiler is Arduino 1.8.5
The sketch was written by somebody else so I am not sure what to do other than to maybe try a new version of the compiler.
I think that EspexceptionDecoder is saying that the subprogram Circum.cpp, line 318 is causing the error so I have included part of it as the whole thing exceeds the 9000 character max here.
This is line 318 in the original sketch.
nsats = (int)GPS->satellites();
I did not include the main sketch. There are a lot of subprograms and I have only listed part of Circum.cpp.
Circum.cpp
/* call occasionally to sync our system time from GPS, if it is running ok.
*/
void Circum::checkGPS()
{
resetWatchdog();
// read more from GPS, process when new message complete
while (ss->available()) {
// Serial.print((char)ss->peek());
if (GPS->encode(ss->read())) {
// note we receiving GPS sentences ok
gps_ok = true;
// get location and age
float new_lat, new_lng, new_alt;
unsigned long loc_fix_age;
GPS->f_get_position(&new_lat, &new_lng, &loc_fix_age);
new_alt = GPS->f_altitude();
// get time and age
unsigned long time_fix_age;
int new_year; byte new_mon, new_day, new_hr, new_min, new_sec, new_hund;
GPS->crack_datetime (&new_year, &new_mon, &new_day, &new_hr, &new_min, &new_sec,
&new_hund, &time_fix_age);
// determine whether data are up to date
if (loc_fix_age == TinyGPS::GPS_INVALID_AGE || time_fix_age == TinyGPS::GPS_INVALID_AGE) {
gps_lock = false;
Serial.println("No fix detected");
} else {
gps_lock = true;
if (loc_fix_age > 5000 || time_fix_age > 5000)
Serial.println("Warning: possible stale data!");
}
if (gps_lock) {
// update system time from GPS unless op has overridden
if (!time_overridden)
setnow (new_year, new_mon, new_day, new_hr, new_min, new_sec);
// update location from GPS, unless op has overridden or within allowed jitter
if (!loc_overridden
&& (fabs(latitude - new_lat) > 0.01
|| fabs(longitude - new_lng) > 0.01
|| fabs (altitude - new_alt) > 100)
) {
latitude = new_lat;
longitude = new_lng;
altitude = new_alt;
newObserver (latitude, longitude, altitude);
magdecl (latitude, longitude, altitude, decimalYear(), &magdeclination);
}
// get fix quality info
hdop = 0.01*GPS->hdop();
[b] nsats = (int)GPS->satellites();
[u][color=limegreen][/color][/u][/b]
}
}
}
}
And here are the exception decoder results
Exception 28: LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads
PC: 0x40201e64: Circum::checkGPS() at /tmp/arduino_build_245368/sketch/Circum.cpp line 318
EXCVADDR: 0x00000000
Decoding stack results
0x4020bd50: HardwareSerial::write(unsigned char) at /home/hexdump/Arduino-1.8.5/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.h line 161
0x4020c17c: Print::println() at /home/hexdump/Arduino-1.8.5/hardware/esp8266com/esp8266/cores/esp8266/Print.cpp line 184
0x4020c1a0: Print::println(__FlashStringHelper const*) at /home/hexdump/Arduino-1.8.5/hardware/esp8266com/esp8266/cores/esp8266/Print.cpp line 175
0x402015a4: loop() at /home/hexdump/Arduino-1.8.5/Sketches/AutoSatTracker-ESP-new/AutoSatTracker-ESP-new.ino line 80
0x4020d050: loop_wrapper() at /home/hexdump/Arduino-1.8.5/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp line 177