「ATmega328でのタイマとPWMの使用方法」の版間の差分

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

編集の要約なし
文字列「</source>」を「</syntaxhighlight>」に置換
 
(同じ利用者による、間の4版が非表示)
81行目: 81行目:
| ピン出力 || OCR0A<br>OCR0B || OCR1A<br>OCR1B || OCR2A<br>OCR2B
| ピン出力 || OCR0A<br>OCR0B || OCR1A<br>OCR1B || OCR2A<br>OCR2B
|-
|-
| ピン名 || PD6(OCR0A)<br>PD5(OCR0B) || PB1(OCR1A)<br>PB2(OCR1A) || PB3(OCR2A)<br>PD3(OCR2A)
| ピン名 || PD6(OCR0A)<br>PD5(OCR0B) || PB1(OCR1A)<br>PB2(OCR1B) || PB3(OCR2A)<br>PD3(OCR2B)
|}
|}
</center>
</center>
105行目: 105行目:
|-
|-
|  
|  
! colspan="2" | PWM出力方法(コンペアマッチA)<br>出力ピン : OCR0A
! colspan="2" | PWM出力方法(コンペアマッチA)<br>出力ピン : OCR0A(PD6)
! colspan="2" | PWM出力方法(コンペアマッチB)<br>出力ピン : OCR0B
! colspan="2" | PWM出力方法(コンペアマッチB)<br>出力ピン : OCR0B(PD5)
! 設定なし
! 設定なし
! 設定なし
! 設定なし
159行目: 159行目:
! colspan="5" | WGMの役割 タイマモード設定
! colspan="5" | WGMの役割 タイマモード設定
|-
|-
! WGM02 !! WGM01 !! QGM00 !! 動作モード !! TOP
! WGM02 !! WGM01 !! WGM00 !! 動作モード !! TOP
|-
|-
| 0 || 0 || 0 || 標準 || 0xFF
| 0 || 0 || 0 || 標準 || 0xFF
167行目: 167行目:
| 0 || 0 || 1 || 位相基準PWM || 0xFF
| 0 || 0 || 1 || 位相基準PWM || 0xFF
|-
|-
| 1 || 0 || 1 || 位相基準PWM || OCRnA(nは0または1)
| 1 || 0 || 1 || 位相基準PWM || OCR0A
|-
|-
| 0 || 1 || 0 || CTC || OCRnA(nは0または1)
| 0 || 1 || 0 || CTC || OCR0A
|-
|-
| 1 || 1 || 0 || 予約 || -
| 1 || 1 || 0 || 予約 || -
175行目: 175行目:
| 0 || 1 || 1 || 高速PWM || 0xFF
| 0 || 1 || 1 || 高速PWM || 0xFF
|-
|-
| 1 || 1 || 1 || 高速PWM || OCRnA(nは0または1)
| 1 || 1 || 1 || 高速PWM || OCR0A
|}
|}
</center>
</center>
222行目: 222行目:
|-
|-
|  
|  
! colspan="2" | PWM出力方法<br>(コンペアマッチA)<br>出力ピン : OCR1A
! colspan="2" | PWM出力方法<br>(コンペアマッチA)<br>出力ピン : OCR1A(PB1)
! colspan="2" | PWM出力方法<br>(コンペアマッチB)<br>出力ピン : OCR1B
! colspan="2" | PWM出力方法<br>(コンペアマッチB)<br>出力ピン : OCR1B(PB2)
! 設定なし
! 設定なし
! 設定なし
! 設定なし
251行目: 251行目:
<center>
<center>
{| class="wikitable"
{| class="wikitable"
! colspan="9" | TCCR1B タイマ0設定レジスタ
! colspan="9" | TCCR1B タイマ1設定レジスタ
|-
|-
|  
|  
278行目: 278行目:
! colspan="6" | WGMの役割 タイマモード設定
! colspan="6" | WGMの役割 タイマモード設定
|-
|-
! WGM13 !! WGM12 !! WGM11 !! QGM10 !! 動作モード !! TOP
! WGM13 !! WGM12 !! WGM11 !! WGM10 !! 動作モード !! TOP
|-
|-
| 0 || 0 || 0 || 0 || 標準 || 0xFFFF
| 0 || 0 || 0 || 0 || 標準 || 0xFFFF
487行目: 487行目:
なお、PORTB = 0b00000001とすることで、PB0のプルアップが有効になるので、プルアップ抵抗を付ける必要はない。<br>
なお、PORTB = 0b00000001とすることで、PB0のプルアップが有効になるので、プルアップ抵抗を付ける必要はない。<br>
<br>
<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  // タイマ0 : 8bit  : 0 -  255
  // タイマ0 : 8bit  : 0 -  255
  // タイマ1 : 16bit : 0 - 65535
  // タイマ1 : 16bit : 0 - 65535
553行目: 553行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
===== PWMの設定 =====
===== PWMの設定 =====
580行目: 580行目:
タイマ割り込みでデューティ比を変化せるプログラムを以下に記述する。<br>
タイマ割り込みでデューティ比を変化せるプログラムを以下に記述する。<br>
PWMの周期を2048[us]、12.5[ms]ごとに割り込みを発生させて、デューティ比を0.78と0.04に切り替える。<br>
PWMの周期を2048[us]、12.5[ms]ごとに割り込みを発生させて、デューティ比を0.78と0.04に切り替える。<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  #include <avr/io.h>
  #include <avr/io.h>
  #include <util/delay.h>
  #include <util/delay.h>
633行目: 633行目:
     }
     }
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:AVR]]
[[カテゴリ:AVR]]