From bfda8d0483d3dd7a7b0983cf41d863b46c909800 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Wed, 2 Apr 2025 11:00:11 +0800 Subject: Imprv batching logic. --- nrfm.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'nrfm.c') diff --git a/nrfm.c b/nrfm.c index 8787938..eeddb18 100644 --- a/nrfm.c +++ b/nrfm.c @@ -187,7 +187,7 @@ void radio_init(const uint8_t rxaddr[ADDRLEN]) void radio_sendto(const uint8_t addr[ADDRLEN], const void *msg, uint8_t n) { - uint8_t i, j, j0; + uint8_t i, j, jn, jmax; enable_tx(); reset_irqs(); @@ -196,19 +196,21 @@ void radio_sendto(const uint8_t addr[ADDRLEN], const void *msg, uint8_t n) setaddr(0x10, addr); setaddr(0x0A, addr); + jn = n - 1; + for (i = 0; i < n; i += MAXPDLEN) { SPI_PORT &= ~(1 << SPI_SS); SPDR = 0b10100000; while (!(SPSR & (1 << SPIF))) ; - - j0 = ((i + 1) * MAXPDLEN) - 1; - for (j = n - 1 < j0 ? n - 1 : j0; j >= i * MAXPDLEN; j--) { + jmax = ((i + 1) * MAXPDLEN) - 1; + for (j = jn < jmax ? jn : jmax; j >= i * MAXPDLEN; j--) { SPDR = ((uint8_t *)msg)[j]; while (!(SPSR & (1 << SPIF))) ; } SPI_PORT |= (1 << SPI_SS); + NRF_CE_PORT |= (1 << NRF_CE); _delay_us(12); NRF_CE_PORT &= ~(1 << NRF_CE); -- cgit v1.2.3