SoftPwm implementation;