User:Dvw/Spider slow jitter/Lag slow data fix

From MCEWiki
NB: The following has fast data with 10 samples-per-frame (=FAST_PER_SLOW) rather than the actual number of 20 just to make the table smaller.

This is a solution to Spider slow jitter which happens by only writing slow data when the input concludes a slow frame. i.e. whenever

MX % FAST_PER_SLOW = FAST_PER_SLOW - 1                      (1)

is true, write the latest slow data that you have.

We also have to detect instances where (1) is never true during a slow frame and add data to keep slow and fast data aligned (see the fourth slow frame below). This solution can result in discarded data, if (1) is true multiple times in a single slow frame. As before, green cells are fake data; red cells are repeated data.

Lag slow data fix.
SLOW FRAME BOUNDARY
fast[ 0] slowMX=0[0] slowMX=1[0] slowMX=2[0] slowMX=3[0] slowMX=4[0] slowMX=5[0] slowMX=6[0] slowMX=7[0] slowMX=8[0] slowMX=9[0]
fast[ 1]
fast[ 2]
fast[ 3]
fast[ 4]
fast[ 5]
fast[ 6]
fast[ 7]
fast[ 8]
fast[ 9]
SLOW FRAME BOUNDARY
fast[10] slowMX=0[1] slowMX=1[1] slowMX=2[1] slowMX=3[1] slowMX=4[1] slowMX=5[1] slowMX=6[1] slowMX=7[1] slowMX=8[1] slowMX=9[1]
fast[11]
fast[12]
fast[13]
fast[14]
fast[15]
fast[16]
fast[17]
fast[18]
fast[19]
SLOW FRAME BOUNDARY
fast[20] slowMX=0[2] slowMX=1[2] slowMX=2[2] slowMX=3[2] slowMX=4[2] slowMX=5[2] slowMX=6[2] slowMX=7[2] slowMX=8[2] slowMX=9[2]
fast[21]
fast[22]
fast[23]
fast[24]
fast[25]
fast[26]
fast[27]
fast[28]
fast[29]
SLOW FRAME BOUNDARY
fast[30] slowMX=0[3] slowMX=1[3] slowMX=2[3] slowMX=3[3] slowMX=4[3] slowMX=5[3] slowMX=6[3] slowMX=7[2] slowMX=8[2] slowMX=9[2]
fast[31]
fast[32]
fast[33]
fast[34]
fast[35]
fast[36]
fast[37]
fast[38]
fast[39]
SLOW FRAME BOUNDARY
fast[40]                    
fast[41]
fast[42] slowMX=0[3] slowMX=1[3] slowMX=2[3] slowMX=3[3] slowMX=4[3] slowMX=5[3] slowMX=6[3] slowMX=7[3] slowMX=8[3] slowMX=9[3]
fast[43]
fast[44]
fast[45]
fast[46]
fast[47]
fast[48]
fast[49]
SLOW FRAME BOUNDARY
fast[50]                    
fast[51]
fast[52] slowMX=0[4] slowMX=1[4] slowMX=2[4] slowMX=3[4] slowMX=4[4] slowMX=5[4] slowMX=6[4] slowMX=7[4] slowMX=8[4] slowMX=9[4]
fast[53]
fast[54]
fast[55]
fast[56]
fast[57]
fast[58]
fast[59]
[&c.]