
arduino - issue #1152
Serial.flush() returns before last character is transmitted (Still not working)
Hello,
After reading Issue: https://code.google.com/p/arduino/issues/detail?id=871&can=1&q=Serial.flush I still don't get it working. (I'm back to the beginning code for HardwareSerial::flush.)
Now working with - Arduino 1.6.4. - Arduino Due + RS-485 module for Arduino (MAX485 ) - Arduino Uno + RS485 Shield V2 - 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 )
Can anybody give me a hint/tip?
Tnx!
- HardwareSerial.cpp 8.16KB
Status: New
Labels:
Type-Defect
Priority-Medium