SKR3 - MCU 'mcu' shutdown: Rescheduled timer in the past

Hi all,

maybe s.o. can help me out? I own a skr3 board with 400mhz clock speed.
the skr is capable of 2,2kk stepper rates ( see benchmark below ).

regarding my ( worst case ) excel calculation, i can reach with these print settings a max. stepper rate / s of round about 1,864kk ( velocity is mm/s - max. value for travel moves )

nevertheless i get an mcu shutdown: Rescheduled timer in the past ( when printing )

Benchmark:

allocate_oids count=5
config_stepper oid=0 step_pin=PD4 dir_pin=PD3 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PA15 dir_pin=PA8 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PE2 dir_pin=PE3 invert_step=-1 step_pulse_ticks=0
config_stepper oid=3 step_pin=PD11 dir_pin=PD10 invert_step=-1 step_pulse_ticks=0
config_stepper oid=4 step_pin=PD15 dir_pin=PD14 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

SET start_clock {clock+freq}
SET ticks 900

reset_step_clock oid=0 clock={start_clock}
set_next_step_dir oid=0 dir=0
queue_step oid=0 interval={ticks} count=60000 add=0
set_next_step_dir oid=0 dir=1
queue_step oid=0 interval=3000 count=1 add=0

reset_step_clock oid=1 clock={start_clock}
set_next_step_dir oid=1 dir=0
queue_step oid=1 interval={ticks} count=60000 add=0
set_next_step_dir oid=1 dir=1
queue_step oid=1 interval=3000 count=1 add=0

reset_step_clock oid=2 clock={start_clock}
set_next_step_dir oid=2 dir=0
queue_step oid=2 intEval: SET start_clock 58989182113
erval={ticks} count=60000 add=0
set_next_step_dir oid=2 dir=1
queue_step oid=2 interval=3000 count=1 add=0

reset_step_clock oid=3 clock={start_clock}
set_next_step_dir oid=3 dir=0
queue_step oid=3 interval={ticks} count=60000 add=0
set_next_step_dir oid=3 dir=1
queue_step oiEval: reset_step_clock oid=0 clock=58989182113
d=3 interval=3000 count=1 add=0

reset_step_clock oid=4 clock={start_clock}
set_next_step_dir oid=4 dir=0
queue_step oid=4 interval={ticks} count=60000 add=0
set_next_step_dir oid=4 dir=1
queue_step oid=4 interval=3000 count=1 add=0


ECHO Test result is: {"%.0fK" % (5. * freq / ticks / 1000.)}

Eval: queue_step oid=0 interval=900 count=60000 add=0
Eval: reset_step_clock oid=1 clock=58989182113
Eval: queue_step oid=1 interval=900 count=60000 add=0
Eval: reset_step_clock oid=2 clock=58989182113
Eval: queue_step oid=2 interval=900 count=60000 add=0
Eval: reset_step_clock oid=3 clock=58989182113
Eval: queue_step oid=3 interval=900 count=60000 add=0
Eval: reset_step_clock oid=4 clock=58989182113
Eval: queue_step oid=4 interval=900 count=60000 add=0
Eval: ECHO Test result is: 2222K
Error: Unknown command: ECHO
169.915: stats count=117 sum=451500 sumsq=50549677
175.015: stats count=62 sum=85896 sumsq=731521
180.115: stats count=62 sum=85740 sumsq=728163
185.193: stats count=62 sum=89630 sumsq=817191
190.215: stats count=63 sum=88160 sumsq=755611
195.315: stats count=62 sum=85892 sumsq=734045
200.315: stats count=61 sum=84784 sumsq=724506

Can s.o. explain it to me? What did i miss?

Surely not an expert, so only @koconnor can give a definitive answer but I would assume that “real” printing is quite different to synthetic benchmarks.

If I’m understanding this correctly, the benchmarking will just toggle n number of pins as fast as possible without loosing the required timing precision. Surely sufficient to compare the performance between different MCUs.

In real printing you will have a lot of additional tasks, like streaming / processing the step queue, measuring / controlling temperatures, exchanging relevant information with the host etc.

Don’t quote me on this, just speculating.