diff options
author | Cristian Maglie <c.maglie@bug.st> | 2012-06-26 00:51:35 +0200 |
---|---|---|
committer | Cristian Maglie <c.maglie@bug.st> | 2012-06-26 00:51:35 +0200 |
commit | 79521e1a15f4d8778b07477cf1f61b6c0e74b7b9 (patch) | |
tree | 421853a5f6634228bb601d9ff7506f949095aadd /cores/arduino/WInterrupts.c | |
parent | 386e059e7e6b4703e800b1b9154d52cd9b280d3e (diff) | |
parent | 2ef2f9d5c78ad4a1d265b7386e13c41d41ba410a (diff) |
Merged upstream Arduino master branch
Diffstat (limited to 'cores/arduino/WInterrupts.c')
-rw-r--r-- | cores/arduino/WInterrupts.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/cores/arduino/WInterrupts.c b/cores/arduino/WInterrupts.c index 8f3ec84..62efc9c 100644 --- a/cores/arduino/WInterrupts.c +++ b/cores/arduino/WInterrupts.c @@ -59,6 +59,14 @@ void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { EICRA = (EICRA & ~((1<<ISC10) | (1<<ISC11))) | (mode << ISC10); EIMSK |= (1<<INT1); break; + case 2: + EICRA = (EICRA & ~((1<<ISC20) | (1<<ISC21))) | (mode << ISC20); + EIMSK |= (1<<INT2); + break; + case 3: + EICRA = (EICRA & ~((1<<ISC30) | (1<<ISC31))) | (mode << ISC30); + EIMSK |= (1<<INT3); + break; #elif defined(EICRA) && defined(EICRB) && defined(EIMSK) case 2: EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); @@ -147,12 +155,18 @@ void detachInterrupt(uint8_t interruptNum) { // ATmega8. There, INT0 is 6 and INT1 is 7.) switch (interruptNum) { #if defined(__AVR_ATmega32U4__) - case 0: - EIMSK &= ~(1<<INT0); - break; - case 1: - EIMSK &= ~(1<<INT1); - break; + case 0: + EIMSK &= ~(1<<INT0); + break; + case 1: + EIMSK &= ~(1<<INT1); + break; + case 2: + EIMSK &= ~(1<<INT2); + break; + case 3: + EIMSK &= ~(1<<INT3); + break; #elif defined(EICRA) && defined(EICRB) && defined(EIMSK) case 2: EIMSK &= ~(1 << INT0); @@ -226,6 +240,16 @@ SIGNAL(INT1_vect) { intFunc[EXTERNAL_INT_1](); } +SIGNAL(INT2_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +SIGNAL(INT3_vect) { + if(intFunc[EXTERNAL_INT_3]) + intFunc[EXTERNAL_INT_3](); +} + #elif defined(EICRA) && defined(EICRB) SIGNAL(INT0_vect) { |