Contents ...
udn網路城邦
arduino uno mega 衝突 conflict analogWrite PWM Servo tone timer
2019/12/18 15:33
瀏覽249
迴響0
推薦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

全站分類:知識學習 其他
自訂分類:_arduino
上一則: Install ESP32 arduino with ubuntu 18
下一則: arduino mega download erase

限會員,要發表迴響,請先登入