请问电子琴的发声原理

2019-07-15 17:03发布

比如一个中音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次就反向输出吗,那这个计数初值又是拿来干什么的?望大神答疑解惑
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
b2894lxlx
1楼-- · 2019-07-15 18:51
求解啊!!!!
Jack315
2楼-- · 2019-07-15 21:02
设定时器为 16 位,其时钟频率为 1 μs,计数溢出时产生中断。

如果定时器从 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。
wyz383612
3楼-- · 2019-07-16 01:18
 精彩回答 2  元偷偷看……

一周热门 更多>