27.03.2017, 23:06
|
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Время передачи 1 байта USART
Привет! Я сделал такую штуку. Принимаю байт по USART, записываю его в массив и обнуляю счётчик таймера. И так далее. И вот наступил момент когда последний байт передан (Но я как бы не знаю что он именно последний). Так вот. Таймер настроен таким образом, что если какое-то время нет передачи по usart, значит информация принята вся. Срабатывает прерывание и ставится флаг, что можно кромсать массив. Говорили тут, что время, за которое можно судить о том, что данные приняты - это если нет приёма в течении времени за которое принимается 3 байта. Я бы хотел максимально точно подобрать это время, в зависимости от скорости usart конечно. Как расчитать: сколько времени в секундах тратит usart, что бы передать 1 байт, если скорость 9600 бод?
|
|
|
|
27.03.2017, 23:17
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,861
Сказал спасибо: 2,532
Сказали Спасибо 11,773 раз(а) в 5,897 сообщении(ях)
|
Re: Время передачи 1 байта USART
Сообщение от supercelt
|
Как расчитать: сколько времени в секундах тратит usart, что бы передать 1 байт, если скорость 9600 бод?
|
Вы забыли о других параметрах передачи.
Сообщение от supercelt
|
Я бы хотел максимально точно подобрать это время
|
Смысл в максимальной точности, если
Сообщение от supercelt
|
Говорили тут, что...
|
критерий весьма расплывчатый и зависит много от чего?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
Последний раз редактировалось akegor; 27.03.2017 в 23:21.
|
|
|
|
27.03.2017, 23:36
|
|
Частый гость
Регистрация: 24.08.2015
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Время передачи 1 байта USART
Обычно к байту добавляется бит четности и например стоп биты. Берете 9600/(8 + n битов четности + m стоп битов) получаете количество байт в секунду. Если у вас, что то типа модбаса, там вроде 3.5 символа, а не байта. Т.е. ваш 3,5*( байт + оформление к нему).Вроде так
|
|
|
|
28.03.2017, 00:07
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,416
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
Re: Время передачи 1 байта USART
Какойто бред. Все нормальные усройства в конце передаюи либо рн либо еще какойто признак и нафиг не упало ждать у моря погоды.
А еще у уарта есть флаг idle line то есть ваше действо с таймером реализовано аппаратно уже
__________________
кагмаподэ магмаподэ
|
|
|
|
28.03.2017, 09:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,016
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: Время передачи 1 байта USART
Сообщение от supercelt
|
И вот наступил момент когда последний байт передан (Но я как бы не знаю что он именно последний).
|
А вот именно для этого умные люди написали стандарт и придумали дополнительные цепи для управления потоком данных - RTC, CTS, DTR, DSR.
Можно использовать RTC или DTR для определения конца передачи (завести на отдельную ножку)
|
|
|
|
28.03.2017, 10:38
|
|
Частый гость
Регистрация: 24.08.2015
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Время передачи 1 байта USART
Сообщение от индюк
|
Какойто бред. Все нормальные усройства в конце передаюи либо рн либо еще какойто признак и нафиг не упало ждать у моря погоды.
А еще у уарта есть флаг idle line то есть ваше действо с таймером реализовано аппаратно уже
|
Ну тут вы не правы, разделение пакетов интервалом "тишины" достаточно популярный метод. Взять хотя бы протокол Modbus - достаточно известный в промышленности протокол. Я подозреваю что автор пилит что-то под него или подобное.
|
|
|
|
28.03.2017, 10:44
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,416
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
Re: Время передачи 1 байта USART
Сообщение от _SayHello
|
разделение пакетов интервалом "тишины" достаточно популярный метод.
|
ок, не вопрос - включаем прерывание по флагу idle line
__________________
кагмаподэ магмаподэ
|
|
|
|
28.03.2017, 10:51
|
|
Частый гость
Регистрация: 24.08.2015
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Время передачи 1 байта USART
индюк, это как вариант, хотя я тоже делал с таймером, в f3 есть вообще железная реализация проверки длины Idle в длинах символов для протокола Modbus, только у меня как то не получилось ее завести
|
|
|
|
28.03.2017, 11:22
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Время передачи 1 байта USART
А может стоит определится с терминологией изначально? Таки UART или USART? Они конечно местами похожи но и разница весьма существенна. А по написанному выше пока таки исключительно UART.
А дальше запрашиваемое ТС считается для одной единственной посылки из параметров, заданных при конфигурации. Считать что-то на основе нескольких переданных байт - примерно как определять погоду на Марсе по косвенным признакам на Земле.
Логику такой передачи надо менять - или по количеству переданных данных, или по признаку завершения в потоке данных, или опросом источника. При асинхронной работе время ну никак не поможет, если только оно опять же не является условием.
Пока в спецификации задачи слишком много пробелов в существенных параметрах для ответа.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
28.03.2017, 11:41
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Re: Время передачи 1 байта USART
Отсутствие передачи, imho, ненадежно. Например - передающее устройство сдохло/оторвалось. Тишина... Обрабатываем весь массив (который не принят).
Я бы сделал протокол - с маркером, контрольной суммой.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Слияние 4х потоков USART
|
insiderbik |
Микроконтроллеры, АЦП, память и т.д |
109 |
28.03.2013 16:50 |
Как 4 байта, принятых по USART превратить в число формата long int
|
Black Jack |
Микроконтроллеры, АЦП, память и т.д |
2 |
06.06.2012 21:32 |
USART MEGA8
|
yuta_86 |
Микроконтроллеры, АЦП, память и т.д |
23 |
12.02.2012 04:30 |
USART (PIC): как сделать низкий уровень на TX после посылки?
|
mxsimus |
Микроконтроллеры, АЦП, память и т.д |
2 |
27.03.2008 13:07 |
USART Tiny2313
|
avrastorguev |
Микроконтроллеры, АЦП, память и т.д |
2 |
04.03.2006 02:59 |
Часовой пояс GMT +4, время: 10:06.
|
|