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.
pull/1469/head
Dean Camera 16 years ago
parent 938f86d063
commit c7aceb2c7f

@ -78,6 +78,8 @@
* - 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
* with less than four LEDs without code modifications (thanks to Morten Lund)
* - Changed HWB board driver to Buttons driver, to allow for the support of future boards with more than one mounted GPIO button
* - 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 values
*
*
* \section Sec_ChangeLog090401 Version 090401

@ -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;

@ -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

Loading…
Cancel
Save