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 タイマカウンタ部ブロック図のダウンロード
←クリックすると拡大します。
クロックはセラロックの20MHzを接続していますので、他のクロックを使用する際は、使用する周波数に読み替えて
お読みください。
パソコンとのI/Fはシリアル通信を使用しています。
RS232Cドライバーを取り付けていますが、FT232RLでも良いです。
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 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を入力して送信ボタンを押します。
pwm確認君 プログラムのダウンロード
注意:Microsoft.Net framework をインストールしてください。
2313pwm.zip プログラムのダウンロード
注意:本F/Wは、20MHzのセラロックを実装し、右記のヒューズビットを書き込んでください。Lo:xx Hi:xx Ex xx
2010/04/26 第1版