○ カウンタ/タイマ割り込み

 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

 回路図




[ 課題 ]