Tom Lindley
Tom Lindley

Reputation: 371

ESP32-WROOM-32 vs ESP32-WROVER

I have numerous ESP8266 apps converted to 32 bit. These seem to run fine on the WROVER chips but on the WROOM-32 chips they load and execute, but panic after some time. I get this error:

Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.

My code is just flashing an LED (onboard pin 2) every second and watching for UDP packets. Other that this, they are just sitting the execute loop. I have a number of these chips and would like to use them if I can get them to run reliably.

Any hints on how/what to track down would be greatly appreciated.

Thanks.

Upvotes: 15

Views: 71991

Answers (4)

The problem is that your code is blocking main task in loop function. You need to create a new task with lower priority or in core 1, so the main task in loop function don't get blocked.

Check how to create task with freertos documentation.

Upvotes: 1

Michael Sch.
Michael Sch.

Reputation: 91

WROVER integrates an 8 MB "SPI PSRAM" AND it uses 2 GPIOs internally to control that PSRAM, cause it shares the SPI bus for flash. So the WROOM module has two additional GPIOs (16/17).

Upvotes: 9

Mukunda Modell
Mukunda Modell

Reputation: 964

The biggest difference between the WROOM and the WROVER chips is that the WROVER integrates an 8 MB "SPI PSRAM" chip on the module along with the ESP32-D0WDQ6. The specs and features of the various ESP32 modules are described in a table at the top of the ESP32 Modules and Boards section of the ESP32 Hardware Reference.

Without knowing more it's hard to say what the exact problem is, however, I suspect it has something to do with memory management. It could also be caused by a race condition as a consequence of the dual-core architecture of the ESP32.

Upvotes: 17

Tom Lindley
Tom Lindley

Reputation: 371

I think I may have the answer. I have some dormant code (at least I thought it was dormant) around for writing to the display on some NodeMCU chips with a display on them. It turns out that the initialize routine was actually being called. Once I corrected this, the program appears to be working. Once again, I am the victim of my own stupidity. Thanks very much for the help, it got me on the right track.

Upvotes: 8

Related Questions