日々の生活を好き勝手につづったブログ(My blog is written by inoshita.jp)
1 | PB5/RESET | 8 | VCC |
---|---|---|---|
2 | PB3 | 7 | PB2 |
3 | PB4 | 6 | PB1/INT0 |
4 | GND | 5 | PB0 |
PB1にINT0が割り当てられている
No. | Symbol | 発生元 | 備考 |
---|---|---|---|
1 | - | リセット | 電源ON,WDT,BOD等の各種リセット |
2 | INT0_vect | INT0 | 外部割り込み要求0(PB1) |
3 | PCINT0_vect | 汎用ピン変化0 | ピン変化割り込み要求0 |
4 | TIM0_OVF_vect | タイマー/カウンタ | タイマー/カウンタMAX(オーバーフロー) |
5 | EE_RDY_vect | EEPROM待機完了 | EEPROM 操作可 |
6 | ANA_COMP_vect | アナログコンパレータ | アナログ比較器出力遷移 |
7 | TIM0_COMPA_vect | タイマ比較合致 A | タイマー/カウンタ比較A一致 |
8 | TIM0_COMPB_vect | タイマ比較合致 B | タイマー/カウンタ比較B一致 |
9 | WDT_vect | 番犬タイマ | WDT計時完了 |
10 | ADC_vect | ADC 変換完了 | A/D変換完了 |
INT0の場合
ISR(INT0_vect) {}
INT0を使用しないピン割込みの場合
ISR(PCINT0_vect) {}
スリープ復帰用で割り込みを使う場合
//ボタン押下時の割り込み関数
//スリープから復帰するためだけなので何もしない
EMPTY_INTERRUPT(PCINT0_vect);
GIMSK: General Interrupt Mask Register
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
GIMSK | – | INT0 | PCIE | – | – | – | – | – |
INT0の場合
GIMSK |= (1<<INT0); //INT0割込みを有効
MCUCR |= (1<<ISC01); //HIGH→LOWで割込み
INT0を使用しないでピン割込みの場合
GIMSK |= (1<<PCIE); //PCINT割込みを有効
PCMSK = (1<<PCINT2)|(1<<PCINT4); //例えばPB2,4の割込み許可
MCUCR: MCU Control Register
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
MCUCR | – | PUID | SE | SM1 | SM0 | – | ISC01 | ISC00 |
(意味)
ISC01 | ISC00 | |
---|---|---|
0 | 0 | INT0がLOWのとき割り込みが発生 |
0 | 1 | INT0に任意の変化で割り込みが発生 |
1 | 0 | INT0にfalling edge(HIGH→LOW)で割り込みが発生 |
1 | 1 | INT0にrising edge(LOW→HIGH)で割り込みが発生 |