With HardwareSerial::flush(code) ->
void HardwareSerial::flush()
{
// If we have never written a byte, no need to flush. This special
// case is needed since there is no way to force the TXC (transmit
// complete) bit to 1 during initialization
if (!_written)
return;
while (bit_is_set(_ucsrb, UDRIE0) || bit_is_clear(_ucsra, TXC0)) {
if (bit_is_clear(SREG, SREG_I) && bit_is_set(_ucsrb, UDRIE0))
// Interrupts are globally disabled, but the DR empty
// interrupt should be enabled, so poll the DR empty flag to
// prevent deadlock
if (bit_is_set(_ucsra, UDRE0))
_tx_udr_empty_irq();
}
// If we get here, nothing is queued anymore (DRIE is disabled) and
// the hardware finished tranmission (TXC is set).
}
The configuration is working, but the last character is wrongly received.
From Due -> Uno:
helloUno -> helloUnĂ¿ (See last character )
PaulS:
If you want the sender to sleep, using Serial.flush() is necessary. Without it, the serial data does not get send until the Arduino wakes up again.
I do know what Serial.flush() is for. I just did not realize the OP wanted to put his Arduino to sleep after the data was sent..
PaulS:
If you want the sender to sleep, using Serial.flush() is necessary. Without it, the serial data does not get send until the Arduino wakes up again.
If ever. If it shuts down the serial hardware the byte might get partially sent.