From 50deb9d280254c8e17624b368ea778f69dd86767 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sat, 1 Feb 2025 11:25:19 +0800 Subject: Start work on nRF24L01. --- nRF24L01/recv.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 nRF24L01/recv.c (limited to 'nRF24L01/recv.c') diff --git a/nRF24L01/recv.c b/nRF24L01/recv.c new file mode 100644 index 0000000..1c6ac0f --- /dev/null +++ b/nRF24L01/recv.c @@ -0,0 +1,64 @@ +#include +#include + +#include "radio.h" +#include "serial.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 + +#define MAX_PAYLOAD_LEN 60 + +static char *s = "hello, world!"; +static uint8_t slen = 13; + +int main(void) +{ + struct radio_cfg cfg; + + cfg.netid = 0x01; + cfg.nodeid = 0x01; + cfg.payload_len = slen; + + RX_DDR &= ~(1 << RX_PIN); + RX_PORT &= ~(1 << RX_PIN); + PCICR |= (1 << RX_PCIE); + RX_PCMSK |= (1 << RX_PCINT); + + serial_init(); + + radio_init(&cfg); + radio_listen(); + + sei(); + + for (;;) + ; + + return 0; +} + +ISR(RX_PCINTVEC) +{ + uint8_t i, n; + char buf[MAX_PAYLOAD_LEN]; + + cli(); + + serial_write_line("Detected pin change IRQ"); + + n = radio_recv(buf, MAX_PAYLOAD_LEN - 1); + buf[n] = '\0'; + + for (i = 0; i < n; i++) + serial_write(buf[i]); + serial_write('\r'); + serial_write('\n'); + + sei(); +} -- cgit v1.2.3