summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dong.c2
-rw-r--r--nrfm.c7
2 files changed, 6 insertions, 3 deletions
diff --git a/dong.c b/dong.c
index 70006dc..1ef872f 100644
--- a/dong.c
+++ b/dong.c
@@ -14,7 +14,7 @@
#define RX_PCMSK PCMSK2
#define RX_PCINTVEC PCINT2_vect
-static int rxdr = 0;
+static volatile int rxdr = 0;
int main(void)
{
diff --git a/nrfm.c b/nrfm.c
index 7ec45df..84f790a 100644
--- a/nrfm.c
+++ b/nrfm.c
@@ -229,12 +229,11 @@ void radio_sendto(const uint8_t addr[ADDRLEN], const char *msg, uint8_t n)
disable_chip();
- imax = n < MAXPDLEN ? n : MAXPDLEN;
cfg = read_reg(0x00);
tx_mode();
- reset_irqs();
flush_tx();
+ reset_irqs();
setaddr(0x10, addr);
setaddr(0x0A, addr);
@@ -246,6 +245,8 @@ void radio_sendto(const uint8_t addr[ADDRLEN], const char *msg, uint8_t n)
uart_write(".");
uart_write_line(itoa(addr[2], s, 10));
+ imax = n < MAXPDLEN ? n : MAXPDLEN;
+
SPI_PORT &= ~(1 << SPI_SS);
SPDR = 0b10100000;
while (!(SPSR & (1 << SPIF)))
@@ -271,6 +272,7 @@ void 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();
uart_write_line("ERROR: sendto() failed: MAX_RT");
}
@@ -280,6 +282,7 @@ void radio_sendto(const uint8_t addr[ADDRLEN], const char *msg, uint8_t n)
void radio_listen(void)
{
+ disable_chip();
rx_mode();
enable_chip();
}