Skip to content

Commit

Permalink
Fix #15, loop unroll support
Browse files Browse the repository at this point in the history
  • Loading branch information
RobTillaart committed Sep 3, 2024
1 parent 6dce389 commit 28ebb93
Showing 1 changed file with 4 additions and 10 deletions.
14 changes: 4 additions & 10 deletions FastShiftOut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,8 @@ size_t FastShiftOut::writeLSBFIRST(uint8_t data)

#if defined(ARDUINO_ARCH_AVR) || defined(ARDUINO_ARCH_MEGAAVR)


#if defined(FASTSHIFTOUT_AVR_LOOP_UNROLLED) // AVR SPEED OPTIMIZED

uint8_t oldSREG = SREG;
noInterrupts();

uint8_t cbmask1 = _clockBit;
Expand Down Expand Up @@ -213,7 +211,7 @@ size_t FastShiftOut::writeLSBFIRST(uint8_t data)
*_clockRegister |= cbmask1;
*_clockRegister &= cbmask2;

SREG = oldSREG;
interrupts();

#else // AVR SIZE OPTIMIZED

Expand All @@ -224,13 +222,12 @@ size_t FastShiftOut::writeLSBFIRST(uint8_t data)

for (uint8_t m = 1; m > 0; m <<= 1)
{
uint8_t oldSREG = SREG;
noInterrupts();
if ((value & m) == 0) *_dataOutRegister &= outmask2;
else *_dataOutRegister |= outmask1;
*_clockRegister |= cbmask1;
*_clockRegister &= cbmask2;
SREG = oldSREG;
interrupts();
}

#endif
Expand All @@ -255,7 +252,6 @@ size_t FastShiftOut::writeMSBFIRST(uint8_t data)

#if defined(FASTSHIFTOUT_AVR_LOOP_UNROLLED) // AVR SPEED OPTIMIZED

uint8_t oldSREG = SREG;
noInterrupts();

uint8_t cbmask1 = _clockBit;
Expand Down Expand Up @@ -303,8 +299,7 @@ size_t FastShiftOut::writeMSBFIRST(uint8_t data)
*_clockRegister |= cbmask1;
*_clockRegister &= cbmask2;

SREG = oldSREG;

interrupts();

#else // AVR SIZE OPTIMIZED

Expand All @@ -316,13 +311,12 @@ size_t FastShiftOut::writeMSBFIRST(uint8_t data)

for (uint8_t m = 0x80; m > 0; m >>= 1)
{
uint8_t oldSREG = SREG;
noInterrupts();
if ((value & m) == 0) *_dataOutRegister &= outmask2;
else *_dataOutRegister |= outmask1;
*_clockRegister |= cbmask1;
*_clockRegister &= cbmask2;
SREG = oldSREG;
interrupts();
}

#endif
Expand Down

0 comments on commit 28ebb93

Please sign in to comment.