summaryrefslogtreecommitdiffstats
path: root/powerswitch2/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'powerswitch2/main.c')
-rw-r--r--powerswitch2/main.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/powerswitch2/main.c b/powerswitch2/main.c
new file mode 100644
index 0000000..63e5d5c
--- /dev/null
+++ b/powerswitch2/main.c
@@ -0,0 +1,39 @@
+#include <avr/io.h>
+#include <util/delay.h>
+
+static inline void uart_init();
+int main()
+{
+ /* serial */
+ uart_init();
+
+ /* data input */
+ PORTB &= ~0x0F;
+ DDRB |= 0x0F;
+
+ for (;;)
+ {
+ while ((UCSRA & (1 << RXC)) == 0);
+ PORTB ^= UDR & 0x0F;
+
+ while ((UCSRA & (1 << UDRE)) == 0);
+ UDR = PORTB & 0x0F;
+ }
+
+ return 0;
+}
+
+static inline void uart_init()
+{
+ UCSRB |= (1 << RXEN) | (1 << TXEN);
+ UCSRC |= (1 << UCSZ0) | (1 << UCSZ1);
+#define BAUD 38400
+#include <util/setbaud.h>
+ UBRRH = UBRRH_VALUE;
+ UBRRL = UBRRL_VALUE;
+#if USE_2X
+ UCSRA |= (1 << U2X);
+#else
+ UCSRA &= ~(1 << U2X);
+#endif
+}