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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Исходники для SIM300x, AVR
RomanRom
сообщение Oct 23 2008, 08:59
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



Как-то не густо в сети с исходниками на Си для AVR.
Интересует момент полноценного приема ответов от SIM300x по UART (глубина буфера, тайминги между посылками, использование прерываний или постоянный опрос UART, длительность таймаута, если не пришел очередной символ). Где глянуть образец?
Go to the top of the page
 
+Quote Post
ivstech
сообщение Oct 23 2008, 09:24
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 5-01-06
Пользователь №: 12 860



Для ПИКа есть исходники на Си от олимекса.

http://www.olimex.com/dev/images/PIC/PIC-GSM-sch.gif

http://www.olimex.com/dev/soft/PIC/PIC-GSM/PIC-GSM.zip



Смотреть файлы MainDemo_gsm.c и test_gsm.c
Go to the top of the page
 
+Quote Post
david_off
сообщение Oct 24 2008, 17:21
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 15-10-08
Из: Одесса, Украина
Пользователь №: 40 978



Я для своих нужд написал свои процедуры. Заняло 2 дня и строчек 300 кода, но зато теперь работает именно так, как я хочу. Не прихоидится подстраиваться под чужие процедуры.
Все АТ команды проверяют приход эха, сверяют его на идентичность посланной команде, потом в спец буфере хранят обработтаные ответы - без CRLF и т д.
Если уж очень надо, могу поделится. Хотя наверняка вам лучше попробывать своё сваять
Go to the top of the page
 
+Quote Post
RomanRom
сообщение Oct 27 2008, 10:54
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



Цитата(david_off @ Oct 24 2008, 21:21) *
Я для своих нужд написал свои процедуры. Заняло 2 дня и строчек 300 кода, но зато теперь работает именно так, как я хочу. Не прихоидится подстраиваться под чужие процедуры.
Все АТ команды проверяют приход эха, сверяют его на идентичность посланной команде, потом в спец буфере хранят обработтаные ответы - без CRLF и т д.
Если уж очень надо, могу поделится. Хотя наверняка вам лучше попробывать своё сваять

Если не затруднит и не секретно, то, пожалуйста, дайте исходники в том виде, в котором посчитаете нужным. Чтобы сделать программу под свой девайс, легче опираться на каркас реально работающего исходника.
Постом выше была ссылка на PIC, спасибо, однако там все интерфейсы и протоколы свалены в кучу, тяжко разбираться.
Go to the top of the page
 
+Quote Post
gora_electric
сообщение Oct 27 2008, 20:57
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 21-06-07
Пользователь №: 28 613



Цитата(RomanRom @ Oct 27 2008, 13:54) *
Если не затруднит и не секретно, то, пожалуйста, дайте исходники в том виде, в котором посчитаете нужным. Чтобы сделать программу под свой девайс, легче опираться на каркас реально работающего исходника.
Постом выше была ссылка на PIC, спасибо, однако там все интерфейсы и протоколы свалены в кучу, тяжко разбираться.

Да, если это не коммерческий продукт, можно исходники?
Go to the top of the page
 
+Quote Post
david_off
сообщение Oct 27 2008, 21:34
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 15-10-08
Из: Одесса, Украина
Пользователь №: 40 978



Проект коммерческий, но на свой страх и риск поделюсь своими умоизвержениями. Принцип такой. Перед посылкой АТ комманды устройтсво устанавливает переменную ATcomMode и ATanswerType. Первая используется в прерывании, что бы понять, что сейчас должно приходить - это или какой-то ответ. А второая, после корректного получения эха, говорит в какой режим перепрыгнуть ATcomMode. Разные ответы могуть быть. Например ATcomMode=2 ожидет прихода ответа OK или ERROR. В режиме 4 - (+AT: answer; OK)
Файлы из проекта для CODE VISION 1,29 под мегу128
declare - список переменных с коментами
at_command - каркасы для комманд + их конкретные реализации
tcp_ip - набор готовых комманд для поднятия GPRS сессии и CSD соединения.
Прикрепленные файлы
Прикрепленный файл  GSM.rar ( 6.33 килобайт ) Кол-во скачиваний: 384
 
Go to the top of the page
 
+Quote Post
PIC_Embedder
сообщение Oct 27 2008, 22:53
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 30-07-08
Из: Украина Луганск
Пользователь №: 39 308



Ещё раз убедился, что лучше всё делать самому. На форуме эффективнее делиться алгоритмами и идеями. А не их реализацией. Но это ИМХО.
Go to the top of the page
 
+Quote Post
david_off
сообщение Oct 28 2008, 05:00
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 15-10-08
Из: Одесса, Украина
Пользователь №: 40 978



Цитата(PIC_Embedder @ Oct 28 2008, 02:53) *
Ещё раз убедился, что лучше всё делать самому. На форуме эффективнее делиться алгоритмами и идеями. А не их реализацией. Но это ИМХО.


Моя цитата выше " Хотя наверняка вам лучше попробывать своё сваять". В тех кодах чёрт ногу сломит. Есть там слегка избыточность функциональности, но в моём проекте она была необходима.
Go to the top of the page
 
+Quote Post
ivstech
сообщение Oct 28 2008, 07:55
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 5-01-06
Пользователь №: 12 860



На мой взгляд, эхо лучше отключить. Заодно и программа упростится.
Go to the top of the page
 
+Quote Post
Baser
сообщение Oct 28 2008, 10:52
Сообщение #10


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

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



Цитата(ivstech @ Oct 28 2008, 09:55) *
На мой взгляд, эхо лучше отключить. Заодно и программа упростится.

+1
Аналогично, никогда эхо не применял, МК сразу его выключает в модеме. На мой взгляд, эхо - это рудимент в управлении модемами, сохранившийся со времен ручных текстовых терминалов, когда команды набирались "ручками" операторов smile.gif

В любом случае, обработка ответов идет по таймаутам, т.к.:
- модем может не ответить;
- есть ответы, в которых отсутствуют коды <CR><LF>
Go to the top of the page
 
+Quote Post
PIC_Embedder
сообщение Oct 28 2008, 11:27
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 30-07-08
Из: Украина Луганск
Пользователь №: 39 308



Цитата(Baser @ Oct 28 2008, 14:52) *
+1
Аналогично, никогда эхо не применял, МК сразу его выключает в модеме. На мой взгляд, эхо - это рудимент в управлении модемами, сохранившийся со времен ручных текстовых терминалов, когда команды набирались "ручками" операторов smile.gif

Зато всё нагляднее, когда есть эхо. Вижу и команду и ответ.

Цитата
В любом случае, обработка ответов идет по таймаутам, т.к.:
- модем может не ответить;

Если не ответил, это уже сбой.

Цитата
- есть ответы, в которых отсутствуют коды <CR><LF>

Это какие команды?
Go to the top of the page
 
+Quote Post
Baser
сообщение Oct 28 2008, 14:14
Сообщение #12


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

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



Цитата(PIC_Embedder @ Oct 28 2008, 13:27) *
Зато всё нагляднее, когда есть эхо. Вижу и команду и ответ.
Наглядность нужна для человека при отладке, процессорам она ни к чему smile.gif
А при отладке я программно шлю копию (эхо) обмена между МК и модемом в другой CОМ, подключенный к РС, и вижу то же самое.
Цитата
Если не ответил, это уже сбой.
Так сбои тоже нужно отлавливать. Для этого все равно есть таймер максимального ожидания ответа. А в прерывании процедура одна: все запихивается в кольцевой буфер, а по таймауту взводится флаг для обработчика в основном цикле. Мне особенно спешить некуда, мегабайты передавать не нужно.
Цитата
Это какие команды?
Например при передаче данных: галка-приветствие (> 0D 0A 3E 20).
Или на прием данные валятся как есть, в бинарном виде...
Go to the top of the page
 
+Quote Post
david_off
сообщение Nov 1 2008, 15:37
Сообщение #13


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 15-10-08
Из: Одесса, Украина
Пользователь №: 40 978



Запоздал конечно я со своим коментом, но лучше поздно чем никогда.
На горьком опыте убедился, что ЭХО действительно абсолютно не нужно. Хотя в моей первой реализации эхо обрабатывалось и довольно успешно, лафа закончилась, когда программа стала ветвится и очень глубоко. Отладка стала практически невозможной.
Короче пришлось всё полностью убить и переписать заново.

Долго анализировал и пришёл к выводу, что практически все команды, которые я использую, будут состоять из кусков двух типов. Только предварительно нужно указать короткий формат команд (ATV0).
Тогда куски будут следующие:
1) <byte>CR - назвал shortMessage;
2) CRLF<string>CRLF - назвал longMessage.
Если в прерывании по приёму данных создать процедуру, которая бы ловила и считала количество shortMessage и longMessage, то можно можно достаточно достоверно знать, что пришёл ответ. Только перед посылкой команды нужно не забыть "счётчики кусков" обнулить. Для каждой комманды заведомо известно из каких кусков она будет состоять. Исключение из правил составляют два случая:
1) Команды, ответ на которые состоит из нескольких строк CRLF<string1>CRLF<string2>...CRLF<stringN>OK. Примером такой команды может быть AT+CLCC.
2) Когда ответ на команду ERROR или +CME ERROR и т.д.

С первым случаем решил просто. Они мне не нужны и я не использую такие команды.
Со вторым - после получения и shortMessage и longMessage анализирую их на содержание возможных неожиданных кодов, которые должны досрочно прервать ожидание корректного ответа. Если такое наблюдается, то вспомогательный флаг экстренного прерывания устанавливается и процедура, ожидающая прихода ответа нужного формата вываливается досрочно. Причём в анализаторе содержания встроена логика, которая на полезные неожиданные сообщения реагирует нужным образом (например на сообщение RING).
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 3 2008, 00:37
Сообщение #14


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

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



А я свой драйвер реализовал аля State Machine с таймаутами и всякой фигней. Работает, однако.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
vesago
сообщение Nov 3 2008, 06:54
Сообщение #15


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Можно тут глянуть принцип.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:37
Рейтинг@Mail.ru


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