Blynk Board Arduino Development Guide

Pages
Contributors: jimblom
Favorited Favorite 3

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){
.
.
.