mich.bil
Sep 22 2014, 10:00
Добрый день!
SIM900R внезапно начал замолкать при попытке установления GPRS соединения, хотя до этого работал нормально. Когда модуль не отвечает, светодиоды STATUS и NETLIGHT работают штатно, после перезагрузки модуль успешно соединяется с GPRS и начинает обмен данными. Модуль замолкает после комманды AT+CSTT
Напряжение питания GSM 4.0В, питание микроконтроллера 2.9В.
Помогите разобраться, где у меня косяк, лог прилагаю.
zebrox
Sep 22 2014, 10:08
Тоже заметил подобное поведение, правда на обычном сим900.
Иногда происходит уже в процессе обмена, а иногда в процессе установки жпрс сессии/подключения.
Фантомную запитку не нашел.
Помогает перезагрузка с выключением питания.
CADiLO
Sep 22 2014, 10:14
Нигде последовательность команд не перепутали?
У меня на тестовом скрипте из апнотеса таких проблем нет.
И еще - при проблеме с командами, пожалуйста называйте версию фирмваре.
mich.bil
Sep 22 2014, 10:45
Версия:
1137B01SIM900R64_ST_ENHANCE_EAT
Убрал проверку счета при загрузке, и система начала стартовать с каждого раза... возвращаю проверку - начинает виснуть... Какие особенности могут быть, связанные с USSD запросом?
QUOTE (mich.bil @ Sep 22 2014, 16:00)

SIM900R внезапно начал замолкать при попытке установления GPRS соединения
попробуйте паузы между командами увеличить. был такой прикол, если слишком короткая пауза - менее 0,6с, или отправить следующий запрос до получения ответа или заданного интервала, который может быть до 60с на некторые команды, зависает наглухо. решил таким образом - пауза после получения ответа до следующей команды - 0,5с, время на ожидание ответа обычное 5с, и до 60с на отдельные команды.
CADiLO
Sep 22 2014, 10:52
Да, такое возможно. До получения ответа следующую команду лучше не давать - есть случаи когда последующая отменяет предыдущую, а OS модуля путается в ответах.
Это происходит когда обе команды - "операторозависимые" - особенность стека GSM.
mich.bil
Sep 22 2014, 11:01
Проблема именно с проверкой счета. Какую задержку надо ставить после получения USSD ответа?
Когда я удаляю 2 последние строчки, система начинает запускаться абсолютно нормально.
Serial->println("Forcing echo off");
gsm.SendATCmdWaitResp("ATE0", 500, 50, "OK", 5);
delay(1000);
gsm.SendCmdWaitSTR("ATD*111#",13000);
delay(10000);
Поднял задержку после получения USSD до 20 секунд, стало гораздо лучше....
QUOTE (mich.bil @ Sep 22 2014, 17:01)

Поднял задержку после получения USSD до 20 секунд, стало гораздо лучше....
лучше увеличьте время ожидания ответа до 60с, а задержку ПОСЛЕ получения ответа достаточно 1с.
хотя могу ошибаться, я проверкой баланса не интересовался
andrewlekar
Sep 23 2014, 07:19
Попробуйте USSD запрос через AT+CUSSD выполнять.
-dizel-
Nov 21 2014, 15:33
Возможно стоит не здесь вопрос задать, но похожая проблема.
Модуль WS6318. Обмен по UART. Шлю команду "АТ", принимаю ответ "ОК" и сразу же шлю следующую команду не делая паузы, её уже не принимает, терминал показывает идёт передача с ошибками. Если поставить паузу 2мс между приёмом и следующей передачей - всё корректно. Подскажите как обычно это решается какую паузу делают или есть другие варианты. В документации на модуль не нашёл рекомендаций как правильно работать по UART.
rx3apf
Nov 21 2014, 16:41
Нечто подобное было и с SIM900 - судя по всему, это проблемы автодетекта скорости. Попробуйте запретить автодетект, зафиксировав скорость обмена с модулем.
-dizel-
Nov 24 2014, 07:24
Дело в том, что автодетект не используется, скорсть задана вручную 115200.
Romashki
Dec 2 2014, 12:51
Я использую такую строку для проверки счета "AT+CUSD=1,\"*111#\",15\r"
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.