summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2025-03-16 14:27:35 +0800
committerSadeep Madurange <sadeep@asciimx.com>2025-03-16 14:27:35 +0800
commit91f3f58fdd8508e4dcda556a6703b3c700bb64bd (patch)
tree62b46da778b7f1f55540876376921505860976ce
parent3255899476f04f628bcd49f6699ae51f37118d59 (diff)
downloadavr-nrf24l01-driver-91f3f58fdd8508e4dcda556a6703b3c700bb64bd.tar.gz
Bulk read and write functions.
-rw-r--r--main.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/main.c b/main.c
index 01d426c..85786f1 100644
--- a/main.c
+++ b/main.c
@@ -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];