33#define nop asm volatile("nop\n\t")
36#define MISO_MODE INPUT
38#define MISO_LEVEL false
40#define MOSI_MODE OUTPUT
42#define SCK_MODE OUTPUT
48template <u
int8_t MisoPin, u
int8_t MosiPin, u
int8_t SckPin, u
int8_t Mode = 0>
class SoftSPI
55 fastPinConfig(MisoPin, MISO_MODE, MISO_LEVEL);
56 fastPinConfig(MosiPin, MOSI_MODE, !MODE_CPHA(Mode));
57 fastPinConfig(SckPin, SCK_MODE, MODE_CPOL(Mode));
114 return (
mode & 1) != 0;
118 return (
mode & 2) != 0;
129 if (fastDigitalRead(MisoPin))
131 if (!MODE_CPHA(Mode))
147 if (!MODE_CPHA(Mode))
161 if (fastDigitalRead(MisoPin))
163 if (!MODE_CPHA(Mode))
Fast Digital Pin functions.
Fast software SPI.
Definition SoftSPI.h:49
__attribute__((always_inline)) uint8_t transfer(uint8_t txData)
Definition SoftSPI.h:96
nop
Definition SoftSPI.h:127
__attribute__((always_inline)) void send(uint8_t data)
Definition SoftSPI.h:80
__attribute__((always_inline)) void receiveBit(uint8_t bit
__attribute__((always_inline)) uint8_t receive()
Definition SoftSPI.h:63
uint8_t uint8_t txData
Definition SoftSPI.h:154
fastDigitalWrite(SckPin, MODE_CPHA(Mode) ? MODE_CPOL(Mode) :!MODE_CPOL(Mode))
uint8_t * data
Definition SoftSPI.h:121
void begin()
Definition SoftSPI.h:53
__attribute__((always_inline)) void transferBit(uint8_t bit
uint8_t * rxData
Definition SoftSPI.h:153
__attribute__((always_inline)) bool MODE_CPOL(uint8_t mode)
Definition SoftSPI.h:116
__attribute__((always_inline)) void sendBit(uint8_t bit
__attribute__((always_inline)) bool MODE_CPHA(uint8_t mode)
Definition SoftSPI.h:112
static uint8_t mode
Definition DigitalPin.h:186