3B2: Fix for diagnostics timer hang

Under certain circumstances, the timer resolution in the Version 3
could become coarse enough that very short timer intervals would lead
to an infinite loop of bus errors when running timer firmware
diagnostics.
This commit is contained in:
Seth Morabito 2023-04-13 05:56:35 +02:00
parent 7be9f2f3e8
commit ae7ca950f2

View file

@ -92,9 +92,13 @@
#define QUICK_DELAY 100
#endif
#define DELAY_US(C,N) ((TIMER_MODE(C) == 3) ? \
(TIME_BASE[(N)] * (C)->divider) / 2 : \
TIME_BASE[(N)] * (C)->divider)
#define MIN_US 100
#define CALC_US(C,N) ((TIMER_MODE(C) == 3) ? \
(TIME_BASE[(N)] * (C)->divider) / 2 : \
TIME_BASE[(N)] * (C)->divider)
#define DELAY_US(C,N) (MAX(MIN_US, CALC_US((C),(N))))
#if defined(REV3)
/* Microseconds per step (Version 3 system board):