diff options
| -rw-r--r-- | cores/arduino/HardwareSerial.cpp | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index 38e87c4..b5dba1e 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -204,6 +204,8 @@ void HardwareSerial::begin(unsigned long baud)      use_u2x = false;    }  #endif + +try_again:    if (use_u2x) {      *_ucsra = 1 << _u2x; @@ -212,6 +214,12 @@ void HardwareSerial::begin(unsigned long baud)      *_ucsra = 0;      baud_setting = (F_CPU / 8 / baud - 1) / 2;    } +   +  if ((baud_setting > 4095) && use_u2x) +  { +    use_u2x = false; +    goto try_again; +  }    // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)    *_ubrrh = baud_setting >> 8;  | 
