diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2025-04-24 10:44:31 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2025-04-24 10:44:31 +0800 |
| commit | b6d0a2105a11b46c0ac005761fa6628b4ee1ad6b (patch) | |
| tree | 0c6d7d7132af61369c1c80b8d77b600d99f52336 /nrfm.c | |
| parent | aec8f0623de46993c2d2368ef4d7d3e3ff165c38 (diff) | |
| download | avr-nrf24l01-driver-b6d0a2105a11b46c0ac005761fa6628b4ee1ad6b.tar.gz | |
Always clear IRQs after flush: both ends seem to be working.
Diffstat (limited to 'nrfm.c')
| -rw-r--r-- | nrfm.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -148,6 +148,8 @@ static inline void flush_tx(void) while (!(SPSR & (1 << SPIF))) ; SPI_PORT |= (1 << SPI_SS); + + reset_irqs(); } void radio_flush_rx(void) @@ -157,6 +159,8 @@ void radio_flush_rx(void) while (!(SPSR & (1 << SPIF))) ; SPI_PORT |= (1 << SPI_SS); + + reset_irqs(); } static inline uint8_t rx_pdlen(void) @@ -240,7 +244,6 @@ uint8_t radio_sendto(const uint8_t addr[ADDRLEN], const char *msg, uint8_t n) tx_mode(); flush_tx(); - reset_irqs(); setaddr(0x10, addr); setaddr(0x0A, addr); @@ -279,7 +282,7 @@ uint8_t radio_sendto(const uint8_t addr[ADDRLEN], const char *msg, uint8_t n) if (txds) uart_write_line("DEBUG: packet sent"); else if (maxrt) { - reset_irqs(); + flush_tx(); uart_write_line("ERROR: sendto() failed: MAX_RT"); } @@ -300,7 +303,6 @@ uint8_t radio_recv(char *buf, uint8_t n) pdlen = rx_pdlen(); if (pdlen == 0) { radio_flush_rx(); - reset_irqs(); uart_write_line("ERROR: PDLEN = 0, abort read"); return 0; } @@ -311,7 +313,6 @@ uint8_t radio_recv(char *buf, uint8_t n) if (pdlen > MAXPDLEN) { radio_flush_rx(); - reset_irqs(); uart_write_line("ERROR: PDLEN > MAXPDLEN, abort read"); return 0; } @@ -331,8 +332,6 @@ uint8_t radio_recv(char *buf, uint8_t n) SPI_PORT |= (1 << SPI_SS); radio_flush_rx(); - reset_irqs(); enable_chip(); - return readlen; } |
