所以我注意到我的中国Arduino Uno有一个12 MHz的晶体而不是原来的16Mhz。
我做了计算,结果是四分之一毫秒的差异。
我的问题:
答案 0 :(得分:3)
降低的时钟速度将影响使用定时器的任何内容,除非可以更改代码以适应较慢的时钟。延迟,毫秒(),明确编码的定时器中断等等。必须记住,你每秒会得到更少的总指令,因此在16MHz时几乎“不适合”的快速中断可能在时钟周期中根本不“适合”可在12MHz。
特别是业余级伺服系统对时序敏感......它们依赖于每20毫秒左右0.5-2.0毫秒范围内的脉冲。因此,如果您的项目包含许多业余爱好项目所涉及的伺服系统,那么您将需要特别了解时间。
在gcc-c编程中,#define F_CPU = 12000000
指令会提醒编译器/预处理器计算12 MHz时钟的延迟。您的工具集可能会有所不同
答案 1 :(得分:1)
12MHz晶振不是Arduino时钟源,它用于这些克隆板上的USB芯片(CH340)。 Arduino通常由一个微小的谐振器(可能在C5和C6之间)以16MHz的频率计时。您无需进行任何调整。