@@ -102,6 +102,39 @@ void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) {
102
102
EICRB = (EICRB & ~((1 <<ISC60 ) | (1 <<ISC61 ))) | (mode << ISC60 );
103
103
EIMSK |= (1 <<INT6 );
104
104
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 ;
105
138
#elif defined(EICRA ) && defined(EICRB ) && defined(EIMSK )
106
139
case 2 :
107
140
EICRA = (EICRA & ~((1 << ISC00 ) | (1 << ISC01 ))) | (mode << ISC00 );
@@ -204,7 +237,32 @@ void detachInterrupt(uint8_t interruptNum) {
204
237
break ;
205
238
case 4 :
206
239
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 ;
208
266
#elif defined(EICRA ) && defined(EICRB ) && defined(EIMSK )
209
267
case 2 :
210
268
EIMSK &= ~(1 << INT0 );
@@ -287,6 +345,17 @@ IMPLEMENT_ISR(INT2_vect, EXTERNAL_INT_2)
287
345
IMPLEMENT_ISR (INT3_vect , EXTERNAL_INT_3 )
288
346
IMPLEMENT_ISR (INT6_vect , EXTERNAL_INT_4 )
289
347
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
+
290
359
#elif defined(EICRA ) && defined(EICRB )
291
360
292
361
IMPLEMENT_ISR (INT0_vect , EXTERNAL_INT_2 )
0 commit comments