diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2025-03-30 18:56:05 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2025-03-30 18:56:05 +0800 |
| commit | 6d6b08c8cbc9bfcae7bcda768048134c9e1763b9 (patch) | |
| tree | 7d536a80a3e2d519968c657e19e1a9919f71451f /nrfm.c | |
| parent | ca1c688537b86b722b2de87dfc629b5eecd4744f (diff) | |
| download | avr-nrf24l01-driver-6d6b08c8cbc9bfcae7bcda768048134c9e1763b9.tar.gz | |
setaddr()
Diffstat (limited to 'nrfm.c')
| -rw-r--r-- | nrfm.c | 29 |
1 files changed, 15 insertions, 14 deletions
@@ -85,7 +85,7 @@ static inline void read_reg_bulk(uint8_t reg, uint8_t *data, uint8_t n) SPI_PORT |= (1 << SPI_SS); } -static inline void write_reg_bulk(uint8_t reg, uint8_t *data, uint8_t n) +static inline void set_addr(uint8_t reg, uint8_t addr[ADDRLEN]) { uint8_t i; @@ -93,7 +93,7 @@ static inline void write_reg_bulk(uint8_t reg, uint8_t *data, uint8_t n) SPDR = (reg & 0x1F) | NRF_W_REGISTER; while (!(SPSR & (1 << SPIF))) ; - for (i = 0; i < n; i++) { + for (i = ADDRLEN - 1; i >= 0; i--) { SPDR = data[i]; while (!(SPSR & (1 << SPIF))) ; @@ -105,6 +105,7 @@ void radio_print_config(void) { char s[22]; uint8_t i, rv, addr[ADDRLEN]; + uint8_t regs[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x11, 0x1C, 0x1D @@ -151,21 +152,21 @@ void radio_init(uint8_t rxaddr[ADDRLEN]) write_reg(0x1D, 0b00000100); /* enable dynamic payload length */ write_reg(0x1C, 0b00000001); /* enable dynamic payload length for pipe 0 */ - write_reg_bulk(0x0A, rxaddr, ADDRLEN); + set_addr(0x0A, rxaddr); } -ISR(NRF_IRQ_PCINTVEC) +void radio_send(uint8_t txaddr[ADDRLEN], void *msg, uint8_t n) { - uint8_t i, n; - char buf[PDLEN]; - - cli(); - uart_write_line("Detected IRQ"); + uint8_t rv; - //n = radio_recv(buf, (PDLEN - 1)); - //buf[n] = '\0'; + rv = read_reg(0x00); + rv &= ~1; + write_reg(0x00, rv); /* enable PTX by setting PRIM_RX low */ + + // todo: check if we need to write the tx address every time + set_addr(0x10, txaddr); + set_addr(0x0A, txaddr); /* auto-ACK on pipe 0 */ - uart_write_line(buf); - - sei(); + } + |
