]> git.tdb.fi Git - model-railway-devices.git/blobdiff - firmware/serial.c
Support multiple timers (currently 0 and 1)
[model-railway-devices.git] / firmware / serial.c
index b7219ae337381b724c0bcd0877185bbf2f8dda69..be3b13a925946015c096b103f0b849e2793acbc0 100644 (file)
@@ -1,11 +1,15 @@
+/* $Id$
+
+This file is part of the MSP Märklin suite
+Copyright © 2010  Mikkosoft Productions, Mikko Rasa
+Distributed under the GPL
+*/
+
 #include <avr/io.h>
-#include <avr/interrupt.h>
 #include "serial.h"
 
 #define BIT(n) (1<<(n))
 
-static SerialCallback *serial_callback = 0;
-
 void serial_init(uint16_t baud)
 {
        DDRD = (DDRD&~0x03) | 0x02;
@@ -15,13 +19,7 @@ void serial_init(uint16_t baud)
        UBRR0H = baud>>8;
        UBRR0L = baud;
        UCSR0C = BIT(UCSZ00) | BIT(UCSZ01);  // 8N1
-       UCSR0B = BIT(RXEN0) | BIT(TXEN0);
-}
-
-void serial_set_callback(SerialCallback *cb)
-{
-       serial_callback = cb;
-       UCSR0B |= BIT(RXCIE0);
+       UCSR0B = BIT(RXEN0) | BIT(TXEN0) | BIT(RXCIE0);
 }
 
 void serial_write(uint8_t c)
@@ -29,8 +27,3 @@ void serial_write(uint8_t c)
        while(!(UCSR0A&(1<<UDRE0))) ;
        UDR0 = c;
 }
-
-ISR(USART_RX_vect)
-{
-       serial_callback(UDR0);
-}