@@ -280,75 +280,37 @@ void attachInterruptTwi(void (*userFunc)(void) ) {
280280}
281281*/
282282
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+ }
295287
296- ISR (INT3_vect ) {
297- intFunc [EXTERNAL_INT_3 ]();
298- }
288+ #if defined(__AVR_ATmega32U4__ )
299289
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 )
303295
304296#elif defined(EICRA ) && defined(EICRB )
305297
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 )
337306
338307#else
339308
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 )
347311
348312#if defined(EICRA ) && defined(ISC20 )
349- ISR (INT2_vect ) {
350- intFunc [EXTERNAL_INT_2 ]();
351- }
313+ IMPLEMENT_ISR (INT2_vect , EXTERNAL_INT_2 )
352314#endif
353315
354316#endif
0 commit comments