我正在为微控制器编写一个音调发生器程序。
我使用硬件定时器来触发中断并检查是否需要在给定音符的特定时刻将信号设置为高或低。
我使用的硬件非常有限,所以我运行计时器越慢,我做其他事情的时间就越多(串行通信,加载下一个要生成的音符等)。
我需要找到我应该运行计时器以获得最佳结果的频率,即生成一个足够准确的频率并且仍然有时间计算其他内容。
为了实现这一点,我需要找到我需要播放的所有频率的近似值(在某个百分比值内,因为频率越高,人耳注意到错误的值越不精确)LCM:该值将是运行硬件计时器的频率。
是否有足够简单的算法来计算这样的数字?(编辑,我将澄清“足够简单”:足够快,可以在 t << 1 秒内运行。在 8 位 AVR 微控制器上运行不到 50 个值,最坏的情况下可以在几十行中实现。)