diff options
Diffstat (limited to 'Projects/USBtoSerial/USBtoSerial.c')
-rw-r--r-- | Projects/USBtoSerial/USBtoSerial.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/Projects/USBtoSerial/USBtoSerial.c b/Projects/USBtoSerial/USBtoSerial.c index 845c2a51c..05b4f8aff 100644 --- a/Projects/USBtoSerial/USBtoSerial.c +++ b/Projects/USBtoSerial/USBtoSerial.c @@ -1,7 +1,7 @@ /* LUFA Library Copyright (C) Dean Camera, 2010. - + dean [at] fourwalledcubicle [dot] com www.fourwalledcubicle.com */ @@ -9,13 +9,13 @@ /* Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -48,7 +48,7 @@ RingBuff_t USARTtoUSB_Buffer; */ USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface = { - .Config = + .Config = { .ControlInterfaceNumber = 0, @@ -72,7 +72,7 @@ USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface = int main(void) { SetupHardware(); - + RingBuffer_InitBuffer(&USBtoUSART_Buffer); RingBuffer_InitBuffer(&USARTtoUSB_Buffer); @@ -84,8 +84,8 @@ int main(void) /* Read bytes from the USB OUT endpoint into the USART transmit buffer */ int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface); if (!(ReceivedByte < 0) && !(RingBuffer_IsFull(&USBtoUSART_Buffer))) - RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte); - + RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte); + /* Check if the UART receive buffer flush timer has expired or the buffer is nearly full */ RingBuff_Count_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer); if ((TIFR0 & (1 << TOV0)) || (BufferCount > 200)) @@ -96,11 +96,11 @@ int main(void) while (BufferCount--) CDC_Device_SendByte(&VirtualSerial_CDC_Interface, RingBuffer_Remove(&USARTtoUSB_Buffer)); } - + /* Load the next byte from the USART transmit buffer into the USART */ if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) Serial_TxByte(RingBuffer_Remove(&USBtoUSART_Buffer)); - + CDC_Device_USBTask(&VirtualSerial_CDC_Interface); USB_USBTask(); } @@ -174,10 +174,10 @@ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCI switch (CDCInterfaceInfo->State.LineEncoding.ParityType) { case CDC_PARITY_Odd: - ConfigMask = ((1 << UPM11) | (1 << UPM10)); + ConfigMask = ((1 << UPM11) | (1 << UPM10)); break; case CDC_PARITY_Even: - ConfigMask = (1 << UPM11); + ConfigMask = (1 << UPM11); break; } @@ -204,9 +204,10 @@ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCI /* 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 */ UCSR1C = ConfigMask; UCSR1A = (1 << U2X1); UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); } + |