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.
language:c
[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:
language:c
.
.
.
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.
language:c
void buttonChange(void){
.
.
.
Including the ICACHE_RAM_ATTR
before the ISR definition resolves the issue.
language:c
ICACHE_RAM_ATTR void buttonChange(void){
.
.
.