diff --git a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c index 892d1c21cdef0afac1c8b76b7ab71ab4bc0ee719..cab978a854aaaf4a10e96841f1b1d90e41a1e70c 100644 --- a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c +++ b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c @@ -53,13 +53,13 @@ TMC_Capabilities_t Capabilities = }; /** Current TMC control request that is being processed */ -uint8_t RequestInProgress = 0; +uint8_t RequestInProgress = 0; /** Stream callback abort flag for bulk IN data */ -bool IsTMCBulkINReset = false; +bool IsTMCBulkINReset = false; /** Stream callback abort flag for bulk OUT data */ -bool IsTMCBulkOUTReset = false; +bool IsTMCBulkOUTReset = false; /** Last used tag value for data transfers */ uint8_t CurrentTransferTag = 0; diff --git a/LUFA/Drivers/Peripheral/Serial.h b/LUFA/Drivers/Peripheral/Serial.h index 4eb74b9d2422608b6e1bbbc043ad50ef5151e7e1..47f65ea7bc5e3df85d85bc06ba518e984bf591ee 100644 --- a/LUFA/Drivers/Peripheral/Serial.h +++ b/LUFA/Drivers/Peripheral/Serial.h @@ -99,27 +99,27 @@ static inline void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed) { + UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate)); + + UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10)); UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0); UCSR1B = ((1 << TXEN1) | (1 << RXEN1)); - UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10)); - DDRD |= (1 << 3); + DDRD |= (1 << 3); PORTD |= (1 << 2); - - UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate)); } /** Turns off the USART driver, disabling and returning used hardware to their default configuration. */ static inline void Serial_ShutDown(void) { - UCSR1A = 0; UCSR1B = 0; + UCSR1A = 0; UCSR1C = 0; + + UBRR1 = 0; - DDRD &= ~(1 << 3); + DDRD &= ~(1 << 3); PORTD &= ~(1 << 2); - - UBRR1 = 0; } /** Indicates whether a character has been received through the USART. @@ -143,7 +143,9 @@ UDR1 = DataByte; } - /** Receives a byte from the USART. + /** Receives a byte from the USART. This function blocks until a byte has been + * received; if non-blocking behaviour is required, test for a received character + * beforehand with \ref Serial_IsCharReceived(). * * \return Byte received from the USART. */ diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 202cd2ce5e78e473c52599e70506eca6ecba6044..789cb898eb84da8804ed41b816bc15e6613294ee 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -65,6 +65,8 @@ * - Fixed MIDI_Device_SendEventPacket() not correctly waiting for the endpoint to become ready (thanks to Robin Green) * - Fixed Benito and USBtoSerial projects not turning off the USART before reconfiguring it, which could cause incorrect * operation to occur (thanks to Bob Paddock) + * - Fixed Serial peripheral driver not turning off the USART before reconfiguring it, which would cause incorrect operation + * to occur (thanks to Bob Paddock) * * \section Sec_ChangeLog100513 Version 100513 * <b>New:</b> diff --git a/Projects/USBtoSerial/USBtoSerial.c b/Projects/USBtoSerial/USBtoSerial.c index d7df3d91fb46a0fb99a7094198af86878f667439..4f3fcf524d8a3291095200692d1569da724e95d3 100644 --- a/Projects/USBtoSerial/USBtoSerial.c +++ b/Projects/USBtoSerial/USBtoSerial.c @@ -86,7 +86,7 @@ int main(void) if (!(ReceivedByte < 0) && !(RingBuffer_IsFull(&USBtoUSART_Buffer))) RingBuffer_AtomicInsert(&USBtoUSART_Buffer, (uint8_t)ReceivedByte); - /* Check if the software USART flush timer has expired */ + /* Check if the UART receive buffer flush timer has expired */ if (TIFR0 & (1 << TOV0)) { TIFR0 |= (1 << TOV0); diff --git a/Projects/XPLAINBridge/XPLAINBridge.c b/Projects/XPLAINBridge/XPLAINBridge.c index 7a1bcb34de5c25fdbf2e3e8b17fd40cc9ac771d4..7272fd825664b12409c0d0aad900eb44f35f6b30 100644 --- a/Projects/XPLAINBridge/XPLAINBridge.c +++ b/Projects/XPLAINBridge/XPLAINBridge.c @@ -124,7 +124,7 @@ void UARTBridge_Task(void) if (!(ReceivedByte < 0) && !(RingBuffer_IsFull(&USBtoUART_Buffer))) RingBuffer_AtomicInsert(&USBtoUART_Buffer, CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface)); - /* Check if the software UART flush timer has expired */ + /* Check if the UART receive buffer flush timer has expired */ if (TIFR0 & (1 << TOV0)) { TIFR0 |= (1 << TOV0);