ESP32 Tips

Table of Contents

  1. Decoding errors in Serial Monitor
    1. Step 1: Install EspExceptionDecoder
    2. Step 2: Select “ESP Exception Decoder” from Tools menu
    3. Step 3: Copy/paste your stack error trace

We have collected some ESP32 tips-and-tricks below.

Decoding errors in Serial Monitor

The ESP32 spits out fairly thorough exceptions, errors, and stack traces into Serial Monitor. For example:

⸮Guru Meditation Error: Core 1 panic'ed (LoadProhibited). 
Exception was unhandled. Core 1 register dump: 
 PC : 0x40080f85 PS : 0x00060530 A0 : 0x800d1a1a A1 : 0x3ffb1f60
 A2 : 0x00000009 A3 : 0x00000002 A4 : 0x0800001c A5 : 0x00000003
 A6 : 0x00000003 A7 : 0x00000000 A8 : 0x3f401048 A9 : 0xffffffff
 A10 : 0xffffffff A11 : 0x00000054 A12 : 0x08000000 A13 : 0x4a000000
 A14 : 0xffffffff A15 : 0x00000000 SAR : 0x0000001a EXCCAUSE: 0x0000001c
 EXCVADDR: 0xffffffff LBEG : 0x00000000 LEND : 0x00000000 LCOUNT : 0x00000000

ELF file SHA256: 0000000000000000

Backtrace: 0x40080f85:0x3ffb1f60 0x400d1a17:0x3ffb1f80 0x400d4f2e:0x3ffb1fb0 0x400869bd:0x3ffb1fd0

Rebooting...

To help decode these messages, you can install the EspExceptionDecoder. This tip was submitted by CSE490 student W.Q. Thank you!

Step 1: Install EspExceptionDecoder

Follow the installation instructions in the README.md.

Step 2: Select “ESP Exception Decoder” from Tools menu

Then, open the Arduino IDE. Under the Tools menu, there will be a new option called ESP Exception Decoder. See screenshot below.

Figure. The EspExceptionDecoder option in the Arduino IDE Tools menu.

Step 3: Copy/paste your stack error trace

Clicking on this option will open a new window where you can copy/paste the error message:

Figure. The EspExceptionDecoder window in the Arduino IDE.

When we pasted the stack trace from above, the exception decoder generated the following message:

PC: 0x40080f85: __pinMode at /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/esp32-hal-gpio.c line 115
EXCVADDR: 0xffffffff

Decoding stack results
0x40080f85: __pinMode at /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/esp32-hal-gpio.c line 115
0x400d1a17: showLoadScreen() at /Users/user/Desktop/GitProjects/490f-playground/BreakIt32/BreakIt32.ino line 525
0x400d4f2e: spiInitBus at /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/esp32-hal-spi.c line 396
0x400869bd: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 143

In this particular case, the messages states that there is an error on Line 525 of the user’s code in the showLoadScreen() method. Indeed, upon investigation, the student found that they were using the wrong pin number and fixed this by re-examining the Huzzah32 pin diagram and updating the pin.


This website was developed by Professor Jon E. Froehlich and the Makeability Lab using Just the Docs. If you found the website useful or use it in your teaching, we'd love to hear from you: jonf@cs.uw.edu. This website and all code is open source (website GitHub, Arduino GitHub, p5js GitHub). You can find the MakeabilityLab_Arduino_Library here. Found an error? File a GitHub Issue.