Но вот тут у меня другое мнение - программный может принимать и отправлять ту длительность которую ему задали - регулировке подлежит не только импульс бита и его пауза, но отдельно ещё длительность стоп бита.
Тут не всё так просто как кажется. Передать любой сигнал то можно, хоть пол микросекунды. Вопрос как ты будешь его принимать на другом МК, ведь у него только одна нога на прием и всё. Нет никакой внешней синхронизации.
Как ты узнаешь, что пришло 5 единиц подряд? Ты ведь по сути можешь читать только состояние одной ноги и всё (а оно за 5 единиц не изменится).
Для этого ты должен знать заранее какой сигнал придет (его длительность и сколько бит данных). И с помощью этих данных настроить внутреннюю синхронизацию по таймеру.
То есть, если твоя внутренняя синхронизация не совпадает с тем сигналом, что пришел, то ты считаешь его неправильно.
Здесь речь о микросекундах уже не идет, ведь нужно принятые биты сохранять и что-нибудь ещё проверять, а на это нужно время.
Стоповый бит такой же как и все остальные, просто он отделяет один переданный байт от другого.
Те данные, что я отправляю на скорости 19200бит/с этот МК с программным UART понимает, значит с синхронизацией на 19200 у него порядок.
А те данные, которые отправляет основная плата Печи идут на более медленной скорости, чем 19200бит/с, поэтому их он не понимает.
А вот аппаратный UART понимает.