* - Changed LED board driver code to define dummy LED masks for the first four board LEDs, so that user code can be compiled for boards\r
* with less than four LEDs without code modifications (thanks to Morten Lund)\r
* - Changed HWB board driver to Buttons driver, to allow for the support of future boards with more than one mounted GPIO button\r
+ * - Serial driver now correctly calculates the baud register value when in double speed mode\r
+ * - Init function of the Serial driver is now static inline to product smaller code for the common-case of static init values\r
* \r
*\r
* \section Sec_ChangeLog090401 Version 090401\r
\r
#include "Serial.h"\r
\r
-void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed)\r
-{\r
- UCSR1A = ((DoubleSpeed) ? (1 << U2X1) : 0);\r
- UCSR1B = ((1 << RXEN1) | (1 << TXEN1));\r
- UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10));\r
- \r
- DDRD |= (1 << 3); \r
- PORTD |= (1 << 2);\r
- \r
- UBRR1 = SERIAL_UBBRVAL(BaudRate);\r
-}\r
-\r
void Serial_TxString_P(const char *FlashStringPtr)\r
{\r
uint8_t CurrByte;\r
#endif\r
\r
/* Public Interface - May be used in end-application: */\r
- /* Macros: */ \r
+ /* Macros: */\r
/** Macro for calculating the baud value from a given baud rate when the U2X (double speed) bit is\r
* not set.\r
*/\r
#endif\r
\r
/* Function Prototypes: */\r
- /** Initializes the USART, ready for serial data transmission and reception.\r
- *\r
- * \param BaudRate Baud rate to configure the USART to\r
- * \param DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate\r
- */\r
- void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed);\r
-\r
/** Transmits a given string located in program space (FLASH) through the USART.\r
*\r
* \param FlashStringPtr Pointer to a string located in program space\r
void Serial_TxString(const char *StringPtr) ATTR_NON_NULL_PTR_ARG(1);\r
\r
/* Inline Functions: */\r
+ /** Initializes the USART, ready for serial data transmission and reception. This initialises the interface to\r
+ * standard 8-bit, no parity, 1 stop bit settings suitable for most applications.\r
+ *\r
+ * \param BaudRate Serial baud rate, in bits per second\r
+ * \param DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate\r
+ */\r
+ static inline void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed)\r
+ {\r
+ UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0);\r
+ UCSR1B = ((1 << TXEN1) | (1 << RXEN1));\r
+ UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10));\r
+ \r
+ DDRD |= (1 << 3); \r
+ PORTD |= (1 << 2);\r
+ \r
+ UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate));\r
+ }\r
+\r
/** Transmits a given byte through the USART.\r
*\r
* \param DataByte Byte to transmit through the USART\r