Как определить скорость UART аппаратно

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Как определить скорость UART аппаратно

Сообщение ishvedov » 27 дек 2007, 18:27

Т.е. есть одно устройство (будет) - логгер. Будет тырить протоколы обмена. Нужно как-то организовать на АВР и соответвующей обвеске определение скорости УАПП. Может у кого-нибудь была такая головная боль?
Аватара пользователя
ishvedov
 
Сообщения: 29
Зарегистрирован: 20 апр 2007, 20:11
Откуда: BY, Gomel

Re: Как определить скорость UART аппаратно

Сообщение Strijar » 27 дек 2007, 18:46

Видимо только по длине старт-бита...

Добавлено спустя 2 минуты 33 секунды:
Опс.. у него длины то и нет, за ним сразу данные
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: Как определить скорость UART аппаратно

Сообщение ishvedov » 27 дек 2007, 19:08

Я не помню где-то очень давно читал что можно определить скорость УАПП толи через компаратор толи еще как, нигде эту статью не могу найти...
Аватара пользователя
ishvedov
 
Сообщения: 29
Зарегистрирован: 20 апр 2007, 20:11
Откуда: BY, Gomel

Re: Как определить скорость UART аппаратно

Сообщение Strijar » 28 дек 2007, 10:55

Если знать что передается - то легко. Было у меня одно устройство - при подключении терминалки надо было нажать несколько раз пробел, оно по нему и выставляло скорость
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: Как определить скорость UART аппаратно

Сообщение ishvedov » 29 дек 2007, 00:10

Дело в том что байты могут быть абсолютно любыми...
Аватара пользователя
ishvedov
 
Сообщения: 29
Зарегистрирован: 20 апр 2007, 20:11
Откуда: BY, Gomel

Re: Как определить скорость UART аппаратно

Сообщение -= Александр =- » 09 янв 2008, 22:53

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

Про компаратор - глупости. Электрические параметры сигнала никак от скорости не зависят. Если ты передаешь FF на одной скорости, это будет примерно такой-же импульс как 0F или F0 на вдвое большей скорости. Если конечно всякие старт и стоп-биты не смотреть. А так наверно можно как-то измерить... Но пока будешь мерить - байт потеряешь, аппаратный UART настроиться и включиться мгновенно не сможет.

Я когда че-то ловлю - просто тупо пробую разные скорости по-очереди. Включаю, смотрю - если билибирда всякая - меняю. Обычно это сразу видно, когда вразумительный обмен идет. В 90% случаев оказывается что скорость 9600...
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18