「ATmega328の割り込みの使用方法」の版間の差分

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

編集の要約なし
文字列「</source>」を「</syntaxhighlight>」に置換
 
(同じ利用者による、間の2版が非表示)
65行目: 65行目:
<br>
<br>
以下に割り込み処理のサンプルコードを記述する。<br>
以下に割り込み処理のサンプルコードを記述する。<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  #include <avr/io.h>
  #include <avr/io.h>
  #include <avr/interrupt.h>  // 割り込み処理
  #include <avr/interrupt.h>  // 割り込み処理
91行目: 91行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


115行目: 115行目:
<br>
<br>
以下に、タイマ0でコンペアマッチAで割り込み処理を行うサンプルコードを記述する。<br>
以下に、タイマ0でコンペアマッチAで割り込み処理を行うサンプルコードを記述する。<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  #include <avr/io.h>
  #include <avr/io.h>
  #include <avr/interrupt.h>  // 割り込み処理を行うため
  #include <avr/interrupt.h>  // 割り込み処理を行うため
148行目: 148行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
===== タイマ1の割り込み =====
===== タイマ1の割り込み =====
 
<center>
{| class="wikitable"
! colspan = "9" | タイマ1割り込みレジスタ TIMSK1
|-
! ビット !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0
|-
! レジスタ名
| - || - || ICIE1 || - || - || OCIE1B || OCIE1A || TOIE1
|}
</center>
* ICIE1  : タイマ1の捕獲割り込み(タイマ(カウンタ)の値がICR1に達した時の割り込み)
* OCIE1B : タイマ1のコンペアマッチBの割り込み(比較一致Bの割り込み)
* OCIE1A : タイマ1のコンペアマッチAの割り込み(比較一致Aの割り込み)
* TOIE1  : タイマ1のオーバーフロー割り込み
<br>
以下に、タイマ1で捕獲割り込みをするサンプルコードを記述する。<br>
<syntaxhighlight lang="c++">
#include <avr/io.h>
#include <avr/interrupt.h>  // 割り込み処理を行うため
// タイマ1での捕獲割り込み関数(ICR1に達すると割り込み)
ISR(TIMER1_CAPT_vect)
{
    // 処理
}
int main()
{
    // タイマ1 制御レジスタA
    TCCR1A = 0b00000010;  // 高速PWMモード(TOP値 : ICR1)
    // タイマ0 制御レジスタB
    TCCR1B = 0b00011001;  // 高速PWMモードで分周なし
    // タイマ0 割り込み設定
    TIMSK1 = 0b00100000;  // 捕獲割り込みを設定
    // 割り込み発生する時間の設定
    ICR1 = 64999;  // 65.0[ms]@1[MHz]
    // ポートの設定
    // 略
    sei();  // 割り込み許可
    while(1)
    {
      // メイン処理
    }
    return 0;  //プログラム終了
}
</syntaxhighlight>
<br>
<br>
===== タイマ2の割り込み =====
===== タイマ2の割り込み =====
 
<center>
{| class="wikitable"
! colspan = "9" | タイマ2割り込みレジスタ TIMSK2
|-
! ビット !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0
|-
! レジスタ名
| - || - || - || - || - || OCIE2B || OCIE2A || TOIE2
|}
</center>
<br>
* OCIE2B : タイマ2のコンペアマッチBの割り込み(比較一致Bの割り込み)
* OCIE2A : タイマ2のコンペアマッチAの割り込み(比較一致Aの割り込み)
* TOIE2  : タイマ2のオーバーフロー割り込み
<br>
タイマ2は、タイマ0と同じ使い方なのでサンプルコードは省略する。<br>
<br><br>
<br><br>


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