TOPへ戻る

メニュー
■はじめに
 8ビット タイマ/カウンタ0
■PWM確認回路図
■位相基準PWM動作
■比較一致タイマ/カウンタ クリア(CTC)動作
■高速PWM動作
■位相基準PWM動作
■高速PWM動作
 16ビット タイマ/カウンタ1
■16bit 高速PWM動作
■16bit 位相基準PWM動作
■16bit 位相/周波数基準PWM動作

■Windowサンプルプログラム
■ATtiny2313 PWMサンプルプログラム

はじめに
ATtiny2313のPWM機能を使うに至って特に、周波数可変&Duty可変モードの使い方が
ネット上の情報が少ないのでまとめてみた。
解釈が間違ってる場合があるかもしれませんので、そのときは指摘をお願いいたします。
※説明が抜けている機能がありますがその内追記します。

タイマカウンタの部分をまとめてみました。
間違っている可能性もありますので、データブックと比較して使ってください。

■PNG版
←クリックすると拡大します。
←クリックすると拡大します。

■PDF版
tiny2313timer.pdf タイマカウンタ部ブロック図のダウンロード

PWM確認回路図
←クリックすると拡大します。
クロックはセラロックの20MHzを接続していますので、他のクロックを使用する際は、使用する周波数に読み替えて
お読みください。
パソコンとのI/Fはシリアル通信を使用しています。
RS232Cドライバーを取り付けていますが、FT232RLでも良いです。

高速PWM動作

Fast PWM Modeは、OCR0AとOCR0Bを組み合わせることで、周波数・Duty比が可変できるPWM波形を作ることができます。
この機能を使ってスイッチング電源(インバータ・コンバータ)のPWM生成、モータ制御に使用します。

ブロック図

注)OC0Aの出力の解釈があっているか?


pwm確認君を起動して、TCCR0AにA3を入力して送信ボタンを押下、
TCCR0Bに19を入力して、送信ボタンを押下します。
OCR0AとOCR0Bに00を入力して、送信ボタンを入力します。

OC0B 9pinをオシロで確認すると、直流レベルが出力されています。


OCR0A に 01 を入力して、送信ボタンを押します。
10MHzのクロックが確認できます。
CLK源20MHzで、OCR0Aの設定+1 より、20MHz/(1+1)=10MHz
注)この解釈があっているか?


OCR0A に 0A を入力して、送信ボタンを押します。
1.818MHzのクロックが確認できます。
CLK源20MHzで、OCR0Aの設定+1 より、20MHz/(10+1)=1.818MHz
注)この解釈があっているか?


OCR0B に 05 を入力して、送信ボタンを押します。
OCR0Aの設定0Aに対して、OCR0Bに05を設定して、50%のDUTYを設定します。
OCR0B値=Duty比*OCR0A/100
注)この解釈が合っているか?


16bit高速PWM動作


16bit Fast PWM Modeは、OCR1AとOCR1Bを組み合わせることで、周波数・Duty比が可変できるPWM波形を作ることができます。
この機能を使ってスイッチング電源(インバータ・コンバータ)のPWM生成、モータ制御に使用します。

ブロック図

注)OC1Aの出力の解釈が合っているか?


pwm確認君を起動して、TCCR1AにA3を入力して送信ボタンを押下、
TCCR1Bに1Aを入力して、送信ボタンを押下します。
※8分周の設定にしています。

1kHz出力してみます。
20MHz/8/1kHz=2500=0x09c4
0x09c4-1=0xc3
OCR1AHに09を入力して送信、OCR1ALにC3を入力して送信ボタンを押下します。
※16bitレジスタには、H,Lの順番に送信します。


50%のDUTYを設定します。
OCR0B値=Duty比*OCR1A/100
=50*2500/100
=1250=0x04E2
OCR1BHに04 を入力して送信、OCR1BLにE2を入力して送信ボタンを押します。


Windowサンプルプログラム

pwm確認君 プログラムのダウンロード
注意:Microsoft.Net framework をインストールしてください。

ATtiny2313 PWMサンプルプログラム

2313pwm.zip プログラムのダウンロード
注意:本F/Wは、20MHzのセラロックを実装し、右記のヒューズビットを書き込んでください。Lo:xx Hi:xx Ex xx


2010/04/26 第1版