網路城邦
上一篇 回創作列表 下一篇   字體:
arduino uno mega 衝突 conflict analogWrite PWM Servo tone timer
2019/12/18 15:33:51瀏覽181|回應0|推薦0
arduino uno mega  衝突 conflict analogWrite PWM Servo tone timer



UNO有3組timer, 應用之一, 產生6組analogWrite/PWM

tmr#0

pwm#5

pwm#6

f=16M/64/256=976.6Hz


tmr#1

pwm#9

pwm#10

f=490hz


tmr#2

pwm#3

pwm#11

f=490hz


timer的其它應用 

tmr#0

delay()/milims()


tmr#1

Servo()


tmr#2

tone()


問題來了, 

analogWrite會與servo/tone起沖突


狀況1:

若使用

analogWrite#9

analogWrite#10

再用Servo(any pin), PIN#9及PIN#10的PWM輸出會不見.

因為都是timer1


狀況2:

若使用

analogWrite#3

analogWrite#11

再用tone(any pin), PIN#3及PIN#11的PWM輸出會不見.

因為都是timer2


狀況3:

理論上,6組analogWrite/PWM,

都可以改timer#0/#1/#2的reg而變變頻率,

但是可能會影響對應的功能

tmr#0

delay()/milims()


tmr#1

Servo()


tmr#2

tone()



arduino mega timer/tone/analogWrite/PWM/Servo


Mega有6組timer, 應用之一, 產生13組analogWrite/PWM


tmr0

PWM#4 

PWM#13

f=16M/64/256=976.6Hz


tmr1

PWM#11 

PWM#12

f=490hz


tmr2

PWM#9 

PWM#10

f=490hz


tmr3

PWM#2 

PWM#3 

PWM#5 

f=490hz


tmr4

PWM#6 

PWM#7 

PWM#8

f=490hz


tmr5

PWM#44 

PWM#45 

PWM#46

f=490hz


//---

也有和UNO一樣的問題


狀況1:

若使用

analogWrite#44

analogWrite#45

analogWrite#46

再用Servo(any pin), PIN#44, PIN#45及PIN#46的PWM輸出會不見.

因為都是timer5


狀況2:

若使用

analogWrite#9

analogWrite#10

再用tone(any pin), PIN#9及PIN#10的PWM輸出會不見.

因為都是timer2

( 知識學習其他 )
回應 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=greatcat&aid=131298834