aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/Peripheral
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-05-07 11:12:23 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-05-07 11:12:23 +0000
commitc7aceb2c7f625b8256dfe4f80177beb63911979a (patch)
tree18304bbc8d1117bb3f33998801b831e962602dfa /LUFA/Drivers/Peripheral
parent938f86d06321c1a29cf87201000a9dae4e5a7c25 (diff)
downloadlufa-c7aceb2c7f625b8256dfe4f80177beb63911979a.tar.gz
lufa-c7aceb2c7f625b8256dfe4f80177beb63911979a.tar.bz2
lufa-c7aceb2c7f625b8256dfe4f80177beb63911979a.zip
Serial driver now correctly calculates the baud register value when in double speed mode.
Init function of the Serial driver is now static inline to product smaller code for the common-case of static init.
Diffstat (limited to 'LUFA/Drivers/Peripheral')
-rw-r--r--LUFA/Drivers/Peripheral/Serial.c12
-rw-r--r--LUFA/Drivers/Peripheral/Serial.h27
2 files changed, 19 insertions, 20 deletions
diff --git a/LUFA/Drivers/Peripheral/Serial.c b/LUFA/Drivers/Peripheral/Serial.c
index e1c744922..f9aa6a732 100644
--- a/LUFA/Drivers/Peripheral/Serial.c
+++ b/LUFA/Drivers/Peripheral/Serial.c
@@ -30,18 +30,6 @@
#include "Serial.h"
-void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed)
-{
- UCSR1A = ((DoubleSpeed) ? (1 << U2X1) : 0);
- UCSR1B = ((1 << RXEN1) | (1 << TXEN1));
- UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10));
-
- DDRD |= (1 << 3);
- PORTD |= (1 << 2);
-
- UBRR1 = SERIAL_UBBRVAL(BaudRate);
-}
-
void Serial_TxString_P(const char *FlashStringPtr)
{
uint8_t CurrByte;
diff --git a/LUFA/Drivers/Peripheral/Serial.h b/LUFA/Drivers/Peripheral/Serial.h
index a50456b37..7e718fe0c 100644
--- a/LUFA/Drivers/Peripheral/Serial.h
+++ b/LUFA/Drivers/Peripheral/Serial.h
@@ -63,7 +63,7 @@
#endif
/* Public Interface - May be used in end-application: */
- /* Macros: */
+ /* Macros: */
/** Macro for calculating the baud value from a given baud rate when the U2X (double speed) bit is
* not set.
*/
@@ -86,13 +86,6 @@
#endif
/* Function Prototypes: */
- /** Initializes the USART, ready for serial data transmission and reception.
- *
- * \param BaudRate Baud rate to configure the USART to
- * \param DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate
- */
- void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed);
-
/** Transmits a given string located in program space (FLASH) through the USART.
*
* \param FlashStringPtr Pointer to a string located in program space
@@ -106,6 +99,24 @@
void Serial_TxString(const char *StringPtr) ATTR_NON_NULL_PTR_ARG(1);
/* Inline Functions: */
+ /** Initializes the USART, ready for serial data transmission and reception. This initialises the interface to
+ * standard 8-bit, no parity, 1 stop bit settings suitable for most applications.
+ *
+ * \param BaudRate Serial baud rate, in bits per second
+ * \param DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate
+ */
+ static inline void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed)
+ {
+ UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0);
+ UCSR1B = ((1 << TXEN1) | (1 << RXEN1));
+ UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10));
+
+ DDRD |= (1 << 3);
+ PORTD |= (1 << 2);
+
+ UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate));
+ }
+
/** Transmits a given byte through the USART.
*
* \param DataByte Byte to transmit through the USART