fs_etpu_ic_init( TPU0, FS_ETPU_PRIORITY_MIDDLE, ETPU_IC_MODE_CONT, FS_ETPU_TCR2, ETPU_IC_RISING_EDGE, 333 )
We seem to have a similar situation.
We need every edge to trigger an interrupt, so we initialize maxcount to 0 (since it is typed as uint32, transcount will never be less, right?).
But now we found situations (we used mode 'continuous', of course) where after some 35+ hours of correct operation, the channel suddenly didn't produce any interrupt any more.
After some serious work, we confirmed that the rest operated as expected, just no more interrupts.
Then we looked at the eTPU source, and found both maxcount and transcount (IC_MaxCount and IC_TransCount) to be typed as 'int24', meaning _signed_!
So apparently, we had a wraparound of IC_TransCount into negativity, and TransCount being less than zero (MaxCount) we didn't get any interrupts for the next 35+ hours.
Just as a warning to others (we're currently verifying our solution), either reset TransCount on every interrupt, or initialize MaxCount with -2^23 (0x800000) and see if that works...
FWIW,
Johan