From 3268a6c4ab856a026a7ab659d036a5a7ef642089 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 4 Feb 2012 14:39:58 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3914 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/platforms/AVR/serial_lld.h | 22 +++++++++++++++++++++- readme.txt | 2 ++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/os/hal/platforms/AVR/serial_lld.h b/os/hal/platforms/AVR/serial_lld.h index c383b6c70..bcaea51c1 100644 --- a/os/hal/platforms/AVR/serial_lld.h +++ b/os/hal/platforms/AVR/serial_lld.h @@ -106,7 +106,27 @@ typedef struct { * @brief Macro for baud rate computation. * @note Make sure the final baud rate is within tolerance. */ -#define UBRR(b) (((F_CPU / b) >> 4) - 1) +#define UBRR(b) (((F_CPU / b) >> 4) - 1) + +/** + * @brief Macro for baud rate computationwhen U2Xn == 1. + * @note Make sure the final baud rate is within tolerance. + */ +#define UBRR2(b) (((F_CPU / b) >> 3) - 1) + +/** +* @brief Macro for baud rate computation. +* @note Make sure the final baud rate is within tolerance. +* @note This version uses floating point math for greater accuracy. +*/ +#define UBRR_F(b) ((((double) F_CPU / (double) b) / 16.0) - 0.5) + +/** +* @brief Macro for baud rate computation when U2Xn == 1. +* @note Make sure the final baud rate is within tolerance. +* @note This version uses floating point math for greater accuracy. +*/ +#define UBRR2_F(b) ((((double) F_CPU / (double) b) / 8.0) - 0.5) /*===========================================================================*/ /* External declarations. */ diff --git a/readme.txt b/readme.txt index 8a6a42644..2e057664c 100644 --- a/readme.txt +++ b/readme.txt @@ -79,6 +79,8 @@ *** 2.5.0 *** - NEW: Updated debug plugin 1.0.8 (backported to 2.4.0). +- NEW: Added more accurate UBRR calculation in AVR serial driver (backported + to 2.4.0). *** 2.3.5 *** - FIX: Fixed RTC compile problem on STM32F103 (bug 3468445). -- cgit v1.2.3