A strange uP timer problem
That looks like aliasing on the scope display to me.  How many samples are there on the screen?  What's the sample rate?

Wind up the timebase to show just a couple of clock cycles and see if looks better...