void USART_Init0(const uint32_t BaudRate) { #ifdef UCSR0A UCSR0A = 0; UCSR0B = ((1 << RXEN0) | (1 << TXEN0)); UCSR0C = ((1 << UCSZ01) | (1 << UCSZ00)); UBRR0 = SERIAL_UBBRVAL(BaudRate); #else UCR = ((1 << RXEN) | (1 << TXEN)); UBRR = SERIAL_UBBRVAL(BaudRate); #endif }
void Serial_Init(const uint16_t BaudRate) { UCSR1A = 0; UCSR1B = ((1 << RXEN1) | (1 << TXEN1)); UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10)); UBRR1 = SERIAL_UBBRVAL(BaudRate); }
void USART_Init1(const uint32_t BaudRate) { #ifdef UCSR1A UCSR1A = 0; UCSR1B = ((1 << RXEN1) | (1 << TXEN1)); UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10)); UBRR1 = SERIAL_UBBRVAL(BaudRate); #endif }
void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed) { UCSR1A = ((DoubleSpeed) ? (1 << U2X1) : 0); UCSR1B = ((1 << RXEN1) | (1 << TXEN1)); UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10)); DDRD |= (1 << 3); PORTD |= (1 << 2); UBRR1 = SERIAL_UBBRVAL(BaudRate); }
/************************************************************************* Function: uart_init() Purpose: initialize UART and set baudrate Input: baudrate using macro UART_BAUD_SELECT() Returns: none **************************************************************************/ void uart_init(uint32_t baudrate, bool doublespeed) { UART_TxHead = 0; UART_TxTail = 0; UART_RxHead = 0; UART_RxTail = 0; UBRR1 = (doublespeed ? SERIAL_2X_UBBRVAL(baudrate) : SERIAL_UBBRVAL(baudrate)); UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10)); UCSR1A = (doublespeed ? (1 << U2X1) : 0); UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); DDRD |= (1 << 3); PORTD |= (1 << 2); }/* uart_init */
/** Event handler for the CDC Class driver Line Encoding Changed event. * * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced */ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { uint8_t ConfigMask = 0; switch (CDCInterfaceInfo->State.LineEncoding.ParityType) { case CDC_PARITY_Odd: ConfigMask = ((1 << UPM11) | (1 << UPM10)); break; case CDC_PARITY_Even: ConfigMask = (1 << UPM11); break; } if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits) ConfigMask |= (1 << USBS1); switch (CDCInterfaceInfo->State.LineEncoding.DataBits) { case 6: ConfigMask |= (1 << UCSZ10); break; case 7: ConfigMask |= (1 << UCSZ11); break; case 8: ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10)); break; } /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */ UCSR1B = 0; UCSR1A = 0; UCSR1C = 0; /* Special case 57600 baud for compatibility with the ATmega328 bootloader. */ UBRR1 = (CDCInterfaceInfo->State.LineEncoding.BaudRateBPS == 57600) ? SERIAL_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS) : SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS); UCSR1C = ConfigMask; UCSR1A = (CDCInterfaceInfo->State.LineEncoding.BaudRateBPS == 57600) ? 0 : (1 << U2X1); UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); }
/** Event handler for the CDC Class driver Line Encoding Changed event. * * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced */ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { uint8_t ConfigMask = 0; switch (CDCInterfaceInfo->State.LineEncoding.ParityType) { case CDC_PARITY_Odd: ConfigMask = ((1 << UPM11) | (1 << UPM10)); break; case CDC_PARITY_Even: ConfigMask = (1 << UPM11); break; } if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits) ConfigMask |= (1 << USBS1); switch (CDCInterfaceInfo->State.LineEncoding.DataBits) { case 6: ConfigMask |= (1 << UCSZ10); break; case 7: ConfigMask |= (1 << UCSZ11); break; case 8: ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10)); break; } /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */ UCSR1B = 0; UCSR1A = 0; UCSR1C = 0; /* Set the new baud rate before configuring the USART */ // UBRR1 = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS); UBRR1 = SERIAL_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 = (0 << U2X1); UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); }