summaryrefslogtreecommitdiffstats
path: root/ding.c
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2025-04-11 13:25:11 +0800
committerSadeep Madurange <sadeep@asciimx.com>2025-04-11 13:25:11 +0800
commit52112f19821f6f667c51f3ac2c68da41365e0b43 (patch)
tree7747b55922d76d435ea2b528f87201950a14b5e2 /ding.c
parent7b9d39da831a6454eb0eb57bbfa86ff2d615d287 (diff)
downloadavr-nrf24l01-driver-52112f19821f6f667c51f3ac2c68da41365e0b43.tar.gz
wip: some packets are being exchanged, after about 3 packets they fail (WDT)
Diffstat (limited to 'ding.c')
-rw-r--r--ding.c43
1 files changed, 38 insertions, 5 deletions
diff --git a/ding.c b/ding.c
index 34ff38c..2bf9fe6 100644
--- a/ding.c
+++ b/ding.c
@@ -1,6 +1,7 @@
#include <stdint.h>
#include <string.h>
+#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <util/delay.h>
@@ -8,24 +9,56 @@
#include "uart.h"
#include "util.h"
+#define RX_PIN PD7
+#define RX_DDR DDRD
+#define RX_PORT PORTD
+#define RX_PCIE PCIE2
+#define RX_PCINT PCINT23
+#define RX_PCMSK PCMSK2
+#define RX_PCINTVEC PCINT2_vect
+
+static volatile int rxdr = 0;
+
int main(void)
{
- const char *s = "hello world!";
- uint8_t slen = strlen(s);
+ uint8_t n;
+ char buf[MAXPDLEN + 1];
uint8_t rxaddr[ADDRLEN] = { 194, 178, 82 };
uint8_t txaddr[ADDRLEN] = { 194, 178, 83 };
- wdt_init();
+ //wdt_stop();
uart_init();
radio_init(rxaddr);
radio_print_config();
+ sei();
+ radio_listen();
+
+ _delay_ms(2000);
+ radio_sendto(txaddr, "SYN", 3);
+
for (;;) {
- radio_sendto(txaddr, s, slen);
- wdt_reset();
+ if (rxdr) {
+ n = radio_recv(buf, MAXPDLEN);
+ buf[n] = '\0';
+ rxdr = 0;
+ if (strncmp(buf, "ACK", 3) == 0) {
+ uart_write("INFO: ");
+ uart_write_line(buf);
+ }
+ } else {
+ uart_write_line("No IRQ");
+ }
+
_delay_ms(2000);
+ radio_sendto(txaddr, "SYN", 3);
}
return 0;
}
+
+ISR(RX_PCINTVEC)
+{
+ rxdr = 1;
+}