Blynk Board Arduino Development Guide
Troubleshooting
Board Add-On Issue and Interrupts
If you compiled and uploaded code with an interrupt like the default Blynk Board core firmware, you may receive a message similar to the output below in the Arduino serial monitor when set at 9600 baud.
[1079] SparkFun Blynk Board Hardware v1.0.0 [1079] SparkFun Blynk Board Firmware v1.0.2 ISR not in IRAM! User exception (panic/abort/assert) Abort called >>>stack>>> ctx: cont sp: 3ffffe80 end: 3fffffc0 offset: 0000 3ffffe80: 00000005 00000030 3fffff30 4020c50a 3ffffe90: 000000fe 00000000 00000000 00000000 3ffffea0: 00000000 00000000 00000000 00ff0000 3ffffeb0: 5ffffe00 5ffffe00 7552000a 00000000 3ffffec0: 00000003 00000000 3fff05f0 4020dd4a 3ffffed0: 40100c02 000003e8 3fff05c4 4020dd60 3ffffee0: 3ffe8937 008afd80 3fff05f0 4020eb05 3ffffef0: 00000000 3fff07e8 3ffe89b7 3fff0918 3fffff00: 3ffe8937 000003e8 3fff05c4 3fff0918 3fffff10: 3ffe8937 3ffe87b6 3fff05f0 4020ebb4 3fffff20: 3ffe8937 3ffe87b6 3fff05f0 40202809 3fffff30: 3fffff40 3ffe87b6 00000000 4020814d 3fffff40: 2e302e00 feef0032 80efeffe feefeffe 3fffff50: 3fffdad0 00000000 3fff08d8 40206729 3fffff60: feefeffe feefeffe feefeffe feefeffe 3fffff70: feefeffe feefeffe feefeffe feefeffe 3fffff80: feefeffe feefeffe feefeffe feefeffe 3fffff90: feefeffe feefeffe feefeffe 3fff0918 3fffffa0: 3fffdad0 00000000 3fff08d8 4020d730 3fffffb0: feefeffe feefeffe 3ffe852c 4010155d <<<stack<<< c_?rS?f?[1080]
If you see this output, this error is due to the ESP8266 crashing with the board definition that you are using. For anyone using ESP8266 Community's board files (v2.5.1 and above), you must include ICACHE_RAM_ATTR
before an interrupt service routine's function definition. In this case, BlynkBoard_Setup.ino setup an interrupt with the following line of code:
. . . attachInterrupt(BUTTON_PIN, buttonChange, CHANGE);
By doing a search for the location of the interrupt service routine buttonChange
, it was defined in an older BlynkBoard_Core_Firmware.ino file that was used.
void buttonChange(void){ . . .
Including the ICACHE_RAM_ATTR
before the ISR definition resolves the issue.
ICACHE_RAM_ATTR void buttonChange(void){ . . .