今回で PWM シリーズは最後です。 Phase Correct PWM (TOP:0xOCRnA) について見てみましょう。

(1) Fast PWM (TOP:0xFF)
(2) Fast PWM (TOP:OCRnA)
(3) Phase Correct PWM (TOP:0xFF)
(4) Phase Correct PWM (TOP:OCRnA)




今回も 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) をトグル出力に設定します。



タイマーが OCR2A に設定した値になると出力をトグルします。この時 WGM22 を 1 に設定します。


D3(OC2B) は通常出力に設定します




Phased Correct PWM WGM ビットで設定します。




CS ビットで分周率を設定します。今回も 1/64 に設定します。




このモードでのD11(OC2A) の出力周波数は、次の数式で算出できます。

出力周波数 = システムクロック / (4 * 分周率 * [OCR2A + 1])


これらのビットを TCCR2ATCCR2B のレジスタに設定します。




OCR2B に閾値を設定することで、D3(OC2B) の出力にデューティ比を設定することができます。このモードで出力される波形のしくみを示します。



D11(OC2A) は OCR2A でトグルしますので、常にデューティ比は50% です。

スケッチは、OCR2A = 127、OCR2B = 40 を設定してみました。


#include &ltavr/io.h>

void setup() {
pinMode(11, OUTPUT); // OC2A
pinMode( 3, OUTPUT); // OC2B

TCCR2A = bit(COM2A0); // Toggle
TCCR2A |= bit(COM2B1); // None Inverted Mode
TCCR2A |= bit(WGM20);
TCCR2B = bit(WGM22); // Phase correct PWM (OCR2A)
TCCR2B |= bit(CS22); // clock/64

OCR2A = 127;
OCR2B = 40;
}

void loop() {
// put your main code here, to run repeatedly:
}


実際の出力をみてみましょう




D11(OC2A)の出力周波数はほぼ 488Hz ですので期待どおりです。これで ATMega386 のPWM機能はマスターしました。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 編 その1)
http://makers-with-myson.blog.so-net.ne.jp/2016-02-18






Arduino Nano v3.0 compatible (ATMEGA328P) ピンヘッダ実装済み

  • 出版社/メーカー: 梅本有限責任事業組合
  • メディア: エレクトロニクス



Arduino Pro Mini 328 3.3V 8MHz

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス



A-Star 32U4 Mini ULV

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス