Commit ca007f91 authored by Dean Camera's avatar Dean Camera
Browse files

Fixed Benito and USBtoSerial projects not turning off the USART before...

Fixed Benito and USBtoSerial projects not turning off the USART before reconfiguring it, which could cause incorrect operation to occur (thanks to Bob Paddock).
parent 62022252
...@@ -60,6 +60,8 @@ ...@@ -60,6 +60,8 @@
* - Fixed HID device class driver still using PrevReportINBuffer for GetReport control requests even when it has been * - Fixed HID device class driver still using PrevReportINBuffer for GetReport control requests even when it has been
* set to NULL by the user application (thanks to Axel Rohde) * set to NULL by the user application (thanks to Axel Rohde)
* - Fixed MIDI_Device_SendEventPacket() not correctly waiting for the endpoint to become ready (thanks to Robin Green) * - 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)
* *
* \section Sec_ChangeLog100513 Version 100513 * \section Sec_ChangeLog100513 Version 100513
* <b>New:</b> * <b>New:</b>
......
...@@ -235,10 +235,18 @@ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCI ...@@ -235,10 +235,18 @@ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCI
break; break;
} }
/* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */
UCSR1A = 0;
UCSR1B = 0;
UCSR1C = 0;
/* Set the new baud rate before configuring the USART */
UBRR1 = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
/* Reconfigure the USART in double speed mode for a wider baud rate range at the expense of accuracy */
UCSR1A = (1 << U2X1); UCSR1A = (1 << U2X1);
UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1));
UCSR1C = ConfigMask; UCSR1C = ConfigMask;
UBRR1 = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
} }
/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer /** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer
......
...@@ -120,7 +120,6 @@ void SetupHardware(void) ...@@ -120,7 +120,6 @@ void SetupHardware(void)
clock_prescale_set(clock_div_1); clock_prescale_set(clock_div_1);
/* Hardware Initialization */ /* Hardware Initialization */
Serial_Init(9600, false);
LEDs_Init(); LEDs_Init();
USB_Init(); USB_Init();
...@@ -200,8 +199,16 @@ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCI ...@@ -200,8 +199,16 @@ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCI
break; break;
} }
/* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */
UCSR1A = 0;
UCSR1B = 0;
UCSR1C = 0;
/* Set the new baud rate before configuring the USART */
UBRR1 = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
/* Reconfigure the USART in double speed mode for a wider baud rate range at the expense of accuracy */
UCSR1A = (1 << U2X1); UCSR1A = (1 << U2X1);
UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1));
UCSR1C = ConfigMask; UCSR1C = ConfigMask;
UBRR1 = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment