微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请问电子琴的发声原理

请问电子琴的发声原理

时间:10-02 整理:3721RD 点击:
比如一个中音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次就反向输出吗,那这个计数初值又是拿来干什么的?

望大神答疑解惑


求解啊!

设定时器为 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。

65536是振荡器的工作频率,很精密的,而且温度的稳定性要很好。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top