32
32
33
33
#include "wiring_private.h"
34
34
35
- static volatile voidFuncPtr intFunc [EXTERNAL_NUM_INTERRUPTS ];
35
+ static void nothing (void ) {
36
+ }
37
+
38
+ static volatile voidFuncPtr intFunc [EXTERNAL_NUM_INTERRUPTS ] = {
39
+ #if defined(__AVR_ATmega32U4__ )
40
+ nothing , // 3
41
+ nothing , // 4
42
+ #elif (defined (EICRA ) && defined (EICRB ) && defined (EIMSK ))
43
+ nothing , // 3
44
+ nothing , // 4
45
+ nothing , // 5
46
+ nothing , // 6
47
+ nothing , // 7
48
+ #endif
49
+ nothing , // 0
50
+ nothing , // 1
51
+ nothing // 2
52
+ };
36
53
// volatile static voidFuncPtr twiIntFunc;
37
54
38
55
void attachInterrupt (uint8_t interruptNum , void (* userFunc )(void ), int mode ) {
@@ -226,7 +243,7 @@ void detachInterrupt(uint8_t interruptNum) {
226
243
#endif
227
244
}
228
245
229
- intFunc [interruptNum ] = 0 ;
246
+ intFunc [interruptNum ] = nothing ;
230
247
}
231
248
}
232
249
@@ -238,87 +255,71 @@ void attachInterruptTwi(void (*userFunc)(void) ) {
238
255
239
256
#if defined(__AVR_ATmega32U4__ )
240
257
ISR (INT0_vect ) {
241
- if (intFunc [EXTERNAL_INT_0 ])
242
- intFunc [EXTERNAL_INT_0 ]();
258
+ intFunc [EXTERNAL_INT_0 ]();
243
259
}
244
260
245
261
ISR (INT1_vect ) {
246
- if (intFunc [EXTERNAL_INT_1 ])
247
- intFunc [EXTERNAL_INT_1 ]();
262
+ intFunc [EXTERNAL_INT_1 ]();
248
263
}
249
264
250
265
ISR (INT2_vect ) {
251
- if (intFunc [EXTERNAL_INT_2 ])
252
- intFunc [EXTERNAL_INT_2 ]();
266
+ intFunc [EXTERNAL_INT_2 ]();
253
267
}
254
268
255
269
ISR (INT3_vect ) {
256
- if (intFunc [EXTERNAL_INT_3 ])
257
- intFunc [EXTERNAL_INT_3 ]();
270
+ intFunc [EXTERNAL_INT_3 ]();
258
271
}
259
272
260
273
ISR (INT6_vect ) {
261
- if (intFunc [EXTERNAL_INT_4 ])
262
- intFunc [EXTERNAL_INT_4 ]();
274
+ intFunc [EXTERNAL_INT_4 ]();
263
275
}
264
276
265
277
#elif defined(EICRA ) && defined(EICRB )
266
278
267
279
ISR (INT0_vect ) {
268
- if (intFunc [EXTERNAL_INT_2 ])
269
280
intFunc [EXTERNAL_INT_2 ]();
270
281
}
271
282
272
283
ISR (INT1_vect ) {
273
- if (intFunc [EXTERNAL_INT_3 ])
274
284
intFunc [EXTERNAL_INT_3 ]();
275
285
}
276
286
277
287
ISR (INT2_vect ) {
278
- if (intFunc [EXTERNAL_INT_4 ])
279
288
intFunc [EXTERNAL_INT_4 ]();
280
289
}
281
290
282
291
ISR (INT3_vect ) {
283
- if (intFunc [EXTERNAL_INT_5 ])
284
292
intFunc [EXTERNAL_INT_5 ]();
285
293
}
286
294
287
295
ISR (INT4_vect ) {
288
- if (intFunc [EXTERNAL_INT_0 ])
289
296
intFunc [EXTERNAL_INT_0 ]();
290
297
}
291
298
292
299
ISR (INT5_vect ) {
293
- if (intFunc [EXTERNAL_INT_1 ])
294
300
intFunc [EXTERNAL_INT_1 ]();
295
301
}
296
302
297
303
ISR (INT6_vect ) {
298
- if (intFunc [EXTERNAL_INT_6 ])
299
304
intFunc [EXTERNAL_INT_6 ]();
300
305
}
301
306
302
307
ISR (INT7_vect ) {
303
- if (intFunc [EXTERNAL_INT_7 ])
304
308
intFunc [EXTERNAL_INT_7 ]();
305
309
}
306
310
307
311
#else
308
312
309
313
ISR (INT0_vect ) {
310
- if (intFunc [EXTERNAL_INT_0 ])
311
314
intFunc [EXTERNAL_INT_0 ]();
312
315
}
313
316
314
317
ISR (INT1_vect ) {
315
- if (intFunc [EXTERNAL_INT_1 ])
316
318
intFunc [EXTERNAL_INT_1 ]();
317
319
}
318
320
319
321
#if defined(EICRA ) && defined(ISC20 )
320
322
ISR (INT2_vect ) {
321
- if (intFunc [EXTERNAL_INT_2 ])
322
323
intFunc [EXTERNAL_INT_2 ]();
323
324
}
324
325
#endif
0 commit comments