- /* 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[in] BaudRate Serial baud rate, in bits per second\r
- * \param[in] 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
- /** Turns off the USART driver, disabling and returning used hardware to their default configuration. */\r
- static inline void Serial_ShutDown(void)\r
- {\r
- UCSR1A = 0;\r
- UCSR1B = 0;\r
- UCSR1C = 0;\r
- \r
- DDRD &= ~(1 << 3); \r
- PORTD &= ~(1 << 2);\r
- \r
- UBRR1 = 0;\r
- }\r
- \r
- /** Transmits a given byte through the USART.\r
- *\r
- * \param[in] DataByte Byte to transmit through the USART\r
- */\r
- static inline void Serial_TxByte(const char DataByte)\r
- {\r
- while (!(UCSR1A & (1 << UDRE1)));\r
- UDR1 = DataByte;\r
- }\r
-\r
- /** Receives a byte from the USART.\r
- *\r
- * \return Byte received from the USART\r
- */\r
- static inline char Serial_RxByte(void)\r
- {\r
- while (!(UCSR1A & (1 << RXC1)));\r
- return UDR1; \r
- }\r
-\r