pwm with delay

It doesn't take long at all to "rip" through the loop.

That's exactly why nothing happens in the loop. The first pass through the loop, enough time has elapsed to see some output. On no other pass through loop has enough time passed for the if test to evaluate to true.

You don't want to loop when you aren't delaying.