dima34 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Доброе время суток! Вот решил позвонить с помощью АВР, но блин ничего не получилось :-(. Вкратце ....подключил вывод TxD Mega16 к выводу RxD телефона Сименс С55, через делитель (на телефоне 3,2 В) ну и их земли. Следующим шагом была инициализация УАРТА: clr Temp out UBRRH,Temp ldi Temp,25 ;2.4 kbit при 1 MHz out UBRRL,Temp ldi Temp,(1<<TXEN)|(1<<RXEN) out UCSRB,Temp ldi Temp,(1<<URSEL)|(0<<UMSEL)|(3<<UCSZ0) out UCSRC,Temp а потом передача строчки "ATD +38098xxxxxxx" ну на свой номер :-) , строчку передавал посимвольно от А до последней цифры телефона (просьба не критиковать за корявость, буду повышать квалификацию, просто прошу выявить ошибку) вот пример передачи первого символа: USARTTransmit_01 sbis UCSRA, UDRE rjmp USARTTransmit_02 ldi Temp, 'A' out UDR, Temp Ну, как понятно из темы, телефон молчал, правда проверка в протеусе на терминале дала позитивнй результат, строчка в УАРТЕ состветсвтовала действительности! Возможно настройки связи модема телефона отличаются от настроек УАРТА контроллера, и вообще можно таким способом позвонить??? Всем желающим помочь заранее благодарен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vet 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба ATD вроде бы не принимает пробел перед номером. Пишите слитно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба А 0x0D, 0x0A в конце строки передать не забыли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Amper25 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Еще советую посмотреть что телефон отвечает на эту команду. т.е. сделать и обратный канал или хотябы терминалом с помощью компа. Вспомнил тут, помоему надо писать не "ATD +38098xxxxxxx" а ATD"+38098xxxxxxx" Кавычки, вроде, определяют границы номера хотя могу ошибатся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Кавычек, как и пробела, не нужно. В конце номера следует добавить ";", если нужно звонить голосом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tklim 0 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Еще советую посмотреть что телефон отвечает на эту команду. т.е. сделать и обратный канал или хотябы терминалом с помощью компа. Вспомнил тут, помоему надо писать не "ATD +38098xxxxxxx" а ATD"+38098xxxxxxx" Кавычки, вроде, определяют границы номера хотя могу ошибатся. Не надо там никаких кавычек. Пробелы тоже не нужно, хотя с ними обычно все работает. В конце строки обязательно 0x0D,0x0A. И самое главное, у большинства телефонов по умолчания уарт работает на 9600. Если хотите другой, и увренны, что телефон это поддерживает, то сначала нужно, чтоб српботал autobading. Можно перед набором номера послать пару раз "AT\r\n" c паузами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dima34 0 19 мая, 2008 Опубликовано 19 мая, 2008 (изменено) · Жалоба В конце строки обязательно 0x0D,0x0A. А для чего нужны эти команды? И самое главное, у большинства телефонов по умолчания уарт работает на 9600. И ещё, помимо скорости есть какие-нибудь дополнительные настройки УАРТА, которые могут отличаться ? Кавычек, как и пробела, не нужно. Никаких кавычек я не ставил, они просто указывали на тот тескт, который я отсылал в телефон, а вот пробел попробую убрать. Изменено 19 мая, 2008 пользователем Kalina Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Дени© 0 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба А для чего нужны эти команды? Это команда перевода каретки и строки, Когда нажимаешь клавишу "Enter", то посылаешь эти команды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба А для чего нужны эти команды? Возврат каретки и перевод строки. Без них телефон ничего делать не будет. И ещё, помимо скорости есть какие-нибудь дополнительные настройки УАРТА, которые могут отличаться ? Плюньте на скорость - на C55 autobaud все отработает. Настройки стандартные 8-N-1. Попробуйте сначала сделать все вручную в терминале. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dima34 0 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Возврат каретки и перевод строки. Большое спасибо, очень помогло! Попробуйте сначала сделать все вручную в терминале. Протеус рулит, просто замечательная программка :a14: Правда вот при первой отправке строчки: ATD+38098xxxxxxx телефон отвечат 0, это означает команда выполнена ошибок нет, а вот только после повторной отправки ATD+38098xxxxxxx , спустя пол секунды (точно сколько надо ждать не знаю, но если не ждать ничего не выйдет) телефон уже отвечает 0ATD+38098xxxxxxx и начинает звонить!!! :yeah: Вот ещё что, перед тем как писать прогу, думал что-то найти похожее, но ничего не нашёл. Только встечались фразы, что без Сишки не обойтись, на асме будет геморойно. Мне как начинающему сейчас непонятно, в чём трудность передать 18 символов по юарту?Ведь нужно всего лишь: 1. Настроить юарт 2. Дважды передать 18 символов И напоследок.. после освоения СМСок уже откроются широкие возможности для дистанционного управления по GSM каналу, кстати у меня есть справочник АТ команд для терминала Сименс М20 на русском, я думаю эти командами пользуются практически все сименсы, если кому надо, пишите, скину на мыло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Вас ожидает еще столько удивительных и фееричных вещей для отправки СМС...:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Правда вот при первой отправке строчки: ATD+38098xxxxxxx телефон отвечат 0, это означает команда выполнена ошибок нет, а вот только после повторной отправки ATD+38098xxxxxxx , спустя пол секунды (точно сколько надо ждать не знаю, но если не ждать ничего не выйдет) телефон уже отвечает 0ATD+38098xxxxxxx и начинает звонить!!! :yeah: Не должен так себя вести C55. Для работы с контроллером лучше отключить эхо (ATE0) - станет гораздо удобнее разбирать ответы телефона. Только встечались фразы, что без Сишки не обойтись, на асме будет геморойно. Мне как начинающему сейчас непонятно, в чём трудность передать 18 символов по юарту? На асме это вполне реализуемо, я как-то без "C" свободно обходился. Передать 18-180-1800 символов просто, а вот написать нормальный парсер ответов модема уже гораздо сложнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 20 мая, 2008 Опубликовано 20 мая, 2008 · Жалоба ... Правда вот при первой отправке строчки: ATD+38098xxxxxxx телефон отвечат 0, это означает команда выполнена ошибок нет, а вот только после повторной отправки ATD+38098xxxxxxx , спустя пол секунды (точно сколько надо ждать не знаю, но если не ждать ничего не выйдет) телефон уже отвечает 0ATD+38098xxxxxxx и начинает звонить!!! :yeah: Вообще-то, перед использованием модема, его положено инициализировать при помощи команды: ATZ. Далее - установить необходимые настройки (если они отличаются от стандартных, по умолчанию). И только после этого работать - звонить и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Amper25 0 20 мая, 2008 Опубликовано 20 мая, 2008 (изменено) · Жалоба Очевидно, что при первой отправке команды, модем подстраивает свой baudrate и, соответственно, не видит полностью команду. Пожтому и не реагирует. Изменено 20 мая, 2008 пользователем Amper25 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 20 мая, 2008 Опубликовано 20 мая, 2008 · Жалоба Далеко не очевидно. А в начале действительно стоит сбросить модем и добиться ответа просто на "AT". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться