n.bresh
Apr 3 2014, 05:55
вижу приходящий смс "+CMTI: "SM",1"
после этого отправляю : "AT+CMGL=\"REC UNREAD\"\r"
но модуль вообще никак не отвечает
пробовал отправлять "AT+CMGR=1,0" и просто "AT\r" - также никаких ответов
хотя далее по прошествии некоторого времени *примерно 10 секунд*
модуль успешно выполняет удаление всех смс
"AT+CMGD = 1,4\r"
далее работает по основному алгоритму
megajohn
Apr 3 2014, 06:28
не понимаю про какой абстрактный модем говорите, но отвечу по Telit UC864:
>после этого отправляю : "AT+CMGL=\"REC UNREAD\"\r"
проверьте что модем в текстовом режиме а не PDU
>пробовал отправлять "AT+CMGR=1,0"
нужно отправлять AT+CMGR=1
n.bresh
Apr 3 2014, 06:30
модем SIM900
режим - текстовый
А кто сказал что он должен мгновенно удалить???
Не отвечает пока не удалит. Дожидайтесь OK.
n.bresh
Apr 3 2014, 07:31
проблема не в том что когда удаляются смс
а в том что не приходит никакого ответа на запрос чтения смс ни на любую другую команду, независимо сколько времени ждать
n.bresh
Apr 3 2014, 07:42
примерно так...
if (strstr(ReceiveString0, "+CMTI") != 0){
delay_ms(200);
Uart2_Write_Text("AT+CMGL=\"REC UNREAD\"\r");
и далее по алгоритму...
}
прошивка 1137B02SIM900M64_ST_ENHANCE
Русский символ или кавычки не того типа нигде не затесались ?
У меня вручную на этой прошивке команда работает
n.bresh
Apr 8 2014, 10:22
все-таки не могу побороть проблему, но попробую описать по-подробнее:
1. инициализирую SIM900 разными командами
( в терминалке вижу как посылы микроконтроллера так и ответы модема
кроме того для контроля через Soft_UART вывожу в терминалку принятый микроконтроллером буфер)
2. вроде все штатно
3. отправляю AT+CMGL="ALL"\r - ответ приходит корректный
4. отправляю AT+CMGR=1\r - ответ также нормальный
5. ухожу в главный цикл , в котором один раз в секунду опрашиваю метку, которая устанавливается по прерыванию от RING
6. по поднятой метке ( в терминалке вижу пришедший +CMTI......) отправляю AT+CMGL="ALL"\r
ответа никакого вообще, сколько не жди
7. пробовал ждать до 60 секунд - безрезультатно
8. пробовал повторять AT+CMGL="ALL"\r - безрезультатно
9. если же звоню на модуль, то по поднятой в результате прерывания от RING метке команда AT+CMGL="ALL"\r
отрабатывает корректно
10. то есть один и тот же код при звонке работает, а при смс - нет
Romashki
Apr 8 2014, 11:34
Попробуйте увеличить время ожидания до 1 секунды перед Uart2_Write_Text("AT+CMGL=\"REC UNREAD\"\r"); ... если получится, потом экспериментально подберете минимальное время.
Чтение AT+CMGR=х\r;
где х - индекс смс
n.bresh
Apr 8 2014, 12:29
да там и так жду достаточно
if ( metka_RING == 1 ){
delay_ms(2000);
String0(); // прочитать буфер
debug_soft0(); // выдать его в Soft_UART PORT
delay_ms(2000);
ClearBuffer(); // принудительно очищаю буфер
Uart2_Write_Text("AT+CMGL=\"ALL\"\r");
delay_ms(3000);
String0(); // прочитать буфер
Romashki
Apr 9 2014, 01:28
Попробуйте для начале с помощью терминала вручную проделать эти операции, чтоб понимать в чем проблема. Я использую прерывания от UARTa в МК, анализирую и читаю смс, проблем нет.
n.bresh
Apr 14 2014, 05:04
отключил выполнение всех команд кроме AT\r
повторяю эту команду с интервалом в 5 секунд
первый раз модем отвечает - AT и OK
на все последующие запросы вообще не отвечает
CADiLO
Apr 14 2014, 05:24
А фиксированную скорость модему выставили, или на автоопределении работаете?
n.bresh
Apr 14 2014, 05:31
еще нет
АТ - первая команда
но заметил одну особенность: при инициализации выполняю группу команд
и если какую-нибудь из команд повторяю то ответа OK от модема не дождаться
как будто он зависает
CADiLO
Apr 14 2014, 05:34
Не просто желательно, а НЕОБХОДИМО перевести модуль на работу с фиксированой скоростью. Отпадет масса вопросов.
И еще разбег скоростей UART модуля и источника более 1.5% уже критичен.
На какой скорости пытаетесь общаться с модулем?
n.bresh
Apr 14 2014, 05:43
я уже выше описывал
все работало нормально и команда AT+IPR=9600\r - третья в в списке, собственно после AT и ATE0
проблема возникла при выполнении AT+CMGL="ALL"\r
там я заметил что именно повторное чтение смс не проходит
стал проверять повторное выполнение всех команд, и в итоге добрался до самого начала - то есть AT\r
CADiLO
Apr 14 2014, 05:50
Перепроверяем правильность стыковки по уровням и отсутствие фантомки.
Фиксируем скорость и проверяем с терминала.
Эта прошивка работает на дофига скольки модемах.
n.bresh
Apr 15 2014, 09:07
попробовал изменить скорость общения между модулем и модемом - с 9600 на 19200
в настроенной терминалке вижу корректные посылки от микроконтроллера и кракарзябры в качестве ответов модема
переключил все на 4800 - та же картина
то есть ответы модема читабельны, толькл если скорость - 9600
CADiLO
Apr 15 2014, 09:39
Выбросьте контроллер, соединитесь терминалкой и убедитесь что обмен нормальный на всех ФИКСИРОВАНЫХ скоростях.
Не используйте на модуле автоскорость.
После этого пересчитайте еще раз делители для примененного кварца на контроллере.
Если разбег от требуемой скорости будет больше 1.5 процента - обмена не будет.
Уже было с каким-то атмеловским контроллером когда при 20 мегагерцах обмен был "на грани" и пришлось поставить "модемный" кварц 18.432 мгц
n.bresh
Apr 15 2014, 10:38
убрал контроллер
Настроил терминалку на 9600
запустил модем
дождался Call Ready в терминалке
отправляю AT - в ответ кракозябры
отправляю AT+IPR=9600 - в ответ кракозябры
повторил процедуру несколько раз - всегда с отключением модема и рестартом терминалки
один раз поймал OK на обе посланные команды, но на запрос AT+IPR? получил кракозябры
CADiLO
Apr 15 2014, 11:44
теперь с этого места вернемся к железу
- через что модуль подключен к компу, и какое питание согласователя?
n.bresh
Apr 15 2014, 11:47
через FT232
VCCIO - 3 вольта
CADiLO
Apr 15 2014, 11:50
3 или 3.3 ??
я имею в виду берете собственное с FT232 или VEXT с модуля?
n.bresh
Apr 15 2014, 11:50
VCCIO запитано от Vext
CADiLO
Apr 15 2014, 11:54
хм.... тогда озадачили....
так не бывает.... должно работать
провода не длинные от FT до модуля
если замкнуть RX-TX отсоединив модуль - свое эхо стабильное на FT?
n.bresh
Apr 15 2014, 11:56
провода сантиметров 15
эхо стабильное
CADiLO
Apr 15 2014, 12:17
Нечистые электромагнитные силы
разве что предположить что слетела прошивка и перепрошить модуль......
или часть земли от модуля отвалилась и он чудит по падению питания...
n.bresh
Apr 15 2014, 15:16
перепрошил модуль
вроде все заработало
прошивка : 1137B01SIM900M64_ST_ENHANCE
есть ли еще более свежая? и если есть - то имеет ли смысл обновлять ?
ну и конечно всем спасибо! без вашей помощи ребята наверно давно бы уже все бросил к чертям.
CADiLO
Apr 15 2014, 15:31
Да - для SIM900 последняя 1137B02SIM900M64_ST_ENHANCE
Обновлять стоит однозначно, много пофиксено и добавлено.
Запрос письмом своему дистрибьютору.
Учитывая что в 900-х прошивка слетит только в случае фантомки, перепроверьте уровни, схему стыковки с контроллером и алгоритм общения.....
Alechek
Apr 16 2014, 09:43
Цитата(x893 @ Apr 15 2014, 23:31)

А проще выкинуть SIM900
А еще проще вообще ничего не делать.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.