Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Megа16 не хочет набирать номер ...
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Kalina
Доброе время суток!

Вот решил позвонить с помощью АВР, но блин ничего не получилось :-(.
Вкратце ....подключил вывод 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
ATD вроде бы не принимает пробел перед номером. Пишите слитно.
aaarrr
А 0x0D, 0x0A в конце строки передать не забыли?
Amper25
Еще советую посмотреть что телефон отвечает на эту команду.
т.е. сделать и обратный канал или хотябы терминалом с помощью компа.



Вспомнил тут, помоему надо писать не
"ATD +38098xxxxxxx"

а

ATD"+38098xxxxxxx"

Кавычки, вроде, определяют границы номера хотя могу ошибатся.
aaarrr
Кавычек, как и пробела, не нужно. В конце номера следует добавить ";", если нужно звонить голосом.
Клим
Цитата(Amper25 @ May 18 2008, 23:03) *
Еще советую посмотреть что телефон отвечает на эту команду.
т.е. сделать и обратный канал или хотябы терминалом с помощью компа.
Вспомнил тут, помоему надо писать не
"ATD +38098xxxxxxx"

а

ATD"+38098xxxxxxx"

Кавычки, вроде, определяют границы номера хотя могу ошибатся.

Не надо там никаких кавычек.
Пробелы тоже не нужно, хотя с ними обычно все работает.
В конце строки обязательно 0x0D,0x0A.
И самое главное, у большинства телефонов по умолчания уарт работает на 9600. Если хотите другой, и увренны, что телефон это поддерживает, то сначала нужно, чтоб српботал autobading. Можно перед набором номера послать пару раз "AT\r\n" c паузами.
Kalina
Цитата(Клим @ May 19 2008, 09:47) *
В конце строки обязательно 0x0D,0x0A.

А для чего нужны эти команды?


Цитата(Клим @ May 19 2008, 09:47) *
И самое главное, у большинства телефонов по умолчания уарт работает на 9600.


И ещё, помимо скорости есть какие-нибудь дополнительные настройки УАРТА, которые могут отличаться ?

Цитата(aaarrr @ May 19 2008, 00:10) *
Кавычек, как и пробела, не нужно.


Никаких кавычек я не ставил, они просто указывали на тот тескт, который я отсылал в телефон, а вот пробел попробую убрать.
Ден
Цитата(Kalina @ May 19 2008, 13:49) *
А для чего нужны эти команды?

Это команда перевода каретки и строки, Когда нажимаешь клавишу "Enter", то посылаешь эти команды.
aaarrr
Цитата(Kalina @ May 19 2008, 10:51) *
А для чего нужны эти команды?

Возврат каретки и перевод строки. Без них телефон ничего делать не будет.

Цитата(Kalina @ May 19 2008, 10:51) *
И ещё, помимо скорости есть какие-нибудь дополнительные настройки УАРТА, которые могут отличаться ?

Плюньте на скорость - на C55 autobaud все отработает. Настройки стандартные 8-N-1.

Попробуйте сначала сделать все вручную в терминале.
Kalina
Цитата(aaarrr @ May 19 2008, 10:54) *
Возврат каретки и перевод строки.

Большое спасибо, очень помогло!
Цитата(aaarrr @ May 19 2008, 10:54) *
Попробуйте сначала сделать все вручную в терминале.

Протеус рулит, просто замечательная программка a14.gif

Правда вот при первой отправке строчки: ATD+38098xxxxxxx
телефон отвечат 0, это означает команда выполнена ошибок нет, а вот только после повторной отправки ATD+38098xxxxxxx , спустя пол секунды (точно сколько надо ждать не знаю, но если не ждать ничего не выйдет) телефон уже отвечает 0ATD+38098xxxxxxx и начинает звонить!!! yeah.gif

Вот ещё что, перед тем как писать прогу, думал что-то найти похожее, но ничего не нашёл. Только встечались фразы, что без Сишки не обойтись, на асме будет геморойно. Мне как начинающему сейчас непонятно, в чём трудность передать 18 символов по юарту?Ведь нужно всего лишь:

1. Настроить юарт
2. Дважды передать 18 символов

И напоследок.. после освоения СМСок уже откроются широкие возможности для дистанционного управления по GSM каналу, кстати у меня есть справочник АТ команд для терминала Сименс М20 на русском, я думаю эти командами пользуются практически все сименсы, если кому надо, пишите, скину на мыло.
DpInRock
Вас ожидает еще столько удивительных и фееричных вещей для отправки СМС...smile.gif
aaarrr
Цитата(Kalina @ May 19 2008, 21:03) *
Правда вот при первой отправке строчки: ATD+38098xxxxxxx
телефон отвечат 0, это означает команда выполнена ошибок нет, а вот только после повторной отправки ATD+38098xxxxxxx , спустя пол секунды (точно сколько надо ждать не знаю, но если не ждать ничего не выйдет) телефон уже отвечает 0ATD+38098xxxxxxx и начинает звонить!!! yeah.gif

Не должен так себя вести C55. Для работы с контроллером лучше отключить эхо (ATE0) - станет гораздо удобнее разбирать ответы телефона.

Цитата(Kalina @ May 19 2008, 21:03) *
Только встечались фразы, что без Сишки не обойтись, на асме будет геморойно. Мне как начинающему сейчас непонятно, в чём трудность передать 18 символов по юарту?

На асме это вполне реализуемо, я как-то без "C" свободно обходился.
Передать 18-180-1800 символов просто, а вот написать нормальный парсер ответов модема уже гораздо сложнее.
@Ark
Цитата(Kalina @ May 19 2008, 21:03) *
...
Правда вот при первой отправке строчки: ATD+38098xxxxxxx
телефон отвечат 0, это означает команда выполнена ошибок нет, а вот только после повторной отправки ATD+38098xxxxxxx , спустя пол секунды (точно сколько надо ждать не знаю, но если не ждать ничего не выйдет) телефон уже отвечает 0ATD+38098xxxxxxx и начинает звонить!!! yeah.gif

Вообще-то, перед использованием модема, его положено инициализировать при помощи команды: ATZ. Далее - установить необходимые настройки (если они отличаются от стандартных, по умолчанию). И только после этого работать - звонить и т.д.
Amper25
Очевидно, что при первой отправке команды, модем подстраивает свой baudrate и, соответственно, не видит полностью команду. Пожтому и не реагирует.
aaarrr
Далеко не очевидно. А в начале действительно стоит сбросить модем и добиться ответа просто на "AT".
Ден
Цитата(Kalina @ May 20 2008, 00:03) *
И напоследок.. после освоения СМСок уже откроются широкие возможности для дистанционного управления по GSM каналу...

А сколько же станет возможностей, если освоить GPRS, правда с обычным телефоном это сделать сложновато, т.к. нужно программно реализовывать TCP/IP UDP стек, но зато это можно легко сделать с помощью GSM модулей, в которых этот стек уже организован.
Но все, же я думаю, для начала стоит освоить СМС. Скажем на http://rednaxela.net/pdu.php можно поконвертировать текст в формат PDU, а здесь Нажмите для просмотра прикрепленного файла можно почитать об этом формате/
Цитата
Очевидно, что при первой отправке команды, модем подстраивает свой baudrate и, соответственно, не видит полностью команду. Пожтому и не реагирует.

Модем при подаче на него АТ команд измеряет время которое длится передача символа А (как можно заметить все команды начинаются с этого символа), на основании этого он высчитывает Baudrate, выставляет высчитанный Baudrate и ждет прихода следующего символа, если следующий символ окажется Т значит скорость высчитана верна и после этого он выводит на экран (в терминальной программе) набранные символы АТ. По крайней мере, у меня телефон так определяет Baudrate, и я думаю, что другие телефоны будут это делать похожим образом. Поэтому телефон должен определять команду сразу.
MrYuran
Цитата(Kalina @ May 19 2008, 20:03) *
.. после освоения СМСок уже откроются широкие возможности для дистанционного управления по GSM каналу

Смотря чем управлять, а то ведь и без штанов можно остаться...
Клим
Рекомендую подключить телефон к компу и пробовать все в терминалке.
также последние версии протеуса должны понимать подключение к реальному ком-порту и прогу можно отлаживать в нем с подключенным телефоном.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.