M@@}{ 0 7 января, 2009 Опубликовано 7 января, 2009 · Жалоба ВАХ!!!!!1 ХОРОЩАЯ КОМПАНИЯ СОБРАЛАСЬ!!!! главное понимаем друг друга. Спасибо всем за разъяснения но разговор зашел не туда, меня интересует именно первоначальный опрос (инициализация)и управление модемом. чтение данных отсылка, прием SMS. Я тоже использую первый способ, но на днях меня осенило что второй способ лучше т.к. ответ принимается целиком а не по строкам. Так удобнее искать данные(все в одной строке) а не в нескольких ( сколько не изветно ) Есть ли люди которые так делали или делают? Может есть какие подводные камни? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KGB 0 7 января, 2009 Опубликовано 7 января, 2009 (изменено) · Жалоба ....действительно отвлеклись. непосредствено с сим300 занимаюсь не давно....поэтому своих нароботок на эту тему мало но наблюдения уже есть. ------------------ по инициализации... RTS должен быть в 0. тогда модуль начинает отвечать. ------------------ проц сразу встаёт на приём и ждёт Call Ready и только после того как это примет начинается движение самой проги. но вот тут и начинаются затыки.... например поле АТ пытаюсь поймать ОК а он не ловится... тогда сделал так АТЕ0 АТЕ0 тут тупо ставлю паузу и не ловлю ок ОК АТ ОК а вот тут после отключения эхо начинает всё пекрасно работать ОК теперь ловится без проблем.... причём без изминений в проге. я думаю что надо над этим ещё поработать... --------------------------------------------- а сам приём хочу сделать так. так у меня работает в других устройствах. цыплятся за байты типа 0D 0A не надо.. короче начинаем принимать всё подряд по прерыванию и складывать в озу а из приёма будем выходить по отсутствию приёма какоето время причем с конкретным результатом например 0х01 и после приёма байта будем увеличивать регистр длины на 1. чтобы знать длину команды. а так как модуть сам тормас ... и не выдаёт ничего во время его работы то ТХ то прерывания мешать нам не будут. Изменено 7 января, 2009 пользователем KGB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M_Z 0 7 января, 2009 Опубликовано 7 января, 2009 · Жалоба Спасибо всем за разъяснения но разговор зашел не туда, меня интересует именно первоначальный опрос (инициализация)и управление модемом. чтение данных отсылка, прием SMS. Я тоже использую первый способ, но на днях меня осенило что второй способ лучше т.к. ответ принимается целиком а не по строкам. Так удобнее искать данные(все в одной строке) а не в нескольких ( сколько не изветно ) Есть ли люди которые так делали или делают? Может есть какие подводные камни? Не всегда сообщения заканчиваются OK бывают ERROR и так далее, поэтому ОК можно не дождаться Есть еще варианты по тайм ауту, но там тож много гемороя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KGB 0 7 января, 2009 Опубликовано 7 января, 2009 · Жалоба Не всегда сообщения заканчиваются OK бывают ERROR и так далее, поэтому ОК можно не дождаться я с тобой согласен но ок я ловил там где заведомо знаю что получу его AT ;AT+CMGF=1 ;AT+CSCS="UCS2" например в таких AT+CMGF=1 OK AT+CMGS="+7903ххххххх" а тут я например ловлю 0х22 (это ") и начинаю потом всё грузить в озу пока не появится опять 0х22 так у меня номер из первой ячейки озу переселяется в озу проца. готовых устройств я на сим300 ещё раз повторяю я ещё не делал это всё у меня пока прверяется в связке стк500 + SIM300C_EVB_V2.01 пока изучаем доки проводим экспкременты... получилось поработать с инетом.. сконектится с сервером... по отправлять на него байтики.. там эти байтики попринимать поотправлять смс по русски нажатием на кнопки на стк500 на разные лелефоны. позвонить другу!!!!! ну и ищё всякие мелочи.. короче просто покрутил модуль понаблюдал за ответами... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KGB 0 8 января, 2009 Опубликовано 8 января, 2009 · Жалоба Есть еще варианты по тайм ауту, но там тож много гемороя. ЭТО КАК...можно поподробней. ----------------------------------------- короче позанимался я с приёмом.... посылаю ATE0 принимаю 41 54 45 30 0D 0D 0A 4F 4B 0D 0A 01 <-этот последний байт дописывает ПП приёма байта , если не дождолась его... и по 01 я знаю что это конец сообщения ловить по 0D 0A не вижу смысла так как они встречаются несколько раз и .. или можем принять сразу несколько строк !!!! (это неболшое достоинство) посылаю AT принимаю 0D 0A 4F 4B 0D 0A 01 и не лету сравниваю с двумя байтами 4F 4B - это ОК если совпало то даём небольшую паузу на приём остальных байт и идём дальше.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M@@}{ 0 9 января, 2009 Опубликовано 9 января, 2009 · Жалоба ЭТО КАК...можно поподробней. ----------------------------------------- короче позанимался я с приёмом.... посылаю ATE0 принимаю 41 54 45 30 0D 0D 0A 4F 4B 0D 0A 01 <-этот последний байт дописывает ПП приёма байта , если не дождолась его... и по 01 я знаю что это конец сообщения ловить по 0D 0A не вижу смысла так как они встречаются несколько раз и .. или можем принять сразу несколько строк !!!! (это неболшое достоинство) посылаю AT принимаю 0D 0A 4F 4B 0D 0A 01 Сейчас проверил с NOKIA 6230i там нет последнего символа 01 и не лету сравниваю с двумя байтами 4F 4B - это ОК если совпало то даём небольшую паузу на приём остальных байт и идём дальше.... А может быть после уверенного приема когда точно поймали "0D 0A" проверить что там перед ними стоит OK или ERROR тем самым мы освободим контроллер от лишней работы, сделаем прерывание как можно короче. Таймауты необходимы (по моему мнению) это поможет исключить долгие ответы и возможное наложение команд. Кстати вопрос знатокам сколь времени проходит от подачи команды до получения ответа. Интересует самое длинное (дабы создать правильный таймаут). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M_Z 0 9 января, 2009 Опубликовано 9 января, 2009 · Жалоба А может быть после уверенного приема когда точно поймали "0D 0A" проверить что там перед ними стоит OK или ERROR тем самым мы освободим контроллер от лишней работы, сделаем прерывание как можно короче. возможны ответы и другие, типа разрыва соединения и т. д. без ОК и ERROR Кстати вопрос знатокам сколь времени проходит от подачи команды до получения ответа. Интересует самое длинное (дабы создать правильный таймаут). У меня это время зависит от посланной команды. Максимальное время таймаута я использую 1минуту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KGB 0 9 января, 2009 Опубликовано 9 января, 2009 (изменено) · Жалоба Сейчас проверил с NOKIA 6230i там нет последнего символа 01 ну ёлы палы... читать не умеем :crying: написаноже ... 41 54 45 30 0D 0D 0A 4F 4B 0D 0A 01 <-этот последний байт дописывает ПП приёмабайта а ПП .. это под программа.. если ктото не знает. типа сделано так... если на пике - если таймаут то RETLW 0X01 есле на авр то типа.. LDI R16,0X01 RET ------------------------ тоесть если байт у нас НЕ принят то выходим из ПП с заведомо извесным результатом по которуму и узнаём что это конец приёма!!!!!! -------------------------------------------------------- ну это для очень умных -------------------------------------------------------- ;---------------------------- RX_232_B: ldi Temp,0xFE ; out TCNT1H,Temp ; грузим содержимое в регистр таймер-счетчика TMR1 ldi Temp,0x00 out TCNT1L,Temp ; грузим содержимое в регистр таймер-счетчика TMR1 ldi temp,(1<<TOV1) out TIFR,Temp ; стираем Флаг прерывания TOV1 по переполнению TMR1 RX_232_STB: sbis PIND,2 ; ловим перепад с 1 в 0.... rjmp RXB_232 ; если дождлись старт бита то идём читаь байт in Temp,TIFR sbrs Temp,TOV1 ; по TOV1 проверяем небыло ли переполнения TMR1 rjmp RX_232_STB ; если его небыло ждём старт бит дальше ldi BUF,0x01 ; если не дождались старт бита то выходим с результатом 0хХХ ret ;---------------------------- RX_232_C: ;--------------------------------------------------- sbic PIND,2 ; ловим перепад с 1 в 0 rjmp RX_232_B ; sbic PIND,2 ; ловим перепад с 1 в 0 rjmp RX_232_B ; sbic PIND,2 ; ловим перепад с 1 в 0 rjmp RX_232_B ; три раза типа защита от дребезга!!! nop ;--------------------------------------------------- RXB_232: clr BUF и тут сам приём байта.... ----------------- я надеюсьпо тексту доглдались что ВХОДОВ в ПП у меня три RX_232_А: RX_232_B: и RX_232_С: первые одинаковые разница тока в загрузке таймера... а третий... будет ждать до посинения... пока не придёт перепад с 1 в 0 Изменено 9 января, 2009 пользователем KGB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 9 января, 2009 Опубликовано 9 января, 2009 · Жалоба Кстати вопрос знатокам сколь времени проходит от подачи команды до получения ответа. Интересует самое длинное (дабы создать правильный таймаут). http://electronix.ru/forum/index.php?s=&am...st&p=390286 У меня сейчас на отдельные команды работы с GSM сетью время ожидания ответа до двух минут. И еще двухкратная попытка повторения команды в случае молчания. Только потом вываливаюсь по ошибке... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KGB 0 9 января, 2009 Опубликовано 9 января, 2009 · Жалоба Baser я вот подумал.. надо сообща написать алгоритм работы с модулем... опрос ответов... какие бывают. итд в разных вариациях... например не сносить же мне ближайщую соту для выяснения ответов о качестве сигнала. есть правда и другой вариант... погрузится в машину и погонять по району... но ща зимой.. чёта не охота.. хотя машина позволяет. у меня ест наработки... но они пока все заканчиваются на ОК а если не ОК ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KGB 0 10 января, 2009 Опубликовано 10 января, 2009 · Жалоба Baser я вот подумал.. надо сообща написать алгоритм работы с модулем... опрос ответов... какие бывают. итд в разных вариациях... например не сносить же мне ближайщую соту для выяснения ответов о качестве сигнала. есть правда и другой вариант... погрузится в машину и погонять по району... но ща зимой.. чёта не охота.. хотя машина позволяет. у меня ест наработки... но они пока все заканчиваются на ОК а если не ОК ??? ПОЛЕЗ ОПЯТЬ ЧИТАТЬ ...... У КАКЯ КОМАНДА.. облегчающая жизнь ATV0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 10 января, 2009 Опубликовано 10 января, 2009 · Жалоба я вот подумал.. надо сообща написать алгоритм работы с модулем... опрос ответов... какие бывают. итд в разных вариациях... Мысли вслух ? Если хотите получить конкретный ответ - задайте конкретный вопрос :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M@@}{ 0 11 января, 2009 Опубликовано 11 января, 2009 · Жалоба возможны ответы и другие, типа разрыва соединения и т. д. без ОК и ERROR У меня это время зависит от посланной команды. Максимальное время таймаута я использую 1минуту. Ну на такой случай есть команта которая говорит статус соединения если я не ошибаюсь то "AT+CLCC" А она уж и говорит: входящий звонок, набор номера, набрали номер идет разговор, И.Т.Д. Можно этой командой каждые 30 сек долбить модем. Меня тут еще такой вопрос заинтересовал. Допустим для работы устройства (контроллер) необходимо знать зарегистрирован ли модем в сети это команда "AT+CREG" Так вот если я посылаю эту команду каждые 30 сек и в один прекрасный момент одновременно с посланной командой приходит SMS А это +CMTI:"SM",4 так вот что я получу в ответ от модема? Сначала ответ на посланную команду, а потом сообщение о входящем SMS, или наоборот. Возможен и 3 вариант все повалится одновременно. А как из этого следует я потеряю SMS. <- понижение надежности устройства. кто знает подскажите??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
av-master 0 11 января, 2009 Опубликовано 11 января, 2009 (изменено) · Жалоба даже, не представляю, как контроллер может пропустить +CMTI:"SM",4 вы на чем и как пишете? у меня еще небыло случая чтоб модем не выдал сообщение, а когда, до или после, не столь важно. поэксперементируйте на входящем вызове.... а долбить модем cregam-i пробовал и по 3 секунды, не виснет. Изменено 11 января, 2009 пользователем av-master Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M@@}{ 0 12 января, 2009 Опубликовано 12 января, 2009 · Жалоба даже, не представляю, как контроллер может пропустить +CMTI:"SM",4 вы на чем и как пишете? у меня еще небыло случая чтоб модем не выдал сообщение, а когда, до или после, не столь важно. поэксперементируйте на входящем вызове.... а долбить модем cregam-i пробовал и по 3 секунды, не виснет. Я хотел спросить, как модем себя поведет если ему через RS232 идет одна команда, а от сети оператора сообщение и все это одновременно. Что я увижу в окне терминала? Нужно ли мне ожидать конкретный ответ, на посланную команду или есть возможность что в ответе придет еще что-нибудь( например +CMTI:"SM",4), а потом ответ. Как мне писать обработчик, на что надеятся. А пишу я на Си. (опыту мало, вот и задаю вопросы) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться