@@ -280,75 +280,37 @@ void attachInterruptTwi(void (*userFunc)(void) ) {
280
280
}
281
281
*/
282
282
283
- #if defined(__AVR_ATmega32U4__ )
284
- ISR (INT0_vect ) {
285
- intFunc [EXTERNAL_INT_0 ]();
286
- }
287
-
288
- ISR (INT1_vect ) {
289
- intFunc [EXTERNAL_INT_1 ]();
290
- }
291
-
292
- ISR (INT2_vect ) {
293
- intFunc [EXTERNAL_INT_2 ]();
294
- }
283
+ #define IMPLEMENT_ISR (vect , interrupt ) \
284
+ ISR(vect) { \
285
+ intFunc[interrupt](); \
286
+ }
295
287
296
- ISR (INT3_vect ) {
297
- intFunc [EXTERNAL_INT_3 ]();
298
- }
288
+ #if defined(__AVR_ATmega32U4__ )
299
289
300
- ISR (INT6_vect ) {
301
- intFunc [EXTERNAL_INT_4 ]();
302
- }
290
+ IMPLEMENT_ISR (INT0_vect , EXTERNAL_INT_0 )
291
+ IMPLEMENT_ISR (INT1_vect , EXTERNAL_INT_1 )
292
+ IMPLEMENT_ISR (INT2_vect , EXTERNAL_INT_2 )
293
+ IMPLEMENT_ISR (INT3_vect , EXTERNAL_INT_3 )
294
+ IMPLEMENT_ISR (INT6_vect , EXTERNAL_INT_4 )
303
295
304
296
#elif defined(EICRA ) && defined(EICRB )
305
297
306
- ISR (INT0_vect ) {
307
- intFunc [EXTERNAL_INT_2 ]();
308
- }
309
-
310
- ISR (INT1_vect ) {
311
- intFunc [EXTERNAL_INT_3 ]();
312
- }
313
-
314
- ISR (INT2_vect ) {
315
- intFunc [EXTERNAL_INT_4 ]();
316
- }
317
-
318
- ISR (INT3_vect ) {
319
- intFunc [EXTERNAL_INT_5 ]();
320
- }
321
-
322
- ISR (INT4_vect ) {
323
- intFunc [EXTERNAL_INT_0 ]();
324
- }
325
-
326
- ISR (INT5_vect ) {
327
- intFunc [EXTERNAL_INT_1 ]();
328
- }
329
-
330
- ISR (INT6_vect ) {
331
- intFunc [EXTERNAL_INT_6 ]();
332
- }
333
-
334
- ISR (INT7_vect ) {
335
- intFunc [EXTERNAL_INT_7 ]();
336
- }
298
+ IMPLEMENT_ISR (INT0_vect , EXTERNAL_INT_2 )
299
+ IMPLEMENT_ISR (INT1_vect , EXTERNAL_INT_3 )
300
+ IMPLEMENT_ISR (INT2_vect , EXTERNAL_INT_4 )
301
+ IMPLEMENT_ISR (INT3_vect , EXTERNAL_INT_5 )
302
+ IMPLEMENT_ISR (INT4_vect , EXTERNAL_INT_0 )
303
+ IMPLEMENT_ISR (INT5_vect , EXTERNAL_INT_1 )
304
+ IMPLEMENT_ISR (INT6_vect , EXTERNAL_INT_6 )
305
+ IMPLEMENT_ISR (INT7_vect , EXTERNAL_INT_7 )
337
306
338
307
#else
339
308
340
- ISR (INT0_vect ) {
341
- intFunc [EXTERNAL_INT_0 ]();
342
- }
343
-
344
- ISR (INT1_vect ) {
345
- intFunc [EXTERNAL_INT_1 ]();
346
- }
309
+ IMPLEMENT_ISR (INT0_vect , EXTERNAL_INT_0 )
310
+ IMPLEMENT_ISR (INT1_vect , EXTERNAL_INT_1 )
347
311
348
312
#if defined(EICRA ) && defined(ISC20 )
349
- ISR (INT2_vect ) {
350
- intFunc [EXTERNAL_INT_2 ]();
351
- }
313
+ IMPLEMENT_ISR (INT2_vect , EXTERNAL_INT_2 )
352
314
#endif
353
315
354
316
#endif
0 commit comments