X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=common%2Fserial.c;fp=common%2Fserial.c;h=2bf6901836064ece4517047dcb8d94f70838d99f;hb=9c37d18b9c70fdb70dfec453398c4649e9e57586;hp=0000000000000000000000000000000000000000;hpb=49b6b6ad84ec47b4f9eb9ef131975cc5b72372a2;p=model-railway-devices.git diff --git a/common/serial.c b/common/serial.c new file mode 100644 index 0000000..2bf6901 --- /dev/null +++ b/common/serial.c @@ -0,0 +1,22 @@ +#include +#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<