Функции вывода у SoftSerial - асинхронны или нет?

В инструкции сказано https://docs.arduino.cc/learn/built-in-libraries/software-serial/#print

“Prints data to the transmit pin of the SoftwareSerial object. Works the same as the Serial.print() function.”
Действительно ли данная функция так же асинхронна как и HardwareSerial-овская (то есть кладёт данные в буфер вывода и сразу возвращает управление, а данные потом отсылаются) ?

Нет.

Чтобы убедиться в этом, Вам достаточно было посмотреть

исходник
size_t SoftwareSerial::write(uint8_t b)
{
  if (_tx_delay == 0) {
    setWriteError();
    return 0;
  }

  // By declaring these as local variables, the compiler will put them
  // in registers _before_ disabling interrupts and entering the
  // critical timing sections below, which makes it a lot easier to
  // verify the cycle timings
  volatile uint8_t *reg = _transmitPortRegister;
  uint8_t reg_mask = _transmitBitMask;
  uint8_t inv_mask = ~_transmitBitMask;
  uint8_t oldSREG = SREG;
  bool inv = _inverse_logic;
  uint16_t delay = _tx_delay;

  if (inv)
    b = ~b;

  cli();  // turn off interrupts for a clean txmit

  // Write the start bit
  if (inv)
    *reg |= reg_mask;
  else
    *reg &= inv_mask;

  tunedDelay(delay);

  // Write each of the 8 bits
  for (uint8_t i = 8; i > 0; --i)
  {
    if (b & 1) // choose bit
      *reg |= reg_mask; // send 1
    else
      *reg &= inv_mask; // send 0

    tunedDelay(delay);
    b >>= 1;
  }

  // restore pin to natural state
  if (inv)
    *reg &= inv_mask;
  else
    *reg |= reg_mask;

  SREG = oldSREG; // turn interrupts back on
  tunedDelay(_tx_delay);
  
  return 1;
}

.....

void SoftwareSerial::flush()
{
  // There is no tx buffering, simply return
}

смотрел , но ничего не понял в нём (новичок же =))
спасибо!

Процесс отсылки данных побитно различается, т.к. в HadwareSerial это происходит аппаратно, не задействуя напрямую CPU.
Софтовый же сериал не “сразу возвращает управление”, а лишь после передачи данных, тк. процессор одноядерный, и всё выполняет последовательно

Как бы, можно и софтовый вывод в сериал организовать аппаратно, но для невысоких скоростей (до 9600). И то это несколько муторно. И непонятно заради чего.) Тогда уж лучше передавать на 115200 и ни на что не отвлекаться.