|
|

楼主 |
发表于 2013-11-9 07:33:16
|
显示全部楼层
春泥蛋炒饭 发表于 2013-11-9 03:39 
ATMega328(比如UNO)有三个计时器timer 0-2, 一些延时语句比如delay(), millis() micros() 用的是timer0,
...
我用示波器测量了一下,使用pin 5的时候,相同情况下PWM的周期会变小。pin5周期大概是1ms,而pin9的输出大概是2.04ms。使用delay()不会影响pin5的PWM输出,周期什么的都不会改变。
所以,这个问题还是很有疑问啊。
/*查找到的相关信息
当PWM输出与5,6号端口的时候,会产生比预期更高的占空比。原因是PWM输出所使用的内部时钟,millis()与delay()两函数也在使用。所以要注意使用5,6号端口时,空占比要设置的稍微低一些,或者会产生5,6号端口无法输出完全关闭的信号。*/
我看delay的源代码,明明是会设置timer0的,为什么对PWM的输出会没有影响呢?
我的analogWrite是写在setup里面的,只会运行一次,delay是写在loop里面。 |
|