File tree Expand file tree Collapse file tree 1 file changed +7
-9
lines changed
hardware/arduino/avr/libraries/SPI Expand file tree Collapse file tree 1 file changed +7
-9
lines changed Original file line number Diff line number Diff line change @@ -111,11 +111,9 @@ void SPIClass::end() {
111111
112112void SPIClass::usingInterrupt (uint8_t interruptNumber)
113113{
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
119117 switch (interruptNumber) {
120118 #ifdef SPI_INT0_MASK
121119 case 0 : mask = SPI_INT0_MASK; break ;
@@ -143,12 +141,12 @@ void SPIClass::usingInterrupt(uint8_t interruptNumber)
143141 #endif
144142 default :
145143 interruptMode = 2 ;
146- interrupts ();
147- return ;
144+ break ;
148145 }
149- interruptMode = 1 ;
150146 interruptMask |= mask;
151- interrupts ();
147+ if (!interruptMode)
148+ interruptMode = 1 ;
149+ SREG = sreg;
152150}
153151
154152void SPIClass::notUsingInterrupt (uint8_t interruptNumber)
You can’t perform that action at this time.
0 commit comments