From 7da764b02292397dd355c2599891bb01086fb4f3 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sun, 17 Nov 2024 15:36:40 +0800 Subject: Some signalling is happening now! --- rf_test/send.c | 74 +++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 27 deletions(-) (limited to 'rf_test/send.c') diff --git a/rf_test/send.c b/rf_test/send.c index 017d67b..b80c5a6 100644 --- a/rf_test/send.c +++ b/rf_test/send.c @@ -3,6 +3,7 @@ #include #include +#define LOCK_LED PB1 #define LOCK_BTN PD6 #define UNLOCK_BTN PD7 @@ -15,12 +16,7 @@ static void usart_init(void) { UBRR0H = UBRRH_VALUE; UBRR0L = UBRRL_VALUE; -#if USE_2X - UCSR0A |= (1 << U2X0); -#else - UCSR0A &= ~(1 << U2X0); -#endif - UCSR0B = (1 << TXEN0) | (1 << RXEN0); + UCSR0B = (1 << TXEN0); UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); } @@ -31,28 +27,16 @@ static void usart_send(unsigned char data) UDR0 = data; } -int main(void) +static inline void pcint2_init(void) { - usart_init(); - - for (;;) - ; - - return 0; -} - -static inline int is_btn_pressed(unsigned char btn) -{ - if (!((PIND >> btn) & 0x01)) { - _delay_us(2000); - return !((PIND >> btn) & 0x01); - } - - return 0; + PCICR |= (1 << PCIE2); + PCMSK2 |= ((1 << PCINT22) | (1 << PCINT23)); } static inline void lock(void) { + PORTB ^= (1 << LOCK_LED); + usart_send(SYN); usart_send(ADDR); usart_send(LOCK_CMD); @@ -61,17 +45,53 @@ static inline void lock(void) static inline void unlock(void) { + PORTB ^= (1 << LOCK_LED); + usart_send(SYN); usart_send(ADDR); usart_send(UNLOCK_CMD); usart_send(UNLOCK_CMD + ADDR); } -ISR(PCINT2_vect) +int main(void) { - if (is_btn_pressed(LOCK_BTN)) - lock(); + DDRB |= (1 << LOCK_LED); + PORTB |= (1 << LOCK_LED); + + usart_init(); + //pcint2_init(); - if (is_btn_pressed(UNLOCK_BTN)) + //sei(); + + for (;;) { + _delay_ms(2000); + lock(); + _delay_ms(2000); unlock(); + } + + return 0; +} + +static inline int is_btn_pressed(unsigned char btn) +{ + if (!((PIND >> btn) & 0x01)) { + _delay_us(2000); + return !((PIND >> btn) & 0x01); + } + + return 0; +} + +ISR(PCINT2_vect) +{ + if (is_btn_pressed(LOCK_BTN)) { + PORTB ^= (1 << LOCK_LED); + //lock(); + } + + if (is_btn_pressed(UNLOCK_BTN)) { + PORTB ^= (1 << LOCK_LED); + //unlock(); + } } -- cgit v1.2.3