]> git.tdb.fi Git - model-railway-devices.git/blob - firmware/serial.c
be3b13a925946015c096b103f0b849e2793acbc0
[model-railway-devices.git] / firmware / serial.c
1 /* $Id$
2
3 This file is part of the MSP Märklin suite
4 Copyright © 2010  Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
6 */
7
8 #include <avr/io.h>
9 #include "serial.h"
10
11 #define BIT(n) (1<<(n))
12
13 void serial_init(uint16_t baud)
14 {
15         DDRD = (DDRD&~0x03) | 0x02;
16         PORTD &= ~0x03;
17
18         baud = (F_CPU/16+baud/2)/baud-1;
19         UBRR0H = baud>>8;
20         UBRR0L = baud;
21         UCSR0C = BIT(UCSZ00) | BIT(UCSZ01);  // 8N1
22         UCSR0B = BIT(RXEN0) | BIT(TXEN0) | BIT(RXCIE0);
23 }
24
25 void serial_write(uint8_t c)
26 {
27         while(!(UCSR0A&(1<<UDRE0))) ;
28         UDR0 = c;
29 }