I'm getting an assert at chVTDoTickI() after running my program a while.
This is the assert
Code: Select all
chDbgAssert(chTimeDiffX(ch.vtlist.lasttime, chVTGetSystemTimeX()) <=
chTimeDiffX(ch.vtlist.lasttime, chTimeAddX(now, delta)),
"exceeding delta");
The backtrace looks like this
Code: Select all
#0 0x08005256 in chSysHalt (reason=0x800a450 <__func__.7580.lto_priv.336> "chVTDoTickI") at ../../ChibiOS_18.2.0/os/rt/src/chsys.c:206
#1 0x080071d4 in chVTDoTickI.lto_priv.333 () at ../../ChibiOS_18.2.0/os/rt/include/chvt.h:465
#2 0x0800526a in chSysTimerHandlerI () at ../../ChibiOS_18.2.0/os/rt/src/chsys.c:355
#3 0x080077d6 in osalOsTimerHandlerI () at ../..l/ChibiOS_18.2.0/os/hal/osal/rt/osal.h:603
#4 0x0800780e in VectorB0 () at ../../ChibiOS_18.2.0/os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c:264
#5 <signal handler called>
#6 0x55555554 in ?? ()
System time configuration
Code: Select all
#define CH_CFG_ST_RESOLUTION 32
#define CH_CFG_ST_FREQUENCY 1000000
#define CH_CFG_INTERVALS_SIZE 32
#define CH_CFG_TIME_TYPES_SIZE 32
#define CH_CFG_ST_TIMEDELTA 2
I don't quite understand this assert. Any ideas on what may be causing this? Appreciate the help.