Перейти к содержанию
    

Megа16 не хочет набирать номер ...

Доброе время суток!

 

Вот решил позвонить с помощью АВР, но блин ничего не получилось :-(.

Вкратце ....подключил вывод 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

 

Ну, как понятно из темы, телефон молчал, правда проверка в протеусе на терминале дала позитивнй результат, строчка в УАРТЕ состветсвтовала действительности!

 

Возможно настройки связи модема телефона отличаются от настроек УАРТА контроллера, и вообще можно таким способом позвонить???

 

Всем желающим помочь заранее благодарен!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще советую посмотреть что телефон отвечает на эту команду.

т.е. сделать и обратный канал или хотябы терминалом с помощью компа.

 

 

 

Вспомнил тут, помоему надо писать не

"ATD +38098xxxxxxx"

 

а

 

ATD"+38098xxxxxxx"

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кавычек, как и пробела, не нужно. В конце номера следует добавить ";", если нужно звонить голосом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще советую посмотреть что телефон отвечает на эту команду.

т.е. сделать и обратный канал или хотябы терминалом с помощью компа.

Вспомнил тут, помоему надо писать не

"ATD +38098xxxxxxx"

 

а

 

ATD"+38098xxxxxxx"

 

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

Не надо там никаких кавычек.

Пробелы тоже не нужно, хотя с ними обычно все работает.

В конце строки обязательно 0x0D,0x0A.

И самое главное, у большинства телефонов по умолчания уарт работает на 9600. Если хотите другой, и увренны, что телефон это поддерживает, то сначала нужно, чтоб српботал autobading. Можно перед набором номера послать пару раз "AT\r\n" c паузами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В конце строки обязательно 0x0D,0x0A.

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

 

 

И самое главное, у большинства телефонов по умолчания уарт работает на 9600.

 

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

 

Кавычек, как и пробела, не нужно.

 

Никаких кавычек я не ставил, они просто указывали на тот тескт, который я отсылал в телефон, а вот пробел попробую убрать.

Изменено пользователем Kalina

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Это команда перевода каретки и строки, Когда нажимаешь клавишу "Enter", то посылаешь эти команды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

 

Попробуйте сначала сделать все вручную в терминале.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возврат каретки и перевод строки.

Большое спасибо, очень помогло!

Попробуйте сначала сделать все вручную в терминале.

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

 

Правда вот при первой отправке строчки: ATD+38098xxxxxxx

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

 

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

 

1. Настроить юарт

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

 

И напоследок.. после освоения СМСок уже откроются широкие возможности для дистанционного управления по GSM каналу, кстати у меня есть справочник АТ команд для терминала Сименс М20 на русском, я думаю эти командами пользуются практически все сименсы, если кому надо, пишите, скину на мыло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вас ожидает еще столько удивительных и фееричных вещей для отправки СМС...:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правда вот при первой отправке строчки: ATD+38098xxxxxxx

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

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

 

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

На асме это вполне реализуемо, я как-то без "C" свободно обходился.

Передать 18-180-1800 символов просто, а вот написать нормальный парсер ответов модема уже гораздо сложнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость @Ark
...

Правда вот при первой отправке строчки: ATD+38098xxxxxxx

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

Вообще-то, перед использованием модема, его положено инициализировать при помощи команды: ATZ. Далее - установить необходимые настройки (если они отличаются от стандартных, по умолчанию). И только после этого работать - звонить и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очевидно, что при первой отправке команды, модем подстраивает свой baudrate и, соответственно, не видит полностью команду. Пожтому и не реагирует.

Изменено пользователем Amper25

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Далеко не очевидно. А в начале действительно стоит сбросить модем и добиться ответа просто на "AT".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...