I use a ESP32 WROOM 32E Dev board and I have a question about the register dump I get. It looks like this:
Code: Select all
Guru Meditation Error: Core 1 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x00000000 PS : 0x00060c30 A0 : 0x800d386d A1 : 0x3ffd9740
A2 : 0x3ffd5c58 A3 : 0x00000005 A4 : 0x3ffbdbac A5 : 0x00000000
A6 : 0x00000001 A7 : 0x00000064 A8 : 0x800d2691 A9 : 0x3ffd9720
A10 : 0x3ffd3954 A11 : 0x00000000 A12 : 0x3ffbdbaf A13 : 0x00000009
A14 : 0x00000004 A15 : 0x3ffd96f0 SAR : 0x0000000a EXCCAUSE: 0x00000014
EXCVADDR: 0x00000000 LBEG : 0x4008751d LEND : 0x4008752d LCOUNT : 0xffffffff
Backtrace: 0xfffffffd:0x3ffd9740 0x400d386a:0x3ffd9760 0x400d479c:0x3ffd9780
The code and instruction in question are running fine for quite some time, so that there must be something else that corrupts the instruction adress. Where does "0xfffffffd" come from and what are possible causes for corrupting an instruction adress during runtime like this?
Here's a simplified version of what the code looks like. It works a million times.
Code: Select all
class aclass{
bool set;
void action(){
Serial.println("test"); //
// other stuff;
};
}
aclass aclass_array[100];
loop{
for(int i = 0; i < 100; i++){
if(aclass_array[i].set){
Serial.print("i = ");
Serial.println(i); //When it chrashes, this is the last working line, although "i" is "valid". The serial.print at the beginning of
//the function won't be executed anymore
aclass_array[i].action();
}
}
//other stuff
}