oleg110592 писал(а):a5021 писал(а):Не хотите рассекретить этот тайный смысл?
уже
Вы существуете в какой-то альтернативной реальности и с вами там происходят события, о которых вы тут сообщаете? Только так можно объяснить ваше "уже", т.к кроме "смысл есть" от вас более не последовало никаких пояснений.
На самом деле ваше "уже" могло бы выглядеть следующим образом: отсылая очередной байт в регистр данных, ориентируясь исключительно на флаг _TC передача в линию идет с паузами. Данная пауза возникает вследствие того, что вся обработка начинается даже не после того, отправлен последний бит данных, а лишь после окончания стоп-бита (If a frame is transmitted (after the stop bit) and the TXE bit is set, the TC bit goes high. An interrupt is generated if the TCIE bit is set in the USARTx_CR1 register). Линия уже в idle, вызывается прерывание, вход в которое не происходит мгновенно. Внутри обработчика случается очередная задержка, которая обусловлена проверкой флагов и пересылкой данных в TDR. Еще короткая пауза наблюдается в процессе пересылки данных из TDR в выходной буфер (сдвиговый регистр) перед фронтом старт-бита. На протяжении этого времени линия передачи не активна, хотя ничего вроде бы не мешает в это время уже вести передачу. На фоне времени передачи единственного фрейма, дополнительная задержка может и не кажется большой, но она предшествует каждому фрейму и при передаче длинных последовательностей все задержки суммируются, что однозначно скажется увеличении общего времени передачи.
Передача без пауз между фреймами возможна, если отправлять данные в TDR не по флагу/прерыванию TC, а по TXE. В этом случае TDR будет заполняться данными в то время, когда предыдущий байт еще передается. На высоких скоростях выигрыш может оказаться невелик, т.к. вполне можно ожидать, что байт будет уходить раньше, чем закончится выполнение обработчика, но передача фрейма на 115200 бод занимает 78 микросекунд, а это 3750 тактов на частоте 48мгц и соответствующее число команд, которые могут быть выполнены за это время. Тут успеет отработать даже довольно "толстый" обработчик, а сама передача будет происходить бесшовно.
Можно ли сказать, что организация передачи по TXE дает значительные преимущества по сравнению с TC ? Насчет значительности можно поспорить, но вот то, что преимущества имеются, отрицать бессмысленно. Сопутствуют ли преимуществами какие-либо недостатки? Практически нет. Притянутый за уши пример с мультиусартом и тут может быть легко реализован путем организации слежения за флагом TC после отправки в TDR последнего байта в пакете.
Следует ли цепляться исключительно за организацию передачи по TC ? Вряд ли. Разве что лишь по причины полного непонимания того, как это работает.
dosikus писал(а):Все на глаз да на прикус? Все время и силы уходят на болтовню, на вменяемый инструмент уже не заработать?

Вы обнаружили какую-то ошибку в описанной методике или просто цепляетесь за любую возможность поупражняться в глупостях? Указанной точности возможно добиться и без "вменяемого инструмента", а если вы этого не понимаете, то встает вопрос насчет вашей квалификации и становится не совсем понятно, зачем вам вообще "вменяемый инструмент". Для фетиша, может быть?