diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2025-04-07 12:50:46 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2025-04-07 13:03:44 +0800 |
| commit | 2a5eaad1bcac0f0ff61bd82b6427932cb4d03872 (patch) | |
| tree | ccf47e934cf154603a7f7f6319ddebe440124570 /lock/back.c | |
| parent | 77c3f8741ff2a8876a3107a68d42397034e6f08a (diff) | |
| download | smart-home-2a5eaad1bcac0f0ff61bd82b6427932cb4d03872.tar.gz | |
Copy working NRFM code.
Diffstat (limited to 'lock/back.c')
| -rw-r--r-- | lock/back.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/lock/back.c b/lock/back.c new file mode 100644 index 0000000..c5dc35e --- /dev/null +++ b/lock/back.c @@ -0,0 +1,64 @@ +#include <stdint.h> +#include <stdlib.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 s[2]; + 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) { + n = radio_recv(buf, MAXPDLEN); + buf[n] = '\0'; + uart_write("Received data: "); + uart_write(itoa(n, s, 10)); + uart_write_line(" bytes"); + 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; +} |
