比如一个中音DO(523Hz)周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系式是: N=fi÷2÷fr N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T=65536-N=65536-fi÷2÷fr
那么问题来了,那个65536是什么,怎么来的?还有不是每计数956次就反向输出吗,那这个计数初值又是拿来干什么的?望大神答疑解惑
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
如果定时器从 0 计数到 2^16 (65536 -> 0),共耗时 2^16 = 65536 μs。
如果定时器从 N 计数到 2^16 (65536 -> N),共耗时 2^16 - N = 65536 - N μs。
如需产生特定周期 T 的信号,则须每隔 T/2 产生一次中断,因为一个周期里有两次信号翻转的动作。
所以 T / 2 = 65536 - N,N = 65536 - T / 2
T = 1912 μs,N = 65536 - T / 2 = 64580
定时器从 64580 计数到 65536 (此时定时器产生中断,并把64580重新赋值给计数器 — 重装载) 共耗时 65536 - 64580 = 956 μs (半周期时间)。
【注】
重装载如果是由硬件完成,则这个过程不耗用机器时间;如果是由软件完成,则需耗用 C 个机器周期。而 N 值也需根据这个时间做相应调整。
假设 C 个机器周期对应 10 μs,则 N = 64580 + 10 = 64590。
一周热门 更多>