Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 02.04.2017, 15:51  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,058
Сказал спасибо: 2,563
Сказали Спасибо 11,890 раз(а) в 5,964 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Сообщение от supercelt Посмотреть сообщение
поменял скорость на 4800, проверял с IDLE. 10 звонков подряд - норм. Потом поменял на 115200. С первого же звонка - накладка (IDLE сработало на 30 символе). Потом поменял как было на 9600. Тут опять рандом.
Если модем отправляет сообщения через DMA - все будет ОК, а если нет, то забудьте за IDLE. Даже через DMA могут быть валерьянты, если отправляемое сообщение состоит из нескольких "блоков" (только программеры модема знают, как формируется сообщение - частями или сплошным куском).
Если не хотите пить валерьянку, когда уже все готово, но вдруг выясняется, что далеко еще не все, опирайтесь на содержимое сообщения, а не на случайные паузы.
Реклама:
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 02.04.2017, 16:36  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Сообщение от supercelt Посмотреть сообщение
На странице 26 вообще такого нет. Там описание команды ATDI, которая ничего не меняет.
я читаю:
Код:
TC35i Terminal
Siemens Cellular Engine
Version: 02.07
DocId: TC35i_ATC_V02.07
А Вы что? Даже если другая версия - поиск никто не отменял.

Цитата:
Да есть, но они встречаются по 3 раза в ответе.
Показали бы уже пример что-ли... "OK" - это самостоятельный ответ, даже если и идёт после выдачи данных по запросу. Потому всегда обрамлён CRLF.
Ну и строка любой длинны в память не поместится(точнее может не поместиться).

Цитата:
Но а... момент когда уже можно читать-то как определяется? Что посылка зашла в буфер.
Как определить что ответ уже пришёл и можно искать в нём что-то? Очень просто - выделять то что находится в обрамлении CRLF и обрабатывать строку за строкой - сравнивать, искать и т.д. Не помню в деталях как делал я, но принцип такой:
1) если появились данные в кольцевом буфере - читаем байт.
2) если прошли подряд CR LF то после них считаем до появления CR LF; так же запоминаем индекс элемента после CR LF
3) Появился CR LF и при этом что-то насчитано - по запомненному индексу и насчитанной длине можно скопировать в отдельный буфер хоть с нуль терминацией и там обрабатывать. Но я искал прямо в кольцевом буфере самописной функцией.
Вот типа такого конечный автомат нужен, не знаю как правильно его описать - я не настоящий программист.
Можно кстати и через DMA если есть прерывание по приёму знака LF, вроде в каких-то STM32 оно есть.
Хотя полноценный стек(или как это называется?) управления модемом сделать не так уж и просто как может показаться...

Код:
поменял скорость на 4800, проверял с IDLE. 10 звонков подряд - норм. Потом поменял на 115200. С первого же звонка - накладка (IDLE сработало на 30 символе). Потом поменял как было на 9600. Тут опять рандом. То со 2, то с 1, то с 5 звонка. Потом меняю опять на 4800 - хлоп, на 8 звонке - накладка.
Заниматься такой ерундой, вместо того чтобы делать нормальный разбор сообщений... это финиш... извиняйте, но я пас
H4LF вне форума  
Непрочитано 02.04.2017, 17:16  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Сообщение от H4LF Посмотреть сообщение
Показали бы уже пример что-ли...
Какой конкретно пример показать?)
supercelt вне форума  
Непрочитано 02.04.2017, 17:16  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,038
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Теперь когда понятно что чудит GSM модем, можно очень легко программно определить несколько последовательных IDLE байт и по этому условию определять настоящий конец передачи.
Парсить строку тоже вариант, но я сторонник концепции KISS
dgrishin вне форума  
Непрочитано 02.04.2017, 17:34  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Сообщение от dgrishin Посмотреть сообщение
Теперь когда понятно что чудит GSM модем, можно очень легко программно определить несколько последовательных IDLE байт и по этому условию определять настоящий конец передачи.
Парсить строку тоже вариант, но я сторонник концепции KISS
Короче как сработало idle, проверять массив есть ли там нужное и если нет, не обнулять i ?
supercelt вне форума  
Непрочитано 02.04.2017, 17:43  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,038
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Сообщение от supercelt Посмотреть сообщение
Короче как сработало idle, проверять массив есть ли там нужное и если нет, не обнулять i ?
Никакого массива. Всё делается в обработчике - попробуйте сами напишите.
dgrishin вне форума  
Непрочитано 02.04.2017, 17:43  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,058
Сказал спасибо: 2,563
Сказали Спасибо 11,890 раз(а) в 5,964 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Сообщение от H4LF Посмотреть сообщение
1) если появились данные в кольцевом буфере - читаем байт.
Если меньше шести - можно не париться. "ОК" - самый короткий ответ - из шести байтов.
Сообщение от dgrishin Посмотреть сообщение
Теперь, когда понятно что чудит GSM модем,
С чего это ему "чудить"? Или Вы считаете "чудачеством" работу не по Вашим хотелкам?
Сообщение от supercelt Посмотреть сообщение
проверять массив есть ли там нужное и если нет, не обнулять i ?
H4LF путь показал. Остается осознать и сделать.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 02.04.2017, 18:47  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Сообщение от akegor Посмотреть сообщение
Если меньше шести - можно не париться. "ОК" - самый короткий ответ - из шести байтов.
Можно, но уже после того как конечный автомат(КА) определил, что что-то пришло. Читать байт из буфера и догонять записывающий указатель в любом случае надо (если конечно не запрещён приём или в каких нибудь особых случаях). Если есть главный цикл - проверку наполненности буфера и вызов КА лучше вставить туда. Естественно при этом не должно быть тупящих делеев, поллинга долгих флагов и подобного, что может застопорить главный цикл до переполнения буфера.

Сообщение от dgrishin Посмотреть сообщение
Никакого массива. Всё делается в обработчике
Учить плохому - так уж на полную? Так недолго и до _delay_ms(xxx) в обработчике(с запрещёнными прерываниями)...
Ну и модем не чудит, он так работает. А то, что Вы предлагаете - это не KISS а стрельба по своим ногам из автоматического оружия.
H4LF вне форума  
Непрочитано 02.04.2017, 19:02  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,038
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Сообщение от H4LF Посмотреть сообщение
Учить плохому - так уж на полную? Так недолго и до _delay_ms(xxx) в обработчике(с запрещёнными прерываниями)...
Ну и модем не чудит, он так работает. А то, что Вы предлагаете - это не KISS а стрельба по своим ногам из автоматического оружия.
Я знаю как решить эту задачу максимально простым способом (и работающим).
То, что вы предлагаете - это построение сферического коня в вакууме. Всё что нужно топикствртеру - это просто принять последовательность символов в буфер (корректно определив конец текущей передачи) и потом получить нужные значения по определённым смещениям в буфере.
Я больше не буду ничего писать - понаблюдаю куда вы заведёте топикстартера такими советами
dgrishin вне форума  
Непрочитано 02.04.2017, 19:32  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Глюк приёма данных по USART

Ничего страшного, если в обработчике прерывания что-то будет исполняться чуть больше, чем ничего. Если беспокоитесь за длинный код обработчика, просто понизьте приоритет этого прерывания и не дрожите за каждый шаг. NVIC допускает повторный вход в прерывание, при этом ничего не теряется.
У вас там что, используется целая куча высокоприоритетных прерываний, задержка обработки которых грозит ядерной катастрофой, чтоль?
NewWriter вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27
Получение данных по USART Fangir AVR 32 02.12.2014 15:15
Получение данных по USART в CVAVR himik131 Микроконтроллеры, АЦП, память и т.д 6 12.03.2011 00:12
Вопрос по мультипроцессорному обмену USART MEGA8 vikont-s Микроконтроллеры, АЦП, память и т.д 0 10.08.2006 14:55


Часовой пояс GMT +4, время: 02:05.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot