| // Write to the SPI bus (MOSI pin) and also receive (MISO pin) | // Write to the SPI bus (MOSI pin) and also receive (MISO pin) | ||||
| inline static uint8_t transfer(uint8_t data) { | inline static uint8_t transfer(uint8_t data) { | ||||
| SPDR = data; | |||||
| while (!(SPSR & _BV(SPIF))) ; // wait | |||||
| return SPDR; | |||||
| SPI0_SR = SPI_SR_TCF; | |||||
| SPI0_PUSHR = data; | |||||
| while (!(SPI0_SR & SPI_SR_TCF)) ; // wait | |||||
| return SPI0_POPR; | |||||
| } | |||||
| inline static uint8_t transfer16(uint16_t data) { | |||||
| SPI0_SR = SPI_SR_TCF; | |||||
| SPI0_PUSHR = data | SPI_PUSHR_CTAS(1); | |||||
| while (!(SPI0_SR & SPI_SR_TCF)) ; // wait | |||||
| return SPI0_POPR; | |||||
| } | } | ||||
| inline static void transfer(void *buf, size_t count) { | inline static void transfer(void *buf, size_t count) { | ||||
| if (count == 0) return; | if (count == 0) return; |