From e577f0bf8fb839698a15dcd3464cfb83fa941a03 Mon Sep 17 00:00:00 2001 From: Michael Buesch Date: Sun, 26 Oct 2008 16:03:45 +0100 Subject: pressure_control: Use UART rate with less error Signed-off-by: Michael Buesch --- pressure_control/firmware/remote.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'pressure_control/firmware') diff --git a/pressure_control/firmware/remote.c b/pressure_control/firmware/remote.c index 29b15b4..be360e5 100644 --- a/pressure_control/firmware/remote.c +++ b/pressure_control/firmware/remote.c @@ -29,7 +29,8 @@ #include -#define BAUDRATE 115200 +#define BAUDRATE 38400 /* Error = 0.2% */ +#define USE_2X 0 static struct remote_message rx_msg; @@ -329,14 +330,22 @@ void remote_pressure_change_notification(uint16_t mbar, send_message(&msg); } +#if USE_2X +# define UBRR_FACTOR 2 +#else +# define UBRR_FACTOR 1 +#endif + static void usart_init(void) { uint8_t dummy; /* Set baud rate */ - UBRRL = lo8((CPU_HZ / 16 / BAUDRATE) * 2); - UBRRH = hi8((CPU_HZ / 16 / BAUDRATE) * 2) & ~(1 << URSEL); + UBRRL = lo8((CPU_HZ / 16 / BAUDRATE) * UBRR_FACTOR); + UBRRH = hi8((CPU_HZ / 16 / BAUDRATE) * UBRR_FACTOR) & ~(1 << URSEL); +#if USE_2X UCSRA = (1 << U2X); +#endif /* 8 Data bits, 1 Stop bit, No parity */ UCSRC = (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); /* Enable transceiver and RX IRQs */ -- cgit v1.2.3