|
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:07
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(alexdos @ Mar 12 2013, 14:49)  знаю про кольцевые буферы, про парсеры и тому подобное. Ну так Вы все знаете. А неполно поставленный вопрос вначале наводил на иную оценку. Извините. Цитата Я следую логике, что приняв весь пакет от GPS за времмя приблизительно 17 милиСек (не более 200 байт) у меня будет времени разобратся с этим пакетом 1 - 0.017 = 0.983 Сек. В случае же к примеру использования методики отлавливания конца строки, и если буфер не достаточной величины (или указатель обнуляется) , мне желательно вложится в время кратное приёму одного байта, для обработки принятого NMEI, а это составляет приблизительно 86 микроСек. Вот поэтому я и хочу принять весь пакет, чтоб потом неспешно, его разобрать. Думаю, при такой постановке вопроса и условии, что токенов мало (остальные отфильтрованы), а период составляет, скажем, 1 секунду, можно пойти по пути определения окончания пачки токенов путем таймаута. USART это вряд ли обеспечит: IDLE срабатывает, если прошло пару битов со времени последнего STOP. Никто, однако, не может гарантировать, что GPS сыплет байтами плотно друг за дружкой. Поэтому об IDLE можете тоже забыть. Остается только внешний таймер, перезапускаемый приемом байта USART и срабатывающий, скажем, после неприема трех-четырех байт - это надо заценить опытно. Тем не менее, я не понимаю проблемы вложиться с обработкой токена в какие-то жесткие временные рамки: их просто нет, т.к. обработка токена (читай - строки) может происходить, пока принимается другой токен, а это - куча байт, а значит - и времени. То же касается и требуемой памяти: токены не такие уж и длинные (байт 50-60, думаю). Неужели напряг с этим? Вы же в форуме ARM - тут речь о множестве килобайт в микроконтроллерах или мегабайт, кто там с внешней памятью играется....
|
|
|
|
Сообщений в этой теме
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    Сергей Борщ QUOTE (alexdos @ Mar 12 2013, 15:49) Тепе... Mar 12 2013, 14:05 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
|
|
|