📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
編集の要約なし |
細 文字列「</source>」を「</syntaxhighlight>」に置換 |
||
| (同じ利用者による、間の2版が非表示) | |||
| 65行目: | 65行目: | ||
<br> | <br> | ||
以下に割り込み処理のサンプルコードを記述する。<br> | 以下に割り込み処理のサンプルコードを記述する。<br> | ||
< | <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; | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 115行目: | 115行目: | ||
<br> | <br> | ||
以下に、タイマ0でコンペアマッチAで割り込み処理を行うサンプルコードを記述する。<br> | 以下に、タイマ0でコンペアマッチAで割り込み処理を行うサンプルコードを記述する。<br> | ||
< | <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; | ||
} | } | ||
</ | </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]] | ||