@@ -57,9 +57,8 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode)
57
57
uint32_t config ;
58
58
uint32_t pos ;
59
59
60
- if (digitalPinToInterrupt (pin ) == NOT_AN_INTERRUPT )
61
- return ;
62
- if (digitalPinToInterrupt (pin ) == EXTERNAL_INT_NMI )
60
+ EExt_Interrupts in = digitalPinToInterrupt (pin );
61
+ if (in == NOT_AN_INTERRUPT || in == EXTERNAL_INT_NMI )
63
62
return ;
64
63
65
64
if (!enabled ) {
@@ -71,17 +70,17 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode)
71
70
pinPeripheral (pin , PIO_EXTINT );
72
71
73
72
// Assign callback to interrupt
74
- callbacksInt [digitalPinToInterrupt ( pin ) ] = callback ;
73
+ callbacksInt [in ] = callback ;
75
74
76
75
// Look for right CONFIG register to be addressed
77
- if (digitalPinToInterrupt ( pin ) > EXTERNAL_INT_7 ) {
76
+ if (in > EXTERNAL_INT_7 ) {
78
77
config = 1 ;
79
78
} else {
80
79
config = 0 ;
81
80
}
82
81
83
82
// Configure the interrupt mode
84
- pos = (( digitalPinToInterrupt ( pin ) - (8 * config )) << 2 ) ;
83
+ pos = (in - (8 * config )) << 2 ;
85
84
switch (mode )
86
85
{
87
86
case LOW :
@@ -106,20 +105,19 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode)
106
105
}
107
106
108
107
// Enable the interrupt
109
- EIC -> INTENSET .reg = EIC_INTENSET_EXTINT (1 << digitalPinToInterrupt ( pin ) );
108
+ EIC -> INTENSET .reg = EIC_INTENSET_EXTINT (1 << in );
110
109
}
111
110
112
111
/*
113
112
* \brief Turns off the given interrupt.
114
113
*/
115
114
void detachInterrupt (uint32_t pin )
116
115
{
117
- if (digitalPinToInterrupt (pin ) == NOT_AN_INTERRUPT )
118
- return ;
119
- if (digitalPinToInterrupt (pin ) == EXTERNAL_INT_NMI )
116
+ EExt_Interrupts in = digitalPinToInterrupt (pin );
117
+ if (in == NOT_AN_INTERRUPT || in == EXTERNAL_INT_NMI )
120
118
return ;
121
119
122
- EIC -> INTENCLR .reg = EIC_INTENCLR_EXTINT (1 << digitalPinToInterrupt ( pin ) );
120
+ EIC -> INTENCLR .reg = EIC_INTENCLR_EXTINT (1 << in );
123
121
}
124
122
125
123
/*
0 commit comments