@@ -102,6 +102,7 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode)
102102 // Store interrupts to service in order of when they were attached
103103 // to allow for first come first serve handler
104104 uint32_t current = 0 ;
105+ uint32_t inMask = (1UL << in );
105106
106107 // Check if we already have this interrupt
107108 for (current = 0 ; current < nints ; current ++ ) {
@@ -128,10 +129,6 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode)
128129 EIC -> NMICTRL .bit .NMISENSE = EIC_NMICTRL_NMISENSE_HIGH ;
129130 break ;
130131
131- case CHANGE :
132- EIC -> CONFIG [config ].reg |= EIC_CONFIG_SENSE0_BOTH_Val << pos ;
133- break ;
134-
135132 case CHANGE :
136133 EIC -> NMICTRL .bit .NMISENSE = EIC_NMICTRL_NMISENSE_BOTH ;
137134 break ;
@@ -146,7 +143,7 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode)
146143 }
147144
148145 // Assign callback to interrupt
149- callbacksInt [EXTERNAL_INT_NMI ] = callback ;
146+ ISRcallback [EXTERNAL_INT_NMI ] = callback ;
150147
151148 } else { // Not NMI, is external interrupt
152149
@@ -161,7 +158,7 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode)
161158 pinPeripheral (pin , PIO_EXTINT );
162159
163160 // Assign callback to interrupt
164- callbacksInt [in ] = callback ;
161+ ISRcallback [in ] = callback ;
165162
166163 // Look for right CONFIG register to be addressed
167164 if (in > EXTERNAL_INT_7 ) {
@@ -208,7 +205,6 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode)
208205 EIC -> CTRLA .bit .ENABLE = 1 ;
209206 while (EIC -> SYNCBUSY .bit .ENABLE == 1 ) { }
210207#endif
211- }
212208}
213209
214210/*
@@ -240,7 +236,7 @@ void detachInterrupt(uint32_t pin)
240236 // Remove callback from the ISR list
241237 uint32_t current ;
242238 for (current = 0 ; current < nints ; current ++ ) {
243- if (ISRlist [current ] == inMask ) {
239+ if (ISRlist [current ] == ( 1UL << in ) ) {
244240 break ;
245241 }
246242 }
@@ -263,8 +259,8 @@ void InterruptHandler(uint32_t i)
263259 if ((EIC -> INTFLAG .reg & (1 << i )) != 0 )
264260 {
265261 // Call the callback function if assigned
266- if (callbacksInt [i ]) {
267- callbacksInt [i ]();
262+ if (ISRcallback [i ]) {
263+ ISRcallback [i ]();
268264 }
269265
270266 // Clear the interrupt
@@ -376,6 +372,7 @@ void EIC_Handler(void)
376372 */
377373void NMI_Handler (void )
378374{
379- if (callbacksInt [EXTERNAL_INT_NMI ]) callbacksInt [EXTERNAL_INT_NMI ]();
375+ if (ISRcallback [EXTERNAL_INT_NMI ]) ISRcallback [EXTERNAL_INT_NMI ]();
380376 EIC -> NMIFLAG .bit .NMI = 1 ; // Clear interrupt
381377}
378+ #endif
0 commit comments