该公式似乎是volt * 5.9-6.6 = mhz(在1.8v和4.5v之间有效),因此在3.3v时,该值为12.8mhz。请注意,如果您以12.8MHz的频率运行,则任何低于3.3v的电压降都可能引起问题(并且也很难诊断!),或者您可能会逃脱它。
但是,Arduino Atmega328p芯片的“欠压”检测设置为4.3v-低于此电压时,芯片都会关闭。您可以让ISP(AKA ICSP)更换保险丝-转到http://www.engbedded.com/fusecalc/确定要设置的保险丝。您还可以使用ISP读取当前的保险丝,或者在没有Arduino板的情况下对芯片进行重新编程-我所有的项目都有6针接头。如果这样做,则在使用Arduino板进行重新编程之前,您必须“刻录Bootloader”(在工具菜单中)。请注意,仍然可以通过Arduino IDE进行编程。
另外,如果您想“变轻”(并拥有ISP),则可以更改保险丝以使用内部8MHz时钟-这样也可以释放2个额外的引脚!但是请注意,内部时钟每天可能漂移1.2小时(= 5%),而典型的石英晶体每天可能漂移1.7秒(=百万分之20)。如果您不使用它进行计时,则可能没有关系。
您需要更改代码的时序,您需要添加带有正确设置的芯片/时钟速度等的boards.txt文件-您可以从开发板条目中复制设置,更改名称并更改设置“ build.f_cpu”;重新启动(或启动)您的Arduino IDE,转到“工具”->“板”,然后选择添加的板。
您可以将芯片移到板上,也可以在板上重新编程(注意,在Tools-> Board中选择的板是FINAL板,而不是编程板)。小心插入/拔出插头-最终,您将弯曲插针!另外,您也可以使用ISP(ICSP),如上文所述-非常推荐。如果芯片为出厂默认设置,则ISP编程也将起作用,只要它具有工作时钟即可。
芯片使用多少功率在很大程度上取决于您对芯片的处理方式-不仅包括时钟速度,时钟源等,还包括睡眠模式。如果您睡了很多时间,则运行速度快时比运行速度慢时消耗的时间少(如果几乎所有时间都处于睡眠状态),则应该按时钟周期而不是按秒计算功耗-如果时钟速度是时钟的一半,并且半电流,则每条指令消耗相同的电流。由于剩下的时间都花在睡眠上,因此您没有任何好处。请参阅http://www.gammon.com.au/power,以获取有关电源使用情况的很好分类,有关如何节省电源的提示等。
如果您将时钟减慢太多,串行和i2c可能会变得不可靠(除非您减慢速度),但我希望在此之前可以降到1MHz,这是一个1MHz的芯片尝试执行9600bps的问题每传输的数据位有104条指令。i2c的运行频率为100khz,因此每位(1mhz)可获得10条指令-可能会推动它。8MHz应该可以了。测试,测试,测试。
更新:欠压检测有3种可能的设置-AtMega328p有3种可能的值:disabled,1.8v,2.7v和4.3v。(以上)我给人的印象是Arduino通常设置为4.3v。显然不是这种情况(请参阅下面的评论)。我记得在某个地方看到过掉电检测。如果您的arduino重置,尤其是在给电池(运行的电动机,多个LED等)施加更大的负载时,请记住这一点。