@@ -102,6 +102,39 @@ void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) {
102102 EICRB = (EICRB & ~((1 <<ISC60 ) | (1 <<ISC61 ))) | (mode << ISC60 );
103103 EIMSK |= (1 <<INT6 );
104104 break ;
105+ #elif defined(__AVR_AT90USB82__ ) || defined(__AVR_AT90USB162__ ) || defined(__AVR_ATmega32U2__ ) || defined(__AVR_ATmega16U2__ ) || defined(__AVR_ATmega8U2__ )
106+ case 0 :
107+ EICRA = (EICRA & ~((1 << ISC00 ) | (1 << ISC01 ))) | (mode << ISC00 );
108+ EIMSK |= (1 << INT0 );
109+ break ;
110+ case 1 :
111+ EICRA = (EICRA & ~((1 << ISC10 ) | (1 << ISC11 ))) | (mode << ISC10 );
112+ EIMSK |= (1 << INT1 );
113+ break ;
114+ case 2 :
115+ EICRA = (EICRA & ~((1 << ISC20 ) | (1 << ISC21 ))) | (mode << ISC20 );
116+ EIMSK |= (1 << INT2 );
117+ break ;
118+ case 3 :
119+ EICRA = (EICRA & ~((1 << ISC30 ) | (1 << ISC31 ))) | (mode << ISC30 );
120+ EIMSK |= (1 << INT3 );
121+ break ;
122+ case 4 :
123+ EICRB = (EICRB & ~((1 << ISC40 ) | (1 << ISC41 ))) | (mode << ISC40 );
124+ EIMSK |= (1 << INT4 );
125+ break ;
126+ case 5 :
127+ EICRB = (EICRB & ~((1 << ISC50 ) | (1 << ISC51 ))) | (mode << ISC50 );
128+ EIMSK |= (1 << INT5 );
129+ break ;
130+ case 6 :
131+ EICRB = (EICRB & ~((1 << ISC60 ) | (1 << ISC61 ))) | (mode << ISC60 );
132+ EIMSK |= (1 << INT6 );
133+ break ;
134+ case 7 :
135+ EICRB = (EICRB & ~((1 << ISC70 ) | (1 << ISC71 ))) | (mode << ISC70 );
136+ EIMSK |= (1 << INT7 );
137+ break ;
105138#elif defined(EICRA ) && defined(EICRB ) && defined(EIMSK )
106139 case 2 :
107140 EICRA = (EICRA & ~((1 << ISC00 ) | (1 << ISC01 ))) | (mode << ISC00 );
@@ -204,7 +237,32 @@ void detachInterrupt(uint8_t interruptNum) {
204237 break ;
205238 case 4 :
206239 EIMSK &= ~(1 <<INT6 );
207- break ;
240+ break ;
241+ #elif defined(__AVR_AT90USB82__ ) || defined(__AVR_AT90USB162__ ) || defined(__AVR_ATmega32U2__ ) || defined(__AVR_ATmega16U2__ ) || defined(__AVR_ATmega8U2__ )
242+ case 0 :
243+ EIMSK &= ~(1 << INT0 );
244+ break ;
245+ case 1 :
246+ EIMSK &= ~(1 << INT1 );
247+ break ;
248+ case 2 :
249+ EIMSK &= ~(1 << INT2 );
250+ break ;
251+ case 3 :
252+ EIMSK &= ~(1 << INT3 );
253+ break ;
254+ case 4 :
255+ EIMSK &= ~(1 << INT4 );
256+ break ;
257+ case 5 :
258+ EIMSK &= ~(1 << INT5 );
259+ break ;
260+ case 6 :
261+ EIMSK &= ~(1 << INT6 );
262+ break ;
263+ case 7 :
264+ EIMSK &= ~(1 << INT7 );
265+ break ;
208266#elif defined(EICRA ) && defined(EICRB ) && defined(EIMSK )
209267 case 2 :
210268 EIMSK &= ~(1 << INT0 );
@@ -287,6 +345,17 @@ IMPLEMENT_ISR(INT2_vect, EXTERNAL_INT_2)
287345IMPLEMENT_ISR (INT3_vect , EXTERNAL_INT_3 )
288346IMPLEMENT_ISR (INT6_vect , EXTERNAL_INT_4 )
289347
348+ #elif defined(__AVR_AT90USB82__ ) || defined(__AVR_AT90USB162__ ) || defined(__AVR_ATmega32U2__ ) || defined(__AVR_ATmega16U2__ ) || defined(__AVR_ATmega8U2__ )
349+
350+ IMPLEMENT_ISR (INT0_vect , EXTERNAL_INT_0 )
351+ IMPLEMENT_ISR (INT1_vect , EXTERNAL_INT_1 )
352+ IMPLEMENT_ISR (INT2_vect , EXTERNAL_INT_2 )
353+ IMPLEMENT_ISR (INT3_vect , EXTERNAL_INT_3 )
354+ IMPLEMENT_ISR (INT4_vect , EXTERNAL_INT_4 )
355+ IMPLEMENT_ISR (INT5_vect , EXTERNAL_INT_5 )
356+ IMPLEMENT_ISR (INT6_vect , EXTERNAL_INT_6 )
357+ IMPLEMENT_ISR (INT7_vect , EXTERNAL_INT_7 )
358+
290359#elif defined(EICRA ) && defined(EICRB )
291360
292361IMPLEMENT_ISR (INT0_vect , EXTERNAL_INT_2 )
0 commit comments