计算 PWM 解码的占空比需要进行可恶的除法。
DutyCycle =((unsigned long) ON_PERIOD* 100/周期);
这将完全有效(只要 DutyCycle 无论如何都是 USHORT)、但需要大约500个周期来解决。 在进行一些 google 运算后、整数除法算法几乎不会短缺、因此德州仪器在 SLAA024中提供了32/16除法汇编器代码、并且同一个长除法算法在许多其他地方也是如此。 大约需要230个周期。 还有一些近似除法似乎更加巧妙、但我不确定它们与 MSP430的配合效果如何。
现在、由于标称值和分母都不是常量、因此我们无法使用大多数快速除法方法。 我们*确实*知道结果介于1到99之间,这应该是有用的。
除了重新发明车轮之外、是否有一种快速算法来完成这个十年前有人已经努力完成的特定工作?