○ カウンタ/タイマ割り込み
8ビット(TIMER0)と16ビット(TIMER1)の2種類のタイマ・カウンタがある。
それぞれ独立に内部クロック(1,8,64,256,1024の分周が可能)と外部入力のカウントができる。
○ TIMER0でPWM(Pulse Width Modulation: パルス幅変調)動作
PWMとは、方形波一周期内のH/Lの時間比率(デューティー比)を変えることで出力電圧の時間平均を変化させる制御法
1. PWM出力はOC0AはPB2、OC0BはPD5 -> PB2, PD5 を出力に設定
2. TCCR0AレジスタのWGM01(Bit1),WGM00(Bit0) 及び TCCR0BレジスタのWGM02(Bit3) でPWMの動作を選択
WGM02 WGM01 WGM00 動作
0 0
0 標準動作
0 0
1 8bit 位相基準PWM動作
0 1
0 比較一致タイマ/カウンタ クリア(CTC)動作
0 1
1 8bit 高速PWM動作
1 0
0 (予約)
1 0
1 位相基準PWM動作
1 1
0 (予約)
1 1
1 高速PWM動作
3. コンペアレジスタOCR0A及び(または)OCR0Bとタイマ/カウンタTCNT0を比較してPWM出力
4. TCCR0AレジスタのCOM0A1(Bit7), COM0A0(Bit6), COM0B1(Bit5), COM0B0(Bit4)でPWMの出力を選択
(1)位相基準PWM動作の場合
COM0x1 COM0x0 比較A出力動作 比較B出力
0 0 標準動作 標準動作
0 1 WGM02=0:標準動作
WGM02=1:比較一致でトグル出力
1 0
カウントアップ時の一致でクリア、カウントダウン時の一致でセット
1 1 カウントアップ時の一致でセット、カウントダウン時の一致でクリア
(2)高速PWM動作の場合
COM0x1 COM0x0 比較A出力動作 比較B出力
0 0 標準動作 標準動作
0 1 WGM02=0:標準動作
WGM02=1:比較一致でトグル出力
1 0 一致でクリア 一致でクリア
1 1 一致でセット 一致でセット
(3)非PWM動作の場合
COM0x1 COM0x0 比較A・B出力動作 カウンタ・タイマ
0 0 標準動作
0 1 比較一致でトグル出力 00
1 0 一致でクリア 00
1 1 一致でセット 00
[ 例題 ] PD0の入力により
PD6に接続した黄色LEDを明(PD0=1)/暗(PD0=0)
PD5に接続した赤色LEDを暗(PD0=1)/明(PD0=0)
と切り替えて点灯する。
プログラム T0PWM.asm
回路図
[ 課題 ]