summaryrefslogtreecommitdiffstats
path: root/dong.c
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2025-04-09 19:31:30 +0800
committerSadeep Madurange <sadeep@asciimx.com>2025-04-09 19:31:30 +0800
commitde096ea780245c8beb748839120e5669fe37d457 (patch)
tree1f8ee90f3a452cfbeb67d18f52fbfbd3cb6d7e21 /dong.c
parente34917da814c2cdb3710553d479df0aed3979e28 (diff)
downloadavr-nrf24l01-driver-de096ea780245c8beb748839120e5669fe37d457.tar.gz
Rename and fix pdlen read.
Diffstat (limited to 'dong.c')
-rw-r--r--dong.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/dong.c b/dong.c
new file mode 100644
index 0000000..70006dc
--- /dev/null
+++ b/dong.c
@@ -0,0 +1,60 @@
+#include <stdint.h>
+#include <string.h>
+#include <avr/interrupt.h>
+#include <util/delay.h>
+
+#include "nrfm.h"
+#include "uart.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 int rxdr = 0;
+
+int main(void)
+{
+ uint8_t n;
+ char buf[MAXPDLEN + 1];
+
+ uint8_t rxaddr[] = { 194, 178, 83 };
+
+ RX_DDR &= ~(1 << RX_PIN);
+ RX_PORT |= (1 << RX_PIN);
+ PCICR |= (1 << RX_PCIE);
+ RX_PCMSK |= (1 << RX_PCINT);
+
+ uart_init();
+ radio_init(rxaddr);
+ radio_print_config();
+
+ sei();
+ radio_listen();
+
+ for (;;) {
+ if (rxdr) {
+ uart_write_line("IRQ recv, reading data");
+ n = radio_recv(buf, MAXPDLEN);
+ buf[n] = '\0';
+ rxdr = 0;
+ if (n > 0) {
+ uart_write("INFO: ");
+ uart_write_line(buf);
+ }
+ } else {
+ uart_write_line("No IRQ");
+ _delay_ms(2000);
+ }
+ }
+
+ return 0;
+}
+
+ISR(RX_PCINTVEC)
+{
+ rxdr = 1;
+}