ESP32 core 1 panic'ed when EEPROM and timer interrupt used together

Posts: 1
Joined: Tue Jan 14, 2020 6:04 am

ESP32 core 1 panic'ed when EEPROM and timer interrupt used together

Postby pwdandekar » Tue Jan 14, 2020 6:36 am

I am reading an analog input in timer ISR, 100 times per second. If I write this 12-bit value in EEPROM (only once per second), I am getting following error:

Guru Meditation Error: Core 1 panic'ed (Cache disabled but cached memory region accessed)
Guru Meditation Error: Core 1 panic'ed (IllegalInstruction). Exception was unhandled.
Memory dump at 0x400e9408: bad00bad bad00bad bad00bad

I am using Arduino IDE and board name selection is NODE-32S and flash frequency is 80 MHz.
If I comment out //EEPROM.commit(); then program runs well. Please help. Thanks in advance.

#include <EEPROM.h>
const int analogpin = 36; // feed here 0 to 3.3V analog signal.
int analog_count = 0; // variable to store ADC count

int address = 0;// EEPROM Address
#define eeprom_size 2 // Size of EEPROM 2 bytes to store int variable

hw_timer_t * timer = NULL;// define a pointer which can point to our timer
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;// to synv loop and isr

void IRAM_ATTR onTimer(void);

void setup()

Serial.println("Failed to initialise EEPROM");

// setup timer and timer interrupts
timer = timerBegin(0, 80, true);
timerAttachInterrupt(timer, &onTimer, true);
timerAlarmWrite(timer, 10000, true);// 10000 microseconds or every 10 ms this interrupt will be generated.

void loop()
//EEPROM.commit(); // If this line is un-commented then program crashes.
Serial.print("EPROM write data = ");

void IRAM_ATTR onTimer()
analog_count = analogRead(analogpin);

Who is online

Users browsing this forum: Baidu [Spider] and 7 guests