Thoughts:
1. Does "_delay_ms()" accept a double as a value size?
2. You read the ADC inside the loop, this will slow it down by waiting for the ADC to complete. Can it be moved into an ISR?
3. Assuming the smallest value "_delay_ms()" will accept as a value is 1, it is used 6 times in the loop so at least 6mS is needed for one cycle of phases, is that too slow?
I'm not sure which compiler you are using and I'm not very familiar with Atmega-8 but the code looks inefficient for high speed to me.
Brian.