summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2024-11-17 15:36:40 +0800
committerSadeep Madurange <sadeep@asciimx.com>2024-11-17 15:36:40 +0800
commit7da764b02292397dd355c2599891bb01086fb4f3 (patch)
tree61b789a17fc79ac29d88afa4e106cfcc372be170
parentaa3e5e52f9178ea922c658888d79e15b904eb2f9 (diff)
downloadsmart-home-7da764b02292397dd355c2599891bb01086fb4f3.tar.gz
Some signalling is happening now!
-rw-r--r--rf_test/Recv.Makefile2
-rw-r--r--rf_test/Send.Makefile2
-rw-r--r--rf_test/recv.c40
-rw-r--r--rf_test/send.c74
4 files changed, 68 insertions, 50 deletions
diff --git a/rf_test/Recv.Makefile b/rf_test/Recv.Makefile
index a517111..02c0b34 100644
--- a/rf_test/Recv.Makefile
+++ b/rf_test/Recv.Makefile
@@ -9,7 +9,7 @@ CFLAGS = -std=gnu99
CFLAGS += -Os
CFLAGS += -Wall
CFLAGS += -mmcu=$(MCU)
-CFLAGS += -DBAUD=115200
+CFLAGS += -DBAUD=9600
CFLAGS += -DF_CPU=16000000UL
CFLAGS += -ffunction-sections -fdata-sections
diff --git a/rf_test/Send.Makefile b/rf_test/Send.Makefile
index f4d4511..a6bb6f0 100644
--- a/rf_test/Send.Makefile
+++ b/rf_test/Send.Makefile
@@ -9,7 +9,7 @@ CFLAGS = -std=gnu99
CFLAGS += -Os
CFLAGS += -Wall
CFLAGS += -mmcu=$(MCU)
-CFLAGS += -DBAUD=115200
+CFLAGS += -DBAUD=9600
CFLAGS += -DF_CPU=16000000UL
CFLAGS += -ffunction-sections -fdata-sections
diff --git a/rf_test/recv.c b/rf_test/recv.c
index 79d3294..1e1a21c 100644
--- a/rf_test/recv.c
+++ b/rf_test/recv.c
@@ -15,12 +15,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 << RXEN0) | (1 << RXCIE0);
UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
}
@@ -61,25 +56,28 @@ static inline int is_btn_pressed(unsigned char btn)
ISR(USART_RX_vect)
{
- unsigned char addr, data, chk;
+ unsigned char syn, addr, data, chk;
+ PORTD ^= ((1 << LOCK_LED) | (1 << UNLOCK_LED));
+
+ 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);
- }
- }
- }
+ //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);
+ // }
+ // }
+ //}
}
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();
+ }
}