voidHardwareSerial::begin(unsignedlongbaud,byteconfig){// Try u2x mode first
uint16_tbaud_setting=(F_CPU/4/baud-1)/2;*_ucsra=1<<U2X0;// hardcoded exception for 57600 for compatibility with the bootloader
// shipped with the Duemilanove and previous boards and the firmware
// on the 8U2 on the Uno and Mega 2560. Also, The baud_setting cannot
// be > 4095, so switch back to non-u2x mode if the baud rate is too
// low.
if(((F_CPU==16000000UL)&&(baud==57600))||(baud_setting>4095)){*_ucsra=0;baud_setting=(F_CPU/8/baud-1)/2;}// assign the baud_setting, a.k.a. ubrr (USART Baud Rate Register)
*_ubrrh=baud_setting>>8;*_ubrrl=baud_setting;_written=false;//set the data bits, parity, and stop bits
*_ucsrc=config;sbi(*_ucsrb,RXEN0);sbi(*_ucsrb,TXEN0);sbi(*_ucsrb,RXCIE0);cbi(*_ucsrb,UDRIE0);}
// hardcoded exception for 57600 for compatibility with the bootloader
// shipped with the Duemilanove and previous boards and the firmware
// on the 8U2 on the Uno and Mega 2560. Also, The baud_setting cannot
// be > 4095, so switch back to non-u2x mode if the baud rate is too
// low.
if(((F_CPU==16000000UL)&&(baud==57600))||(baud_setting>4095)){*_ucsra=0;baud_setting=(F_CPU/8/baud-1)/2;}