arduinoでtimer0関係のピン(digital5とdigital6ピン)
からPWMでアナログ出力し、LEDを光らせてみたら
出力値=0(Duty比=0)でもLEDが薄明るく
光っちゃってた件について。
arduinoの公式ページになんとなくそれっぽいことが
かかれている感じ。
http://arduino.cc/en/Reference/AnalogWrite
このページの「Notes and Known Issues」のところに、
ピン5と6は想定より高いDutyCycleで
出力される。millis() や delay()関数の影響で、
これらの関数はPWM出力と同じ内部タイマーを
使っている。
みたいな事書かれてます。設定値よりも少しパルス幅が
広くなっちゃうことがあるよ、ということのようです。
とすると、原因はarduinoの内部処理に起因するって
いう理解でいいんでしょうか。
それにしても、なぜそれらの関数の処理がPWMの
出力値に影響するんだろう?
PWMって、設定値とハードウェアカウンタの値を
比較して、その大小で自動的に0か1を出力してる
だけのはず。
それならソフトウェア処理の影響は無いと思うんだけど
なぁ。タイマー割り込みがなんか悪さしてるのかなぁ?
あまり関係無さそうに思うんだけどなぁ。
時間が有る時にでもまた調べてみましょうか…
|
|
|