Потерянные данные SoftwareSerial и HardwareSerial
Мне нужны два последовательных порта. Один порт представляет собой своего рода модифицированный последовательный порт программного обеспечения, где мне приходится постоянно прослушивать и немедленно отправлять ответы, если этого требует порт. Обещаем, здесь нет никаких проблем с XY.
С другой стороны, у меня есть устройство с серийным номером оборудования.
Если я слушаю Software Serial, иногда я теряю данные Hardware Serial. Как это может быть? Разве последовательный порт оборудования не является «аппаратным обеспечением», то есть независимым от процессора?
@Liess Jemai, 👍-3
1 ответ
Последовательное программное обеспечение отключает прерывания. В зависимости от скорости передачи данных они могут быть отключены настолько долго, что прерывание, генерируемое последовательным портом оборудования, не будет своевременно обработано. В зависимости от чипа hardware serial может иметь буфер размером всего в пару байт. Отключите прерывания на достаточно долгое время, и одно из них будет потеряно.
Внешние прерывания имеют более высокий приоритет, чем прерывания UART, что не поможет. Здесь я имею в виду Uno.
Было бы полезно в будущем, если бы вы предоставили код, воспроизводящий ситуацию, а также указали, какой Arduino вы используете. Отсутствие информации об этом в вопросе могло бы стать причиной того, что вас проголосовали против.
- Ошибка 'Serial' was not declared in this scope
- Serial.availableForWrite против Serial.flush
- Повреждение данных SoftwareSerial - поиск предложений
- Какой лучший способ объявить Serial при создании библиотеки Arduino?
- Термопринтер Adafruit печатает слабо
- Проблемы при использовании SoftwareSerial
- Найдите ОК или ОШИБКУ в последовательной строке
- HardwareSerial и SoftwareSerial несовместимы.