Arduino在20 MHz?


9

我不知道为什么Arduino不能以AVR指定的频率20 MHz运行。现在,以16 MHz运行,我们白白浪费了20%的性能。

我认为将16 MHz谐振器替换为20 MHz类型不会有任何影响,这可能是引导加载程序中波特率的唯一例外。还是在那里?

有人知道为什么Arduino设计人员选择16 MHz吗?


执行此操作时,请不要忘记设置保险丝
portforwardpodcast

1
@portforwardpodcast无需更换保险丝。它们已经设置为“全摆幅外部振荡器”。
Gerben

Answers:


6

没有硬件原因(据我所知),您无法在20 MHz上运行合适的Arduino。但是,您会在软件中遇到微小的时序误差,因为标准的Arduino配置显然在时钟速度为8或16MHz时效果最佳。

我怀疑这主要是出于历史原因。早期的Arduino开发板基于仅可提高至16 MHz的芯片,例如ATmega8。所有芯片都使用相同的配置只会使一切变得更简单,更一致。

这里有有关计时问题的更多信息:http : //forum.arduino.cc/index.php?topic=158223.0#msg_1186708


1
感谢您的回答。您能否详细说明“ 2的次方”?对时钟脉冲进行计数的1秒周期对微控制器没有任何意义,它只知道时钟滴答。而且,16 MHz不是2的精确乘方,必须是16.777216 MHz。
Joris Groosman,2015年

@JorisGroosman抱歉,我没有正确解释。这是关于Arduino核心从时钟滴答计算微秒的方式。这个论坛主题给出了比我更好的解释。
彼得·布鲁姆菲尔德

4

可以,我愿意。

我想这在技术上不再是Arduino。我制作了自己的电路板,更换电路板上的谐振器将需要进行一些精细的焊接,但是绝对有可能。

有一些陷阱:与时间相关的任何事物(例如millis())的运行速度都将比正常情况下快-每秒的millis()速度提高25%。另外,引导程序期望16MHz的速度,因此您将无法以这种速度对其进行重新编程。我购买了一个USBASP编程器-它挂在板子一侧的2x3引脚网格中,让您无需引导加载程序即可对其进行重新编程(这是引导加载程序首先放置的方式!)。为避免出现问题,在20MHz时至少需要4.5伏电压,而在16MHz时则需要3.78伏电压-这意味着电池的耗电速度会更快(3x1.5v电池会很快耗尽),并且如果您有任何电动机或其他耗电设备,电池,即使是新鲜的3节1.5v电池也可能无法工作。

或者,沿完全相反的方向运行,时钟速度越低,所需的电压就越少-对于某些项目,您可能不需要时钟速度-您可以将电压降至4Vhz时的1.8v。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.