summaryrefslogtreecommitdiffstats
path: root/rf_test/send.c
diff options
context:
space:
mode:
Diffstat (limited to 'rf_test/send.c')
-rw-r--r--rf_test/send.c74
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();
+ }
}