Arduino Nano の PWM 機能を使ってみた(Phased Correct PWM 編 その1) [Arduino]
今回は Arduino Nano の4種類ある PWM 機能のうち Phase Correct PWM (TOP:0xFF) について見てみます。
(1) Fast PWM (TOP:0xFF)
(2) Fast PWM (TOP:OCRnA)
(3) Phase Correct PWM (TOP:0xFF)
(4) Phase Correct PWM (TOP:0CRnA)
今回も TIMER2 を使います。PWM 機能については、下記サイトを参考にしてください。
Secrets of Arduino PWM
http://www.righto.com/2009/07/secrets-of-arduino-pwm.html
TIMER2 の PWM 出力は D11(OC2A)、D3(OC2B) になります。それぞれの出力を COM2A / COM2B ビットで設定できます。
D11(OC2A) を通常出力に設定します。
D3(OC2B) も通常出力に設定します。
Phase Correct PWM を WGM ビットで設定します。
CS ビットで分周率を設定します。今回も 1/64 に設定します。
このモードでの出力周波数は、次の数式で算出できます。
出力周波数 = システムクロック / (分周率 * 2 * 256)
Phase Correct PWM はタイマーが増加、減少を繰り返すので周波数は分周率のさらに半分になります。
これらのビットを TCCR2A、TCCR2B のレジスタに設定します。
このモードで出力される波形のしくみを下記に示します。
スケッチは OCR2A = 180、OCR2B = 75 を設定してみました。
実際の出力を見てみます。
期待どおりです。出力周波数もだいたい 488Hz です。ここまで来ると PWM の設定にも慣れてきました。さて次はいよいよ最後の Phased Correct PWM (TOP:OCRnA) を確認してみたいと思います。
(^_^)/~
関連記事
Arduino Nano のTimer 機能を使ってみた
http://makers-with-myson.blog.so-net.ne.jp/2016-01-29
Arduino Nano の Counter 機能を使ってみた
http://makers-with-myson.blog.so-net.ne.jp/2016-02-04
Arduino Nano の PWM 機能を使ってみた(FastPWM 編 その1)
http://makers-with-myson.blog.so-net.ne.jp/2016-02-12
Arduino Nano の PWM 機能を使ってみた(FastPWM 編 その2)
http://makers-with-myson.blog.so-net.ne.jp/2016-02-16
Arduino Nano の PWM 機能を使ってみた(Phased Correct PWM 編 その2)
http://makers-with-myson.blog.so-net.ne.jp/2016-02-20
(1) Fast PWM (TOP:0xFF)
(2) Fast PWM (TOP:OCRnA)
(3) Phase Correct PWM (TOP:0xFF)
(4) Phase Correct PWM (TOP:0CRnA)
今回も TIMER2 を使います。PWM 機能については、下記サイトを参考にしてください。
Secrets of Arduino PWM
http://www.righto.com/2009/07/secrets-of-arduino-pwm.html
TIMER2 の PWM 出力は D11(OC2A)、D3(OC2B) になります。それぞれの出力を COM2A / COM2B ビットで設定できます。
D11(OC2A) を通常出力に設定します。
D3(OC2B) も通常出力に設定します。
Phase Correct PWM を WGM ビットで設定します。
CS ビットで分周率を設定します。今回も 1/64 に設定します。
このモードでの出力周波数は、次の数式で算出できます。
出力周波数 = システムクロック / (分周率 * 2 * 256)
Phase Correct PWM はタイマーが増加、減少を繰り返すので周波数は分周率のさらに半分になります。
これらのビットを TCCR2A、TCCR2B のレジスタに設定します。
このモードで出力される波形のしくみを下記に示します。
スケッチは OCR2A = 180、OCR2B = 75 を設定してみました。
#include <avr/io.h> void setup() { pinMode(11, OUTPUT); // OC2A pinMode( 3, OUTPUT); // OC2B TCCR2A = bit(COM2A1); // None Inverted Mode TCCR2A |= bit(COM2B1); // None Inverted Mode TCCR2A |= bit(WGM20); // Phase correct PWM (0xFF) TCCR2B = bit(CS22); // clock/64 OCR2A = 180; OCR2B = 75; } void loop() { // put your main code here, to run repeatedly: }
実際の出力を見てみます。
期待どおりです。出力周波数もだいたい 488Hz です。ここまで来ると PWM の設定にも慣れてきました。さて次はいよいよ最後の Phased Correct PWM (TOP:OCRnA) を確認してみたいと思います。
(^_^)/~
関連記事
Arduino Nano のTimer 機能を使ってみた
http://makers-with-myson.blog.so-net.ne.jp/2016-01-29
Arduino Nano の Counter 機能を使ってみた
http://makers-with-myson.blog.so-net.ne.jp/2016-02-04
Arduino Nano の PWM 機能を使ってみた(FastPWM 編 その1)
http://makers-with-myson.blog.so-net.ne.jp/2016-02-12
Arduino Nano の PWM 機能を使ってみた(FastPWM 編 その2)
http://makers-with-myson.blog.so-net.ne.jp/2016-02-16
Arduino Nano の PWM 機能を使ってみた(Phased Correct PWM 編 その2)
http://makers-with-myson.blog.so-net.ne.jp/2016-02-20
Arduino Nano v3.0 compatible (ATMEGA328P) ピンヘッダ実装済み
- 出版社/メーカー: 梅本有限責任事業組合
- メディア: エレクトロニクス
EasyWordMall Pro Mini モジュール Atmega328 3.3V 8M Arduino用
- 出版社/メーカー: Apple Trees E-commerce co., LT
- メディア: その他
コメント 0