記事のミス等のお問い合わせはTwitterにてお願いします。AVRマイコンの割り込みのまとめカテゴリ:工作の基礎マイコン前回まででタイマー割り込みの使い方について紹介してきました。今回は割り込みの種類とそれぞれに使うISR関数の引数(マクロ)を紹介したいと思います。(x86)\Atmel\Studio\7.0\packs\atmel\ATmega_DFP\1.2.150\include\avr」のフォルダ内の「iom****.h」(****にはマイコンの型番の数字が入る)のヘッダーファイルの下部に書かれています。それぞれ、「*****_vect」(*****は割り込みごとに異なる)の形で表します。(x86)\Atmel\Studio\7.0\packs\atmel\ATmega_DFP\1.2.150\include\avr\iom328p.h」になります。(Atmega以外のマイコンの場合、上記のパスの「atmel」フォルダに戻り、それぞれのマイコンの種類を選択して同じように進んでください。iotn2313.h」です。))今回は例として「atmega328P」の割り込みの種類とマクロ名を紹介します。外部割込み1INT0_vect外部割込み2INT1_vectピン変化割り込み0群PCINT0_vectピン変化割り込み1群PCINT1_vectピン変化割り込み2群PCINT2_vect以上の2種類(タイマー、外部)の割り込みがマイコンの割り込みの代名詞ともいえるよく使われる割り込みとなっています。)のP50~53にかけて書かれています。軽くまとめておくと以下のようになります。外部割込みEICRAレジスタ:割り込みの条件(ピンの状態がどのように変化した時に割り込みを行うか)の設定EIMSKレジスタ:外部割込みを許可するレジスタ外部割込みは以上の2つのレジスタを設定して使います。EIFRレジスタは通常使いません。変化割り込みPCICRレジスタ:ピン変化割り込みを許可するレジスタPCMSK0レジスタ:ピン変化割り込み0群のうち、変化を読み取るピンを選択するレジスタPCMSK1レジスタ:ピン変化割り込み1群のうち、変化を読み取るピンを選択するレジスタPCMSK2レジスタ:ピン変化割り込み2群のうち、変化を読み取るピンを選択するレジスタピン変化割り込みは以上の4つのレジスタを設定して使います。PCIFRレジスタは通常使いません。続いて、通信系の割り込みを紹介します。通信系割り込み割り込みの種類マクロ名シリアル通信受信完了割り込みUSART_RX_vectシリアル通信送信完了割り込みUSART_TX_vectシリアル通信データレジスタ空割り込みUSART_UDRE_vectSPI通信転送完了割り込みSPI_STC_vectTWI(I2C)動作完了割り込みTWI_vect以上が通信系の割り込みとなります。「データレジスタ空割り込み」を除いて、通信の動作が完了し次のデータを送受信できる状態になった時がトリガーとなります。この割り込みを使うことでデータを受信したら、そのデータを読み込むといった動作が可能になります。次回の記事でシリアル通信の使い方について紹介します。その他割り込み割り込みの種類マクロ名A/D変換完了割り込みADC_vectアナログ比較器出力遷移ANALOG_COMP_vectウォッチドッグ計時完了割り込みWDT_vectEEPROM操作可EE_READY_vectSPM命令操作可SPM_READY_vect最後のその他の割り込みは使う機会はあまりないと思います。使うとしてもA/D変換完了割り込みぐらいだと思います。以上がatmega328Pにおける割り込みの種類とそれに対応するマクロです。マイコンの種類が変わっても、同様に考えれば割り込み処理は使えると思います。次回はatmega328Pにおけるシリアル通信の使い方を紹介します。