File tree 1 file changed +7
-9
lines changed
1 file changed +7
-9
lines changed Original file line number Diff line number Diff line change @@ -111,11 +111,9 @@ void SPIClass::end() {
111
111
112
112
void SPIClass::usingInterrupt (uint8_t interruptNumber)
113
113
{
114
- uint8_t mask;
115
-
116
- if (interruptMode > 1 ) return ;
117
-
118
- noInterrupts ();
114
+ uint8_t mask = 0 ;
115
+ uint8_t sreg = SREG;
116
+ noInterrupts (); // Protect from a scheduler and prevent transactionBegin
119
117
switch (interruptNumber) {
120
118
#ifdef SPI_INT0_MASK
121
119
case 0 : mask = SPI_INT0_MASK; break ;
@@ -143,12 +141,12 @@ void SPIClass::usingInterrupt(uint8_t interruptNumber)
143
141
#endif
144
142
default :
145
143
interruptMode = 2 ;
146
- interrupts ();
147
- return ;
144
+ break ;
148
145
}
149
- interruptMode = 1 ;
150
146
interruptMask |= mask;
151
- interrupts ();
147
+ if (!interruptMode)
148
+ interruptMode = 1 ;
149
+ SREG = sreg;
152
150
}
153
151
154
152
void SPIClass::notUsingInterrupt (uint8_t interruptNumber)
You can’t perform that action at this time.
0 commit comments