タイマーについて †
AVRマイコンではタイマーのカウントアップ(orダウン)を使って割り込みや出力を行うことができます。
タイマーはタイマ1,2,3の種類がありそれぞれの種類にA,Bというチャンネルがまた2つづつあります。
つまりレジスタは3つですがそれぞれに2つ比較できるようになっています。
タイマ1は8bit、タイマ2は16bit、タイマ3は8bitでシステムクロックと非同期にカウント可能です。
またここではAVRマイコンをATmega328Pとして解説していきます。
大まかな説明として下の画像見てください。
&ref(): File not found: "gazou1.jpg" at page "タイマー・PWM";
このようにタイマーは定期的に何かをしたい時に使うのに適しています。
レジスタについては下のページにまとめました。これからの説明は下のページを別タブで開くなどして御覧ください。
タイマーに関係するレジスタ
まずタイマーには4つの動作があります。
1.標準動作(TCCR0A,TCCR0BのWGMが000) †
一番単純でタイマーをTCCRAのCSで設定したタイミングでカウントアップしていきます。
2.比較一致タイマ/カウンタ解除動作(WGMが010) †
比較レジスタOCR0Aがカウントする最大値となりそこまでいくと0に戻ります。
3.高速PWM動作(WGMが011or111) †
&ref(): File not found: "gazou2.jpg" at page "タイマー・PWM";
4.位相基準PWM動作 †
もう画像貼るのだるいよ(´Д`)
データシート見てね。
3の高速PWM動作の上のカウントの仕方が始めはカウントアップで最大までいったらカウントダウンするよ
おおまかな流れ †
TCCR0Aを設定
↓
TCCR0Bを設定
↓
割り込みをする場合はTIMSK0を設定
プログラム中
OCR0x(比較するレジスタ)を変更可
Sample3.1 †