"I presume you have some of the other WGGM bits set because I think WGM2 on its own is invalid."
I appreciate this. I don't have a good grasp of the WGGM bits. I have poured over the spec sheets about 7 times already and I was barely able to cobble together that stuff that I did. I am very likely leaving out an important bit (although it is odd that my sketch works, a timer register set incorrectly should result in massive issues)
I ran into something weird though. I rearranged some code when I was trying to find where I was losing count of a step here and there, and I noticed that a member variable for the motor class was changing spontaneously without any pointer references to it and without a single command to write to it. What could be causing this? The variable gets checked every time a compare match interrupt is called, but not written to. It was also declared as volatile, if that matters. So why is it not retaining it's value?
Can't post code at the moment, but I will in a bit.