Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM900 GPRS
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
prottoss
Всем привет.
Открыл новую тему, потому что не нашел ответов на форуме подобных вопрос.

Использую модуль для связи с устройства с сервером по GPRS.
1. Модуль настроен на работу в "ransparent mode".
2. DTR настроен командой AT&D1 на перевод модуля в командный режим по низкому уровню.

С управление потока от МК к модулю понятно - использую RTS/CTS
Как управлять потоком данных от модуля в МК? По DTR? Но тогда не понятно, когда ложить DTR? Модуль ответит, что он в командном режиме через секунду. А что до этого будет? Будут сыпаться данные?
_Артём_
Цитата(prottoss @ Mar 1 2014, 08:02) *
Использую модуль для связи с устройства с сервером по GPRS.
1. Модуль настроен на работу в "ransparent mode".

Может лучше работать в не-transporent mode? В Sim900 есть команда +RXGET которая позволяет считывать данные когда МК решит их считатать, а не когда модем решит их выдать.
prottoss
Цитата(_Артём_ @ Mar 1 2014, 16:09) *
Может лучше работать в не-transporent mode?
Я не спрашивал какой режим лучше. Мне нужен именно тот режим про который я спрашиваю
Baser
Цитата(prottoss @ Mar 1 2014, 06:02) *
С управление потока от МК к модулю понятно - использую RTS/CTS
Как управлять потоком данных от модуля в МК? По DTR?

Вы наверное, hardware flow control последние лет ХХ-цать не применяли biggrin.gif
Дело в том, что использование парных сигналов в одном направлении (RTS/CTS, DTR/DSR) регламентировалось стандартом где-то в конце 80-х прошлого века. Потом за избыточностью метода от него отказались и последние десятилетия все производители используют другию интерпретацию:
для управления потоком в одном направлении используется только один сигнал.
Т.е. RTS - выход на одном устройстве подключается к CTS - входу другого устройства и наоборот.
Одна линия управляет потоком в одном направлении, другая - в обратном.
Низкий уровень (CMOS UART-а) разрешает передачу, высокий - запрещает.

А пару сигналов DTR/DSR используют для контроля подключения кабелей для RS-232 или для разных других функций в случае местного соединения двух устройств (как у вас).
prottoss
Цитата(Baser @ Mar 1 2014, 23:47) *
Вы наверное, hardware flow control последние лет ХХ-цать не применяли biggrin.gif
Дело в том...
Вы про SIM900 что то вообще знаете? Если да, то можете ответить на мой вопрос?
smalcom
>> Как управлять потоком данных от модуля в МК?
у вас же есть пара RTS/CTS, которая управляет потоком в двух направлениях, о чём и сказал Baser.

>> когда ложить DTR?
так не делают - переключать режим, чтобы ост... вобщем для управления потоком используется RTS/CTS(ныне RTR), другие способы - моветон.

>> А что до этого будет? Будут сыпаться данные?
да. стандартная технология предусматривает снятие сигнала готовности при заполнении внутреннего буфера до определённого места, а не конца.
и если пользоваться этим правильно(не DTR) то количество данных будет малым.

ps.
>> Вы про SIM900 что то вообще знаете?
sim900 тут вообще ни при чём.
prottoss
Цитата(smalcom @ Mar 2 2014, 15:07) *
>> Как управлять потоком данных от модуля в МК?
у вас же есть пара RTS/CTS, которая управляет потоком в двух направлениях, о чём и сказал Baser.
Да, спасибо Baser и Вам, smalcom, тоже. Разобрался. На самом деле так и есть - CTS для торможения данных от МК в модуль, а RTS от модуля в МК. А я почитал очень старый учебник по RS232 sm.gif
Цырен.
Для истории добавлю свои 5 копеек. В модуле SIM900х есть вх. буфер. Модуль выставит сигнал CTS(выход модуля), запретив подачу даннных, когда буфер заполнится до 4кБ. Когда модуль освободит буфер до 2кБ, отослав данные из него в сеть, сигнал CTS вернется в исходное положение, разрешив подачу новых данных.
Aner
А если в этот момент приходят данные, как разрулить такую коллизию? Вы не знаете момента прихода данных, как быть?
seneka
Цитата(Aner @ Mar 12 2014, 13:33) *
А если в этот момент приходят данные, как разрулить такую коллизию? Вы не знаете момента прихода данных, как быть?


Ну это вообще это элементарный вопрос. Данные не приходят сами по себе, почитайте про основы RS232. Например в вики http://ru.wikipedia.org/wiki/RS-232
Aner
QUOTE (seneka @ Mar 12 2014, 13:06) *
Ну это вообще это элементарный вопрос. Данные не приходят сами по себе, почитайте про основы RS232. Например в вики http://ru.wikipedia.org/wiki/RS-232

Причем тут RS232, вопрос по GPRS. А это не одно и тоже. Задержку на стороне опсоса вы не знаете, и не можете точно знать момент прихода данных, в отличие от отправки ваших данных.
Цырен.
Если микроконтроллер(хост) выставил сигнал CTS, указывая, что не готов принимать даанные, то модуль в свою очередь перестанет слать данные в UART микроконтроллера и перестанет принимать данные из сети. Данные которе не были получены модулем по TCP/IP ретранслируются модулю несколько раз с определенным тайм-аутом. Как правило, таймаут не успевает истечь и микроконтроллер возвращает CTS в состояние готовности. Ну, а если микронтроллер ушел в глухой неответ, то через текоторое время на стороне сервера будет сгенерировано собтие Time-Out.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.