У меня Zero Crossing детектируется при PWM_ON.
Если есть нужда крутить ооочень медленно, то лучше делать при PWM_OFF. Однако, при таком методе коммутации, медленно крутить скорее всего не получится из-за малого значения Back EMF, да и из-за самой формы напряжения в обмотках.
Так что предпочтительнее детектирование перехода через ноль при PWM_ON.
Напряжение, измеренное АЦП нужно сравнивать с половиной напряжения питания силовых каскадов.
Почитайтеапнот от ATMel. Я, к сожалению не могу сходу вспомнить название, но помню, что там используют ATMega48.