diff options
Diffstat (limited to 'rf_test/send.c')
| -rw-r--r-- | rf_test/send.c | 74 |
1 files changed, 47 insertions, 27 deletions
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 <util/delay.h> #include <util/setbaud.h> +#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(); + } } |
