Как стать автором
Обновить

Комментарии 14

А я уж думал, что прошли те времена на Хабре, когда я мог прочитать статью, СОВЕРШЕННО не понять о чем идет речь, осознать себя нубом и начать просматривать вакансии дворника.
Хабр таки торт.
Вот даже не знаю, как реагировать на такой комментарий :)

PS Привык на хабре везде видеть сарказм :)
Воспринимайте как похвалу. :)
Все понятно! Но вот только зачем стмовцы в HAL либе такие гигантские названия дефайнов сделали, ни за что без ошибки не напишешь и не выучишь:(
Ну… наверное из-за того, что везде автодополнение срабатывает :)

Но вообще да, я регулярно хожу по исходникам что бы посмотреть, что же можно подставить.
Насчет автоопределения скорости я недопонял.
Ведь для этого первый (старший) значащий бит передаваемых данных должен отличаться от стартового?
И получается, что это аппаратная фишка контроллера? Если так, то круто.
Не, стартовый бит по длительности равен идущим за ним. И если его длительность изменилась — значит, изменились длительности и следующих за ним.

STM умеет и по стартовому и по стоповому и еще как-то (забыл :) мерять скорости. И да, это аппаратная фишка.
Имелось в виду, что старший бит должет отличаться от стартового по уровню, по длительности, конечно, они совпадают.
Иначе мы не получим длину стартового бита, а получим длину 1-9 битов и как их мерять?
В модемах применялся префикс AT либо at и в обоих случаях старший бит был в нуле, а как без такого ограничения быть?
Я наверное, не понял, но уровни у всех бит — одинаковые. И контроллер отделяет одни байты от других именно по числу бит и временным паузам. Ведь если рассматривать стартовый бит как паузу между «стоповым» и «первым» битом, то эта пауза равна длительности других битов.
Может что-то не понял уже я, но для того чтобы определить длительность стартового бита, нужно видеть, когда он закончился, а для этого следующий бит (старший бит данных) должен отличаться по уровню от стартового, иначе их не разделить?
Ну, стартовый бит — это «0».
То есть последовательность для слова FFА5 выглядит так
0 11111111 1 0 10100101 1

То есть уровни (в смысле напряжения) стартовых и стоповых бит не отличаются от тех, что в теле. И длительности тоже.

И если у контроллера включено автоопределение и между FF и A5 меняется скорость, то логика будет такой
(замеряли длительность стартового, все ок)
Принимаем
11111111
1(о! стоповый пришел, включаем отсчет времени)
1… (о! длительность стартового изменилась, значит скорость сменить)
..0100101

И снова.

В итоге максимальные потери — самый первый байт, ибо у него стартовый бит — бесконечность :)
А почему было не заюзать какой-нибудь логический анализатор, а ля Saleae? Там же в софтине есть декодер UART.
Когда был тот самый слова «логический анализатор» проходили по графе «не с нашими деньгами и не в нашей жизни». А сейчас — просто по приколу :)

Не те цитаты я ожидал

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Публикации

Истории