|
UART STM32F100Rxx и определение окончание приема "пакета" данных |
|
|
|
 |
Ответов
|
Mar 12 2013, 10:06
|
Местный
  
Группа: Участник
Сообщений: 339
Регистрация: 10-07-08
Из: Херсон
Пользователь №: 38 856

|
Цитата(drum1987 @ Mar 12 2013, 12:48)  вы когда байт складываете в буфер попутно проверяйте не символ ли это переноса строки...если нет то ждете дальше, а если да, то значит вы приняли посылку полностью...можно выставить флаг или сразу обрабатывать принятые данные. Я уже писал, что в общем пакете данных находится несколько NMEA, каждый с которых оканчивается символом переноса строки.
|
|
|
|
|
Mar 12 2013, 13:49
|
Местный
  
Группа: Участник
Сообщений: 339
Регистрация: 10-07-08
Из: Херсон
Пользователь №: 38 856

|
Сергей Борщ , спасибо за понятный ответ. Теперь осталось разобратся что ж за прерывание USART_IT_IDLE. Когда оно происходит. Цитата(KnightIgor @ Mar 12 2013, 17:12)  Вам код дать? Спасибо за предложения кода. Но он мне не нужен. На PIC18F46J50, у меня все реализовано, и работает в сотнях устройств без нареканий. Да, я принудительно оключил ("заглушил") передачу ненужных мне данных с GPS. Да, я знаю про кольцевые буферы, про парсеры и тому подобное. Я следую логике, что приняв весь пакет от GPS за времмя приблизительно 17 милиСек (не более 200 байт) у меня будет времени разобратся с этим пакетом 1 - 0.017 = 0.983 Сек. В случае же к примеру использования методики отлавливания конца строки, и если буфер не достаточной величины (или указатель обнуляется) , мне желательно вложится в время кратное приёму одного байта, для обработки принятого NMEI, а это составляет приблизительно 86 микроСек. Вот поэтому я и хочу принять весь пакет, чтоб потом неспешно, его разобрать.
Сообщение отредактировал alexdos - Mar 12 2013, 13:51
|
|
|
|
|
Mar 12 2013, 14:05
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (alexdos @ Mar 12 2013, 15:49)  Теперь осталось разобратся что ж за прерывание USART_IT_IDLE. Когда оно происходит. Оно возникает если с момента последнего стопа не возникло нового старта за время 10 битовых интервалов. Вы уверены, что приемник не сделает такую паузу в середине пакета? Я бы не стал на это закладываться. Вы можете, конечно, идти своим путем. Но если в спецификации протокола сказано, что признаком конца посылки является символ перевода строки, я бы не стал придумывать какие-то еще косвенные никем не гарантированные признаки. Откуда вы взяли 86 мкс? У вас буфер. Большой. Пока вы выгребаете-разбираете из него пакет с одной стороны, прерывание складывает в него новые байты с другой. И время обработки определяется размером этого буфера. Никаких проблем. Если вы сделаете размер этого буфера таким же, как и в вашем варианте с приемом всего-всего, то и времени на обработку у вас будет не меньше, а даже больше на время передачи этого пакета сообщений - ведь пока приходит очередное сообщение в пакете вы уже можете обрабатывать предыдущее. Но вы можете идти своим путем.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
alexdos UART STM32F100Rxx и определение окончание приема "пакета" данных Mar 12 2013, 08:14 uriy ЦитатаТоесть может быть к примеру 146 байт, а може... Mar 12 2013, 08:39 alexdos "NMEA пакеты заканчиваются символом переноса ... Mar 12 2013, 09:36  KnightIgor Цитата(alexdos @ Mar 12 2013, 10:36) Knig... Mar 12 2013, 13:12 KnightIgor Цитата(alexdos @ Mar 12 2013, 09:14) По к... Mar 12 2013, 08:50  mempfis_ Цитата(alexdos @ Mar 12 2013, 13:06) Я уж... Mar 12 2013, 10:26    KnightIgor Цитата(alexdos @ Mar 12 2013, 14:49) знаю... Mar 12 2013, 14:07 Golikov A. Думаю все тянется со старого пика, который работае... Mar 12 2013, 16:57 alexdos Цитата(Golikov A. @ Mar 12 2013, 20:57) П... Mar 12 2013, 17:38 richie А это зависит от самих данных, соглашения об их ор... Mar 12 2013, 18:10 alexdos Цитата(richie @ Mar 12 2013, 22:10) P.S. ... Mar 12 2013, 18:31  richie Цитата(alexdos @ Mar 12 2013, 22:31) СRC ... Mar 14 2013, 05:35   demiurg_spb разговор ни о чём... Mar 14 2013, 05:48   Golikov A. Цитата(richie @ Mar 14 2013, 09:35) P.S. ... Mar 14 2013, 06:05    alexdos Наверное я не так изначально поставил вопрос. Но т... Mar 14 2013, 08:38 Golikov A. можно делать выводы что вы их не нашли.
Я больше ... Mar 12 2013, 19:55 DmitryM Цитата(Golikov A. @ Mar 12 2013, 23:55) м... Mar 13 2013, 04:35 Golikov A. но только потому что на каждое сообщение должен бы... Mar 13 2013, 14:57 DmitryM Цитата(Golikov A. @ Mar 13 2013, 18:57) н... Mar 13 2013, 15:48 Golikov A. в этом и фишка, что если устройство ответит то мож... Mar 13 2013, 16:56 alexdos Цитата(Golikov A. @ Mar 13 2013, 20:56) П... Mar 13 2013, 20:29  _Артём_ Цитата(alexdos @ Mar 13 2013, 22:29) Да г... Mar 13 2013, 21:11 vlad_new ЦитатаСпециального механизма отслеживания пауз в U... Mar 13 2013, 17:02 Golikov A. Не тут что-то не так.
Любой протокол на базе УАРТ... Mar 14 2013, 03:27 Golikov A. Ну хотелось бы разделить лавры с другими участника... Mar 14 2013, 15:28 alexdos Цитата(Golikov A. @ Mar 14 2013, 19:28) Н... Mar 14 2013, 18:48 Golikov A. весьма познавательно, спасибо. Надо будет где нибу... Mar 14 2013, 18:57
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|