diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2025-03-16 14:27:35 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2025-03-16 14:27:35 +0800 |
| commit | 91f3f58fdd8508e4dcda556a6703b3c700bb64bd (patch) | |
| tree | 62b46da778b7f1f55540876376921505860976ce /main.c | |
| parent | 3255899476f04f628bcd49f6699ae51f37118d59 (diff) | |
| download | avr-nrf24l01-driver-91f3f58fdd8508e4dcda556a6703b3c700bb64bd.tar.gz | |
Bulk read and write functions.
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -57,6 +57,39 @@ static inline void write_reg(uint8_t reg, uint8_t val) write_reg_check(reg, val, val); } +static inline void write_reg_bulk(uint8_t reg, uint8_t *data, uint8_t n) +{ + uint8_t i; + + SPI_PORT &= ~(1 << SPI_SS); + SPDR = (reg & 0x1F) | 0x20; + while (!(SPSR & (1 << SPIF))) + ; + for (i = 0; i < n; i++) { + SPDR = data[i]; + while (!(SPSR & (1 << SPIF))) + ; + } + SPI_PORT |= (1 << SPI_SS); +} + +static inline void read_reg_bulk(uint8_t reg, uint8_t *data, uint8_t n) +{ + uint8_t i; + + SPI_PORT &= ~(1 << SPI_SS); + SPDR = reg & 0x1F; + while (!(SPSR & (1 << SPIF))) + ; + for (i = 0; i < n; i++) { + SPDR = 0xFF; + while (!(SPSR & (1 << SPIF))) + ; + data[i] = SPDR; + } + SPI_PORT |= (1 << SPI_SS); +} + static inline void print_config(void) { char s[22]; |
