aboutsummaryrefslogtreecommitdiff
path: root/cores/arduino/HardwareSerial.cpp
diff options
context:
space:
mode:
authorMatthijs Kooijman <matthijs@stdin.nl>2013-04-19 15:29:43 +0200
committerCristian Maglie <c.maglie@bug.st>2014-01-16 13:20:11 +0100
commit4bc8aa15e3309496e2adf98b5933e4825341df07 (patch)
treea086b903d5bc05c5bd38e708a01acb2210b7e802 /cores/arduino/HardwareSerial.cpp
parent46b0ada9a941607de0a2df80bf7f58d3a959ff57 (diff)
Remove duplicate code from HardwareSerial::begin() methods.
There are two begin methods, one which accepts just a baud rate and uses the default bit settings and one which accepts both a baudrate and a bit config. Previously, both of these contained a complete implementation, but now the former just calls the latter, explicitely passing the default 8N1 configuration. Technically, this causes a small change: Before the UCSRC register was untouched when calling begin(baud), now it is explicitely initialized with 8N1. However, since this is the default configuration for at least the Uno and the Mega (didn't check any others), probably for all avrs, this shouldn't effectively change anything. Given that the Arduino documentation also documents this as the default when none is passed, explicitly setting it is probably a good idea in any case.
Diffstat (limited to 'cores/arduino/HardwareSerial.cpp')
-rw-r--r--cores/arduino/HardwareSerial.cpp39
1 files changed, 1 insertions, 38 deletions
diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp
index 9a86fa0..f95fa5d 100644
--- a/cores/arduino/HardwareSerial.cpp
+++ b/cores/arduino/HardwareSerial.cpp
@@ -283,44 +283,7 @@ HardwareSerial::HardwareSerial(
void HardwareSerial::begin(unsigned long baud)
{
- uint16_t baud_setting;
- bool use_u2x = true;
-
-#if F_CPU == 16000000UL
- // hardcoded exception for compatibility with the bootloader shipped
- // with the Duemilanove and previous boards and the firmware on the 8U2
- // on the Uno and Mega 2560.
- if (baud == 57600) {
- use_u2x = false;
- }
-#endif
-
-try_again:
-
- if (use_u2x) {
- *_ucsra = 1 << _u2x;
- baud_setting = (F_CPU / 4 / baud - 1) / 2;
- } else {
- *_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;
- *_ubrrl = baud_setting;
-
- transmitting = false;
-
- sbi(*_ucsrb, _rxen);
- sbi(*_ucsrb, _txen);
- sbi(*_ucsrb, _rxcie);
- cbi(*_ucsrb, _udrie);
+ begin(baud, SERIAL_8N1);
}
void HardwareSerial::begin(unsigned long baud, byte config)