Met*_*lov 2 embedded microcontroller
也许这是一个愚蠢的问题:
我有内部 20 MHz 振荡器、16 位定时器和预分频器(1、2、4、8、16、32、64、128),我想产生 1 毫秒的延迟。我知道怎么做 - (20 000 000 / 1) / 1000 = 20 000 -> 将此值放入 16 位寄存器,它就可以工作了。
使用预分频器 2 和 4,我得到相同的结果 1ms - (20 000 000 / 2) / 1000 = 10 000 和 (20 000 000 / 4) / 1000 = 5 000
我的问题是如何确定使用哪个预分频器?也许,我必须选择预分频器 4,因为这个值 (5000) 更接近 0,我的计时器从 0 开始计数到 5000。如果我选择 10 000,计时器将计数 2 x 5000。
先感谢您 !
当计数器在所需时间段内不够大时,您可以使用更高的预分频器。例如,如果您想要 10 毫秒的周期,则必须使用至少为4的预分频器才能获得 50000 的重新加载值。
导致重新加载小于 2 16的最小预分频器是您通常的目标。这为您提供了尽可能高的计数器分辨率,这对您将其用于 PWM 或输入捕获很有用。另一方面,如果您只是使用重新加载中断,这并不重要。
如果您需要的周期不是完全可以实现的,因为 in 不是时钟周期的精确倍数,那么使用较低的预分频器将最大限度地减少误差。
最后,如果你走得太低,你可能无法达到精确的时期。例如,对于您的 1ms 周期,64 的预分频器将导致重新加载 312.5,选择 312 会导致 ~1001.603ms 的周期或 313 的 ~998.403ms。
因此,通常重新加载值尽可能接近 65535 而不是您建议的零,这是您通常的目标。