Потерянные данные SoftwareSerial и HardwareSerial

Мне нужны два последовательных порта. Один порт представляет собой своего рода модифицированный последовательный порт программного обеспечения, где мне приходится постоянно прослушивать и немедленно отправлять ответы, если этого требует порт. Обещаем, здесь нет никаких проблем с XY.

С другой стороны, у меня есть устройство с серийным номером оборудования.

Если я слушаю Software Serial, иногда я теряю данные Hardware Serial. Как это может быть? Разве последовательный порт оборудования не является «аппаратным обеспечением», то есть независимым от процессора?

, 👍-3


1 ответ


1

Последовательное программное обеспечение отключает прерывания. В зависимости от скорости передачи данных они могут быть отключены настолько долго, что прерывание, генерируемое последовательным портом оборудования, не будет своевременно обработано. В зависимости от чипа hardware serial может иметь буфер размером всего в пару байт. Отключите прерывания на достаточно долгое время, и одно из них будет потеряно.

Внешние прерывания имеют более высокий приоритет, чем прерывания UART, что не поможет. Здесь я имею в виду Uno.

Было бы полезно в будущем, если бы вы предоставили код, воспроизводящий ситуацию, а также указали, какой Arduino вы используете. Отсутствие информации об этом в вопросе могло бы стать причиной того, что вас проголосовали против.

,