реклама на сайте
подробности

 
 
> SIM900 GPRS, Аппаратное управление потоком
prottoss
сообщение Mar 1 2014, 04:02
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Всем привет.
Открыл новую тему, потому что не нашел ответов на форуме подобных вопрос.

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

С управление потока от МК к модулю понятно - использую RTS/CTS
Как управлять потоком данных от модуля в МК? По DTR? Но тогда не понятно, когда ложить DTR? Модуль ответит, что он в командном режиме через секунду. А что до этого будет? Будут сыпаться данные?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 11)
_Артём_
сообщение Mar 1 2014, 10:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(prottoss @ Mar 1 2014, 08:02) *
Использую модуль для связи с устройства с сервером по GPRS.
1. Модуль настроен на работу в "ransparent mode".

Может лучше работать в не-transporent mode? В Sim900 есть команда +RXGET которая позволяет считывать данные когда МК решит их считатать, а не когда модем решит их выдать.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Mar 1 2014, 10:23
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(_Артём_ @ Mar 1 2014, 16:09) *
Может лучше работать в не-transporent mode?
Я не спрашивал какой режим лучше. Мне нужен именно тот режим про который я спрашиваю


--------------------
Go to the top of the page
 
+Quote Post
Baser
сообщение Mar 1 2014, 17:47
Сообщение #4


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(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 или для разных других функций в случае местного соединения двух устройств (как у вас).
Go to the top of the page
 
+Quote Post
prottoss
сообщение Mar 2 2014, 02:29
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Baser @ Mar 1 2014, 23:47) *
Вы наверное, hardware flow control последние лет ХХ-цать не применяли biggrin.gif
Дело в том...
Вы про SIM900 что то вообще знаете? Если да, то можете ответить на мой вопрос?


--------------------
Go to the top of the page
 
+Quote Post
smalcom
сообщение Mar 2 2014, 09:07
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



>> Как управлять потоком данных от модуля в МК?
у вас же есть пара RTS/CTS, которая управляет потоком в двух направлениях, о чём и сказал Baser.

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

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

ps.
>> Вы про SIM900 что то вообще знаете?
sim900 тут вообще ни при чём.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Mar 2 2014, 09:30
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(smalcom @ Mar 2 2014, 15:07) *
>> Как управлять потоком данных от модуля в МК?
у вас же есть пара RTS/CTS, которая управляет потоком в двух направлениях, о чём и сказал Baser.
Да, спасибо Baser и Вам, smalcom, тоже. Разобрался. На самом деле так и есть - CTS для торможения данных от МК в модуль, а RTS от модуля в МК. А я почитал очень старый учебник по RS232 sm.gif


--------------------
Go to the top of the page
 
+Quote Post
Цырен.
сообщение Mar 12 2014, 09:19
Сообщение #8


Евгений
***

Группа: Участник
Сообщений: 341
Регистрация: 13-10-11
Пользователь №: 67 706



Для истории добавлю свои 5 копеек. В модуле SIM900х есть вх. буфер. Модуль выставит сигнал CTS(выход модуля), запретив подачу даннных, когда буфер заполнится до 4кБ. Когда модуль освободит буфер до 2кБ, отослав данные из него в сеть, сигнал CTS вернется в исходное положение, разрешив подачу новых данных.


--------------------
Go to the top of the page
 
+Quote Post
Aner
сообщение Mar 12 2014, 09:33
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



А если в этот момент приходят данные, как разрулить такую коллизию? Вы не знаете момента прихода данных, как быть?
Go to the top of the page
 
+Quote Post
seneka
сообщение Mar 12 2014, 10:06
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 11-03-14
Из: Ростов
Пользователь №: 80 888



Цитата(Aner @ Mar 12 2014, 13:33) *
А если в этот момент приходят данные, как разрулить такую коллизию? Вы не знаете момента прихода данных, как быть?


Ну это вообще это элементарный вопрос. Данные не приходят сами по себе, почитайте про основы RS232. Например в вики http://ru.wikipedia.org/wiki/RS-232
Go to the top of the page
 
+Quote Post
Aner
сообщение Mar 12 2014, 10:22
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



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

Причем тут RS232, вопрос по GPRS. А это не одно и тоже. Задержку на стороне опсоса вы не знаете, и не можете точно знать момент прихода данных, в отличие от отправки ваших данных.
Go to the top of the page
 
+Quote Post
Цырен.
сообщение Mar 17 2014, 02:39
Сообщение #12


Евгений
***

Группа: Участник
Сообщений: 341
Регистрация: 13-10-11
Пользователь №: 67 706



Если микроконтроллер(хост) выставил сигнал CTS, указывая, что не готов принимать даанные, то модуль в свою очередь перестанет слать данные в UART микроконтроллера и перестанет принимать данные из сети. Данные которе не были получены модулем по TCP/IP ретранслируются модулю несколько раз с определенным тайм-аутом. Как правило, таймаут не успевает истечь и микроконтроллер возвращает CTS в состояние готовности. Ну, а если микронтроллер ушел в глухой неответ, то через текоторое время на стороне сервера будет сгенерировано собтие Time-Out.


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01453 секунд с 7
ELECTRONIX ©2004-2016