diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2024-11-17 17:09:27 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2024-11-17 17:09:27 +0800 |
| commit | 956a9c26e42d842a0c49c3bf9aa3f71c00c49488 (patch) | |
| tree | 91d513ce47897f9b6e3ce621ab9726d9252141be /rf_test/recv.c | |
| parent | 7f568115a564740c1f8b9573de72eb79f48f169a (diff) | |
| download | smart-home-956a9c26e42d842a0c49c3bf9aa3f71c00c49488.tar.gz | |
Lower baud rate.
Diffstat (limited to 'rf_test/recv.c')
| -rw-r--r-- | rf_test/recv.c | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/rf_test/recv.c b/rf_test/recv.c index 02fab41..a908bbe 100644 --- a/rf_test/recv.c +++ b/rf_test/recv.c @@ -7,10 +7,10 @@ #define LOCK_LED PD6 #define UNLOCK_LED PD7 -#define SYN 0xA4 -#define ADDR 0x44 -#define LOCK_CMD 0x11 -#define UNLOCK_CMD 0x22 +#define SYN 0xA1 +#define FIN 0xB2 +#define LOCK 0xC3 +#define UNLOCK 0xD3 static void usart_init(void) { @@ -30,6 +30,7 @@ static void led_init(void) { DDRB |= (1 << TEST_LED); DDRD |= (1 << LOCK_LED) | (1 << UNLOCK_LED); + PORTD |= (1 << LOCK_LED) | (1 << UNLOCK_LED); } int main(void) @@ -45,38 +46,35 @@ int main(void) return 0; } -static inline int is_btn_pressed(unsigned char btn) +ISR(USART_RX_vect) { - if (!((PIND >> btn) & 0x01)) { - _delay_us(2000); - return !((PIND >> btn) & 0x01); - } + unsigned char data, buf; + + data = 0; + buf = usart_recv(); - return 0; -} + if (buf == SYN) { + buf = usart_recv(); -ISR(USART_RX_vect) -{ - unsigned char syn, addr, data, chk; - - syn = usart_recv(); - addr = usart_recv(); - data = usart_recv(); - chk = usart_recv(); - - if(chk == (addr + data)) - { - if(addr == ADDR) - { - if(data == LOCK_CMD) { - PORTD |= (1 << LOCK_LED); - PORTD &= ~(1 << UNLOCK_LED); - - } else if (data == UNLOCK_LED) { - PORTD |= (1 << UNLOCK_LED); - PORTD &= ~(1 << LOCK_LED); + while (buf != FIN) { + buf = usart_recv(); + + if (buf == SYN) { + PORTB ^= (1 << TEST_LED); + return; } + + if (buf != FIN) + data = buf; + } + + if(data == LOCK) { + PORTD |= (1 << LOCK_LED); + PORTD &= ~(1 << UNLOCK_LED); + } else if (data == UNLOCK) { + PORTD |= (1 << UNLOCK_LED); + PORTD &= ~(1 << LOCK_LED); } - PORTB ^= (1 << TEST_LED); } + } |
