forked from mfulz_github/qmk_firmware
Fixed Serial peripheral driver not turning off the USART before reconfiguring it, which would cause incorrect operation to occur (thanks to Bob Paddock).
This commit is contained in:
parent
612df774d9
commit
9597b33c33
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
DDRD &= ~(1 << 3);
|
||||
PORTD &= ~(1 << 2);
|
||||
|
||||
|
||||
UBRR1 = 0;
|
||||
|
||||
DDRD &= ~(1 << 3);
|
||||
PORTD &= ~(1 << 2);
|
||||
}
|
||||
|
||||
/** 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.
|
||||
*/
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue