28.03.2017, 12:15
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Время передачи 1 байта USART
Да бред всё это... и свой протокол тоже. ТС партизанит и он сам не знает что он хочет. Здесь вообще разговор в общем и ни о чём.
|
|
|
|
28.03.2017, 12:40
|
|
Частый гость
Регистрация: 11.02.2017
Сообщений: 25
Сказал спасибо: 11
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Время передачи 1 байта USART
Сообщение от nml
|
Отсутствие передачи, imho, ненадежно.
|
Modbus RTU работает по этому принципу.
|
|
|
|
28.03.2017, 16:05
|
|
Вид на жительство
Регистрация: 07.01.2007
Адрес: Ленинградская обл
Сообщений: 428
Сказал спасибо: 147
Сказали Спасибо 71 раз(а) в 56 сообщении(ях)
|
Re: Время передачи 1 байта USART
...или посмотрел бы, а может, задача такова, что факт "окончания" неважен.
По мере поступления их нельзя обрабатывать? Например, если не успевает,загонять в очередь к другому процессу (процу) и т п
Потом, "обрезанные" данные тоже могут быть информативными.
|
|
|
|
28.03.2017, 16:41
|
|
Прописка
Регистрация: 09.06.2009
Адрес: Саров
Сообщений: 135
Сказал спасибо: 1,321
Сказали Спасибо 338 раз(а) в 79 сообщении(ях)
|
Re: Время передачи 1 байта USART
Если речь идет именно об UART, причем работает он в асинхронном режиме (байт-ориентированный, ежели чо), то:
1. Спереди к байту добавляется стартовый бит (+1)
2. Сзади к байту добавляется (или нет - как заказали) четность (+1) и 1-1.5-2 стоповых (+1 или +1,5 или +2 - как запрограммировали)
Итого, байт "обкладывают" со всех сторон от 2 до 4 служебных бит.
3. А интервал между байтами - сверху - ничем не ограничен (на уровне UART)! Его может ограничивать протокол, но об нем речь не шла! Так что можно ждать следующего байта и до обеда...
__________________
Качество программы измеряется в количествах "Что за..." на 10 шагов отладки...
|
|
|
|
28.03.2017, 16:53
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,258
Сказал спасибо: 11,170
Сказали Спасибо 3,859 раз(а) в 2,929 сообщении(ях)
|
Re: Время передачи 1 байта USART
Тут ожидание больше похоже на "до морковкина заговенья" .
Пока ТС не расскажет в подробностях про свои условия - только осадок от кофе.
Да и название темы таки стоит ему поправить.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
28.03.2017, 19:33
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Время передачи 1 байта USART
Сообщение от eenote
|
Modbus RTU работает по этому принципу.
|
У модбаса в заголовке указано число передаваемых байт, а в конце - контроньная сумма.
Кароче говоря, основные способы таковы:
- число пересылаемых байт определено заранее протоколом и фиксировано.
- число передаваемых байт передается в заголовке, заголовок фиксированной длины.
- конец передачи определяется по специальному оговоренному символу или нескольким символам. типичный пример - GPS-приемники или GSM-модемы, некоторые устройства. обмен инфой идет в ASCII-синтаксисе, обычным текстом
|
|
|
|
28.03.2017, 21:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Время передачи 1 байта USART
Сообщение от NewWriter
|
У модбаса в заголовке указано число передаваемых байт
|
Не надо болтать ерундой. Modbus RTU - не имеет никакого числа передаваемых данных. И конец фрейма определяется именно по "тишине" в течение времени, соответствующего времени передачи 14 бит.
Сообщение от NewWriter
|
- конец передачи определяется по специальному оговоренному символу или нескольким символам. типичный пример - GPS-приемники или GSM-модемы
|
например, в случае с GSM-модемом, специально оговоренными символами строка не только заканчивается, но и начинается, что приводит к необходимости лишних неудобных телодвижений для определения, получили ли только начало строки и надо не рыпаться, поскольку вот-вот насыплется еще всякоразных символов, либо получили конец, и можно пойти поразбираться, что там нам пришло)
Последний раз редактировалось AR_Favorit; 28.03.2017 в 21:10.
|
|
|
|
28.03.2017, 21:18
|
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Время передачи 1 байта USART
Да уже писал похожую тему, то ли тут, то ли не тут. Вобщем смысл такой, что я принимаю ответ от модема по usart. RTS, CTS на модеме нет. только Rx, Tx, и Gnd. Так что мне надо как-то без них железно распознать, что закончилась передача. Хотя вы правы. что сказали, ежели модем отвалится и мк как бы распознает конец передачи. Но это уже другая история. Есть одна особенность, почти каждое принимаемое сообщение содержит в конце ответа "\r\nOK\r\n". Можно было бы сделать strstr поискать подстроку. Но получается тогда, что надо это проверять после каждого принятого байта. Строковая функция наверное прожорлива. И к тому же вот встанет такая задача - принимать и СМС. А в СМС легко может кто-то по тексту просто написать OK, да ещё и с символами новой строки. Это конечно мало вероятно, но всё-таки надо учитывать. Вот и думаю, как гарантировано понять что пришло всё.
|
|
|
|
28.03.2017, 22:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,460
Сказал спасибо: 286
Сказали Спасибо 1,125 раз(а) в 540 сообщении(ях)
|
Re: Время передачи 1 байта USART
Ну делал. Мастер звал слейва. А его можно быть небыло.
Следил за временем ответа. Больше какогото времени ответа с слейва нету. Звал следующего.
Разумеестся CRC ответа критерий фальшивки.
Не доделал, контора бахнулась. Ушел. Так и осталось, на 3/4 сделано недосделано
Берите CAN BUS, несмотря на дороговизну. Легче будет !
|
|
|
|
28.03.2017, 23:19
|
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Время передачи 1 байта USART
попробовал сделать по прерыванию IDLE. Штука хорошая, но как только встретит в строке символ \n, выкидывает прерывание. А этот символ, встречается и в середине строки вот так-то((((
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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, время: 19:33.
|
|