Export to GitHub

arduino - issue #1152

Serial.flush() returns before last character is transmitted (Still not working)


Posted on Jun 18, 2015 by Swift Bird

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!

Attachments

Status: New

Labels:
Type-Defect Priority-Medium