ATmega系統の割込み

特記事項

各種delay関数はループ処理でwaitしているため割込みでは解除されない

delay(int ms)

_delay_us(int us)

割込み禁止:cli()

割り込み許可:sei()

他のさらに優先度の高い割り込みを先に処理したい場合には割り込み処理の中でsei 命令を実行して割り込みを許可できる(多重割込み可能)

INT0,INT1割込み

単独ピンD2,D3の割り込みであり、割り込みのパターンを指定できる

・EIMSKで有効化
bit 7 6 5 4 3 2 1 0
EIMSK INT1 INT0

EIMSKの下位2bit,ビット=1で有効化

・EICRAで割り込み発生パターン指定
bit 7 6 5 4 3 2 1 0
EICRA ISC11 ISC10 ISC01 ISC00

ISC11,ISC10はINT1のISC01,ISC00はINT0の設定

ISC*1 ISC*0 パターン
0 0 Lレベル
0 1 変化
1 0 立ち上がり
1 1 立ち下がり
PCINT割込み

複数のピン変化をまとめた割込みで3グループに分かれている

・PCINT名とPCIグループ名
物理ピン 機能ピン名  ピン名 PCINT名 PCIグループ名
10 crystal2 PB7 PCINT7 PCI0
9 crystal1 PB6 PCINT6
19 D13 PB5 PCINT5
18 D12 PB4 PCINT4
17 D11 PB3 PCINT3
16 D10 PB2 PCINT2
15 D9 PB1 PCINT1
14 D8 PB0 PCINT0
1 reset PC6 PCINT14  PCI1
28 A5 PC5 PCINT13
27 A4 PC4 PCINT12
26 A3 PC3 PCINT11
25 A2 PC2  PCINT10
24 A1 PC1 PCINT9
23 A0 PC0 PCINT8
13 D7 PD7 PCINT23 PCI2
12 D6 PD6 PCINT22
11 D5 PD5 PCINT21
6 D4 PD4 PCINT20
5 D3 PD3 PCINT19
4 D2 PD2 PCINT18
3 D1(TX) PD1 PCINT17
2 D0(RX) PD0 PCINT16
・PCICRで有効化
bit 7 6 5 4 3 2 1 0
PCICR PCIE2 PCIE1 PCIE0

PCIE2,PCIE1,PCIE0がPCI2,PCI1,PCI0に対応しビット=1で有効化

・PCMSKで割込みマスク
bit 7 6 5 4 3 2 1 0
PCMSK2 23 22 21 20 19 18 17 16
PCMSK1 14 13 12 11 10 9 8
PCMSK0 7 6 5 4 3 2 1 0

(注)PCINT[0-23]

ピン名で表すと

bit 7 6 5 4 3 2 1 0
PCMSK2 PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0
PCMSK1 PC6 PC5 PC4 PC3 PC2 PC1 PC0
PCMSK0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
割込みリスト
No. Symbol Name Remarks
0 - リセット 起動アドレス、または初期化ルーチン
1 INT0_vect 外部割り込みピンINT0 1ピンのみなので高速なピン状態変化通知
2 INT1_vect 外部割り込みピンINT1 1ピンのみなので高速なピン状態変化通知
3 PCINT0_vect 汎用ピン変化0 最大8ピンまで集約される
4 PCINT1_vect 汎用ピン変化1 最大8ピンまで集約される
5 PCINT2_vect 汎用ピン変化2  
6 WDT_vect 番犬タイマ 異常処理やハングアップの検出の試みに使われます
7 TIMER2_COMPA_vect タイマ2 比較合致 A PWMでのタイミング取得など
8 TIMER2_COMPB_vect タイマ2 比較合致 B PWMでのタイミング取得など
9 TIMER2_OVF_vect タイマ2 オーバーフロー  
10 TIMER1_CAPT_vect タイマ1 捕獲イベント  
11 TIMER1_COMPA_vect タイマ1 比較合致 A  
12 TIMER1_COMPB_vect タイマ1 比較合致 B  
13 TIMER1_OVF_vect タイマ1 オーバーフロー  
14 TIMER0_COMPA_vect タイマ0 比較合致 A  
15 TIMER0_COMPB_vect タイマ0 比較合致 B  
16 TIMER0_OVF_vect タイマ0 オーバーフロー 比較的単純な時間待ちに使われます
17 SPI_STC_vect SPI シリアル転送完了  
18 USART_RX_vect USART 受信完了 受信レジスタにデータが届いた
19 USART_UDRE_vect USART 送信可能 送信レジスタが空になった
20 USART_TX_vect USART 送信完了 送信シフトレジスタが空になった
21 ADC_vect ADC 変換完了  
22 EE_READY_vect EEPROM 待機完了  
23 ANALOG_COMP_vect アナログコンパレータ  
24 TWI_vect TWI 待機完了  
25 SPM_READY_vect SPM 待機完了