📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == ATmega328の割り込みの使用方法を記載する。 割り込みには、シリアル割り込みやピン入力が変化した時の割り込み等が…」 |
編集の要約なし |
||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
ATmega328の割り込みの使用方法を記載する。 | ATmega328の割り込みの使用方法を記載する。<br> | ||
割り込みには、シリアル割り込みやピン入力が変化した時の割り込み等がある。 | 割り込みには、シリアル割り込みやピン入力が変化した時の割り込み等がある。<br> | ||
ここでは、タイマ割り込みについて記載する。 | ここでは、タイマ割り込みについて記載する。<br> | ||
<br><br> | |||
== 割り込みの種類 == | == 割り込みの種類 == | ||
| 49行目: | 49行目: | ||
</center> | </center> | ||
<br> | <br> | ||
割り込みのタイミングは、ピン入力の変化やタイマで指定した時間の経過、シリアル通信イベント等がある。 | 割り込みのタイミングは、ピン入力の変化やタイマで指定した時間の経過、シリアル通信イベント等がある。<br> | ||
(上表に記載のない割り込みもある) | (上表に記載のない割り込みもある)<br> | ||
使用したい割り込みのシンボルは、ISR()関数の引数に指定して使用する。 | 使用したい割り込みのシンボルは、ISR()関数の引数に指定して使用する。<br> | ||
<br><br> | <br><br> | ||
== 割り込み処理の基本 == | == 割り込み処理の基本 == | ||
割り込みを許可する命令は、sei命令である。 | 割り込みを許可する命令は、sei命令である。<br> | ||
割り込み関数(ISR)からmain関数へ戻る命令は、ret命令である。 | 割り込み関数(ISR)からmain関数へ戻る命令は、ret命令である。<br> | ||
<br> | |||
main関数から、割り込み関数(ISR)に処理が移る時、一旦、割り込みが禁止される。 | main関数から、割り込み関数(ISR)に処理が移る時、一旦、割り込みが禁止される。<br> | ||
割り込み処理が終わると、割り込みをまた許可しないといけないため、ret命令とsei命令を組み合わせた、reti命令がある。 | 割り込み処理が終わると、割り込みをまた許可しないといけないため、ret命令とsei命令を組み合わせた、reti命令がある。<br> | ||
reti命令で割り込み処理が終わる。 | reti命令で割り込み処理が終わる。<br> | ||
<br> | |||
また、割り込みを禁止にするには、cil命令を使用する。 | また、割り込みを禁止にするには、cil命令を使用する。<br> | ||
<br> | |||
以下に割り込み処理のサンプルコードを記述する。 | 以下に割り込み処理のサンプルコードを記述する。<br> | ||
<source lang="c++"> | <source lang="c++"> | ||
#include <avr/io.h> | #include <avr/io.h> | ||
| 95行目: | 95行目: | ||
== タイマ割り込みの使用方法 == | == タイマ割り込みの使用方法 == | ||
タイマの割り込みを使用するためのレジスタ設定およびプログラムを記述する。 | タイマの割り込みを使用するためのレジスタ設定およびプログラムを記述する。<br> | ||
タイマに関しての記事は、[[ATmega328でのタイマとPWMの使用方法]]を参照すること。<br> | |||
<br> | |||
===== タイマ0の割り込み ===== | ===== タイマ0の割り込み ===== | ||
<center> | <center> | ||