字體:小 中 大 | |
|
|
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
|
|
( 知識學習|其他 ) |