]> git.tdb.fi Git - model-railway-devices.git/blobdiff - common/serial.c
Reorganize the directory structure
[model-railway-devices.git] / common / serial.c
diff --git a/common/serial.c b/common/serial.c
new file mode 100644 (file)
index 0000000..2bf6901
--- /dev/null
@@ -0,0 +1,22 @@
+#include <avr/io.h>
+#include "serial.h"
+
+#define BIT(n) (1<<(n))
+
+void serial_init(uint16_t baud)
+{
+       DDRD = (DDRD&~0x03) | 0x02;
+       PORTD &= ~0x03;
+
+       baud = (F_CPU/16+baud/2)/baud-1;
+       UBRR0H = baud>>8;
+       UBRR0L = baud;
+       UCSR0C = BIT(UCSZ00) | BIT(UCSZ01);  // 8N1
+       UCSR0B = BIT(RXEN0) | BIT(TXEN0) | BIT(RXCIE0);
+}
+
+void serial_write(uint8_t c)
+{
+       while(!(UCSR0A&(1<<UDRE0))) ;
+       UDR0 = c;
+}