Delaying by 0 ticks violates assert

Being used to Ada’s delay until construct (delay until an absolute time; in the language since 1983), I took some time to appreciate how vTaskDelayUntil() was supposed to work.

To get an undrifting delay, we would say e.g.

loop
   --  do stuff here
   delay until Next_Time;
   Next_Time := Next_Time + Period;
end loop;

which is I think what Joel is suggesting.