diff options
author | Dave Madison <dmadison@users.noreply.github.com> | 2020-02-01 05:46:15 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-01 05:46:15 -0500 |
commit | 924299c159b619852d4c5eb1fc106db8a459d661 (patch) | |
tree | 39aad14af9ba55cc9f26f2920f6ff873552f4c62 /cores/arduino/WInterrupts.c | |
parent | 59dd6085ec8ec0a5438c1019e982fefb77f485d3 (diff) | |
parent | 923b4441fed740c5ff1e42bb8f2f58ea87d4eaf7 (diff) |
Merge pull request #6 from dmadison/upstream-updatesv1.0.1
Arduino Core 1.8.2
Diffstat (limited to 'cores/arduino/WInterrupts.c')
-rw-r--r-- | cores/arduino/WInterrupts.c | 85 |
1 files changed, 70 insertions, 15 deletions
diff --git a/cores/arduino/WInterrupts.c b/cores/arduino/WInterrupts.c index cef1106..38ea158 100644 --- a/cores/arduino/WInterrupts.c +++ b/cores/arduino/WInterrupts.c @@ -65,7 +65,6 @@ static volatile voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS] = { nothing, #endif }; -// volatile static voidFuncPtr twiIntFunc; void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { @@ -103,6 +102,39 @@ void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { EICRB = (EICRB & ~((1<<ISC60) | (1<<ISC61))) | (mode << ISC60); EIMSK |= (1<<INT6); break; +#elif defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega8U2__) + case 0: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 1: + 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; + case 4: + EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40); + EIMSK |= (1 << INT4); + break; + case 5: + EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50); + EIMSK |= (1 << INT5); + break; + case 6: + EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60); + EIMSK |= (1 << INT6); + break; + case 7: + EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70); + EIMSK |= (1 << INT7); + break; #elif defined(EICRA) && defined(EICRB) && defined(EIMSK) case 2: EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); @@ -205,7 +237,32 @@ void detachInterrupt(uint8_t interruptNum) { break; case 4: EIMSK &= ~(1<<INT6); - break; + break; +#elif defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega8U2__) + case 0: + EIMSK &= ~(1 << INT0); + break; + case 1: + EIMSK &= ~(1 << INT1); + break; + case 2: + EIMSK &= ~(1 << INT2); + break; + case 3: + EIMSK &= ~(1 << INT3); + break; + case 4: + EIMSK &= ~(1 << INT4); + break; + case 5: + EIMSK &= ~(1 << INT5); + break; + case 6: + EIMSK &= ~(1 << INT6); + break; + case 7: + EIMSK &= ~(1 << INT7); + break; #elif defined(EICRA) && defined(EICRB) && defined(EIMSK) case 2: EIMSK &= ~(1 << INT0); @@ -274,11 +331,6 @@ void detachInterrupt(uint8_t interruptNum) { } } -/* -void attachInterruptTwi(void (*userFunc)(void) ) { - twiIntFunc = userFunc; -} -*/ #define IMPLEMENT_ISR(vect, interrupt) \ ISR(vect) { \ @@ -293,6 +345,17 @@ IMPLEMENT_ISR(INT2_vect, EXTERNAL_INT_2) IMPLEMENT_ISR(INT3_vect, EXTERNAL_INT_3) IMPLEMENT_ISR(INT6_vect, EXTERNAL_INT_4) +#elif defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega8U2__) + +IMPLEMENT_ISR(INT0_vect, EXTERNAL_INT_0) +IMPLEMENT_ISR(INT1_vect, EXTERNAL_INT_1) +IMPLEMENT_ISR(INT2_vect, EXTERNAL_INT_2) +IMPLEMENT_ISR(INT3_vect, EXTERNAL_INT_3) +IMPLEMENT_ISR(INT4_vect, EXTERNAL_INT_4) +IMPLEMENT_ISR(INT5_vect, EXTERNAL_INT_5) +IMPLEMENT_ISR(INT6_vect, EXTERNAL_INT_6) +IMPLEMENT_ISR(INT7_vect, EXTERNAL_INT_7) + #elif defined(EICRA) && defined(EICRB) IMPLEMENT_ISR(INT0_vect, EXTERNAL_INT_2) @@ -314,11 +377,3 @@ IMPLEMENT_ISR(INT2_vect, EXTERNAL_INT_2) #endif #endif - -/* -ISR(TWI_vect) { - if(twiIntFunc) - twiIntFunc(); -} -*/ - |