Question: I'm designing a BLDC driver (sensorless) using the the KL04 microcontroller. I am implementing a zero cross detection for commutation of the states. The flow I am implementing is:

1. duty cycly = 30%.
2. the bldc looks for '0' crossing and finds it.
3. commutations done at that time interval after that. its then an endless loop.

The above steps are fine and I am detecting '0' crossing properly. I am using a BLDC with no load. Please note that I am hardcoding the software to make the PWM duty-cycle to be 30%.

Now I just attach a small load, a blade/rotor for the motor. What happens next is confusing.

The software detects the '0' crossing and then crashes. The oscilloscope wave is shown below

!['0' cross detection and then crashing](https://i.stack.imgur.com/8F4vx.jpg)

It shows a correct '0' crossing. this happens at a small yellow spike. but then after sometime it crashes. Even the pwm is not shown in that channel.

Without the load/blades my motor takes about 1 amp and with the rotor it takes about 1.2 amps. Hence, we know a load is there.

Can any one explain where I am making some errors please?

Answer: 
If you think of an induction motor as a transformer you will notice that the primary coils are in the stator and the secondary coils are in the rotor.

The secondary coils are shorted out so that current can flow within those coils by the induced current when an AC current is applied to the primary coils in the stator. This current in the secondary coils produces a magnetic field. Because of the inductance of the secondary coil, this magnetic field resists change.

When you apply a force slowing down the rotor, due to this resistance of the magnetic field to change, the magnetic field will lag behind and therefor the magnetic field in the stator will pull the magnetic field in the rotor producing a force against the force trying to slow down the rotor.

If you attempt to speed up the rotor, the exact opposite will occur. The magnetic field will then lead the magnetic field in the stator. this will induce a current in the stator which is in the direction that the current in the stator already is going. The harder you push the rotor, the more this current will be. This current results in the generation of an alternating current.
My answer is a bit different. The reason a motor can drive something is that the two magnets on each pole are slightly "to one side" so rotation with torque results. It you force the two magnets to be in the opposite relationship, the driven leading the driver, the magnetic field is pushed in a way that ramps the voltage up as the two poles come nearer to being centered over one another. 
Sort of like a spark coil. 

Because the device is synchronous, that condition is never reached. The two are held in relative position by the magnetic opposition of the two like poles. 

Power fed into the stator tries to bring the armature up to speed. At synchronous speed, no work can be done. Spinning the armature faster causes the stator to try to slow the armature back to synchronous speed. It does that be producing power and shoving it into the grid which is running at a lower voltage. The grid is a large sink. It takes work to maintain this condition so it is a 'generator'. 

You can inject DC into the stator and generate power which is dumped as DC into a resistor. This is how AC motors can be stopped quickly. A radial arm saw motor is the most accessible implementation of this. It you disconnect the resistor it slows down like a normal motor instead of very quickly. After turning off the motor it coasts then the resistor cuts in with dramatic effect. It generates power which is used to oppose it's own rotation.