I am trying ESP32 with a simple timing code, in a VScode enviranment, the code is like this:
#include <Arduino.h>
//=====================================
// a timer demo
//=====================================
int interruptCounter = 0;
hw_timer_t *timer = NULL;
void TimerEvent()
{
Serial.print(interruptCounter++);
if(interruptCounter > 5)
{
interruptCounter = 1;
}
}
void setup()
{
Serial.begin(115200);
timer = timerBegin(0, 80, true);
timerAttachInterrupt(timer, &TimerEvent, true);
timerAlarmWrite(timer, 1000000, true);
timerAlarmEnable(timer);
}
void loop()
{
}
But then at PC there received an "Interrupt wdt timeout error":
Guru Meditation Error: Core 1 panic'ed (Interrupt wdt timeout on CPU1).
Core 1 register dump:
PC : 0x4008a14e PS : 0x00060e35 A0 : 0x800893c2 A1 : 0x3ffbeccc
A2 : 0x3ffb8a00 A3 : 0x3ffb8890 A4 : 0x00000004 A5 : 0x00060e23
A6 : 0x00060e23 A7 : 0x00000001 A8 : 0x3ffb8890 A9 : 0x00000018
A10 : 0x3ffb8890 A11 : 0x00000018 A12 : 0x00000004 A13 : 0x00060e23
A14 : 0x007bee98 A15 : 0x003fffff SAR : 0x00000020 EXCCAUSE: 0x00000006
EXCVADDR: 0x00000000 LBEG : 0x40085bfc LEND : 0x40085c07 LCOUNT : 0xffffffff
Core 1 was running in ISR context:
EPC1 : 0x400d9f43 EPC2 : 0x00000000 EPC3 : 0x00000000 EPC4 : 0x00000000
Backtrace:0x4008a14b:0x3ffbeccc |<-CORRUPTED
Core 0 register dump:
PC : 0x4008a2d1 PS : 0x00060035 A0 : 0x80088fef A1 : 0x3ffbe7ec
A2 : 0x3ffbee98 A3 : 0xb33fffff A4 : 0x0000abab A5 : 0x00060023
A6 : 0x00060021 A7 : 0x0000cdcd A8 : 0x0000abab A9 : 0xffffffff
A10 : 0x00000000 A11 : 0x00000000 A12 : 0x3ffc13e4 A13 : 0x00000007
A14 : 0x007bee98 A15 : 0x003fffff SAR : 0x0000001a EXCCAUSE: 0x00000006
EXCVADDR: 0x00000000 LBEG : 0x00000000 LEND : 0x00000000 LCOUNT : 0x00000000
Backtrace:0x4008a2ce:0x3ffbe7ec |<-CORRUPTED
ELF file SHA256: 0000000000000000
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:12776
load:0x40080400,len:3032
entry 0x400805e4
Is anyone can help me with this problem? Thanks.
Timer error
Re: Timer error
Interrupt routines must complete very quickly, but writing to serial is a slow process. Try setting a flag in your interrupt routine and printing from loop() when the flag changes. You should also make sure your interrupt routine stays in internal memory using:
The timer documentation page has examples at the bottom.
Code: Select all
void ARDUINO_ISR_ATTR TimerEvent()
Who is online
Users browsing this forum: NoTan2 and 32 guests