34 #define nop asm volatile ("nop\n\t")
37 #define MISO_MODE INPUT
39 #define MISO_LEVEL false
41 #define MOSI_MODE OUTPUT
43 #define SCK_MODE OUTPUT
49 template<u
int8_t MisoPin, u
int8_t MosiPin, u
int8_t SckPin, u
int8_t Mode = 0>
63 inline __attribute__((always_inline))
80 inline __attribute__((always_inline))
96 inline __attribute__((always_inline))
99 transferBit(7, &rxData, txData);
100 transferBit(6, &rxData, txData);
101 transferBit(5, &rxData, txData);
102 transferBit(4, &rxData, txData);
103 transferBit(3, &rxData, txData);
104 transferBit(2, &rxData, txData);
105 transferBit(1, &rxData, txData);
106 transferBit(0, &rxData, txData);
112 inline __attribute__((always_inline))
113 bool MODE_CPHA(uint8_t mode) {
return (mode & 1) != 0;}
114 inline __attribute__((always_inline))
115 bool MODE_CPOL(uint8_t mode) {
return (mode & 2) != 0;}
116 inline __attribute__((always_inline))
117 void receiveBit(uint8_t bit, uint8_t* data) {
118 if (MODE_CPHA(Mode)) {
124 MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode));
126 if (!MODE_CPHA(Mode)) {
131 inline __attribute__((always_inline))
132 void sendBit(uint8_t bit, uint8_t data) {
133 if (MODE_CPHA(Mode)) {
138 MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode));
141 if (!MODE_CPHA(Mode)) {
146 inline __attribute__((always_inline))
147 void transferBit(uint8_t bit, uint8_t* rxData, uint8_t txData) {
148 if (MODE_CPHA(Mode)) {
153 MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode));
155 if (!MODE_CPHA(Mode)) {
uint8_t transfer(uint8_t txData)
#define fastPinConfig(pin, mode, level)
static void fastDigitalWrite(uint8_t pin, bool level)
static bool fastDigitalRead(uint8_t pin)
Fast Digital Pin functions.