Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATMega+внешний модем
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
dimkadat
excl.gif Пришёл утром на работу, а мне говорят ты жил зря!!!
и ставят задачу в наши изделия подключить
контроллер, который через внешний модем, будет сообщать удалённому пользователю, опять же через модем, параметры изделия. Всё бы ничего, но вот как связать модем с МК, не знаю, какой модем лучше,
Помогите кто чем может, ссылками советами
, может кто чего делал пробовал.
сроку месяц дали maniac.gif
tobias_ivan
Да, любой подойдет!
Стыковку сделайте на преобразователе уровней TTL->+-12V: max232 или ей подобные (ad232, st232).
Изучите AT-команды.
На практике посмотрите как происходит связь между ПК и модемом при соединении удаленки. ДЛя этого на ком-порт повесте просмотрщик (например, PortMon, или другие: тут на форуме обсуждали такие программы), в нем увидете какие команды (а самое главное последовательность байт) передает программа ПК модему. Ну и передачу файла можно глянуть.
Кстати для начала можно все отработать именно на ПК. Напишите эмулятор Вашего контроллера и Вам станет ясно что и как из программы переносить в него.
Удачи!
Igor26
Цитата(tobias_ivan @ Oct 14 2005, 08:27)
Да, любой подойдет!
Стыковку сделайте на преобразователе уровней TTL->+-12V: max232 или ей подобные (ad232, st232).
Изучите AT-команды.
На практике посмотрите как происходит связь между ПК и модемом при соединении удаленки. ДЛя этого на ком-порт повесте просмотрщик (например, PortMon, или другие: тут на форуме обсуждали такие программы), в нем увидете какие команды (а самое главное последовательность байт) передает программа ПК модему. Ну и передачу файла можно глянуть.
Кстати для начала можно все отработать именно на ПК. Напишите эмулятор Вашего контроллера и Вам станет ясно что и как из программы переносить в него.
Удачи!
*

Посмотрите здесь, может пригодится. http://book.itep.ru/10/at_109.htm
dimkadat
я так понимаю, стандарт RS232 синхронный. Монитор СОМ порта есть, преобразование уровней тож ясно, АТ команды понятно.

задача в реалии

Где то, например в деревне Забодаево, есть радивещательный передатчик (в необслуживаемом режиме, но с телефоном) , а в областном центре Небодаево на РТПЦ, тож есть телефон, и комп, пришёл ну работу инженер Сидоров, нажал на кнопки - комп позвонил в Забодаево педатчику, а тот сообщил ему пару параметров. и всем хорошо.

я нашёл вот это http://yumi.ziet.zhitomir.ua/ct/hardware/modem_tut/gl3.shtml
Igor26
Цитата(dimkadat @ Oct 14 2005, 08:48)
я так понимаю, стандарт RS232 синхронный.  Монитор СОМ порта есть, преобразование уровней тож ясно, АТ команды понятно.

задача в реалии

Где то, например в деревне Забодаево, есть радивещательный передатчик (в необслуживаемом режиме, но с телефоном) , а в областном центре Небодаево на РТПЦ, тож есть телефон, и комп, пришёл ну работу инженер Сидоров, нажал на кнопки - комп позвонил в Забодаево педатчику, а тот сообщил ему пару параметров. и всем хорошо.

я нашёл вот это http://yumi.ziet.zhitomir.ua/ct/hardware/modem_tut/gl3.shtml
*

RS232 асинхронный стандарт! Для аппаратной стыковки модема с МК MAX232 скорее всего будет недостаточно, мало у ней входов/выходов. Посмотрите, что есть у MAXIMа для реализации полного RS232.
Pyku_He_oTTyda
Для полного СОМ есть и у AD микросхемы
Evgeny_CD
По поводу модемов - посмотрите на это
http://www.efo.ru/doc/MultiTech/MultiTech.pl?594
очень хорошо для embedded подходят.
MicronSys
Цитата(Igor26 @ Oct 14 2005, 09:06)
Цитата(dimkadat @ Oct 14 2005, 08:48)
я так понимаю, стандарт RS232 синхронный.  Монитор СОМ порта есть, преобразование уровней тож ясно, АТ команды понятно.

задача в реалии

Где то, например в деревне Забодаево, есть радивещательный передатчик (в необслуживаемом режиме, но с телефоном) , а в областном центре Небодаево на РТПЦ, тож есть телефон, и комп, пришёл ну работу инженер Сидоров, нажал на кнопки - комп позвонил в Забодаево педатчику, а тот сообщил ему пару параметров. и всем хорошо.

я нашёл вот это http://yumi.ziet.zhitomir.ua/ct/hardware/modem_tut/gl3.shtml
*

RS232 асинхронный стандарт! Для аппаратной стыковки модема с МК MAX232 скорее всего будет недостаточно, мало у ней входов/выходов. Посмотрите, что есть у MAXIMа для реализации полного RS232.
*



Зачем реализововать полный RS232 работает и при RX TX
больше не чего не надо
ну типа RTS DTR и т.д. и т.п.

( Говорю так по тому что есть опыт такой разроботки и она работает )

Atmega 8 + st232 + Zyxel 1496E дома стоит
Atmega 8 + st232 + Siemens C45 типа в поле
Работа ГУТ a14.gif
GrayCat
Действительно, для небыстрой пересылки маленьких пакетов можно обойтись только линиями RX, TX. Хотя, очень желательно еще линию DCD завести, чтобы всегда "независимо" знать, что связь есть. Прочие RTS-CTS, DTR-DCR нужны когда пересылаются большие блоки данных, не влазящие в буфера.

Базовый набор команд у всех модемов более/менее одинаков (называют их Hayes-совместимыми).

Инициализация: "ATZ"
Набор номера: "ATD1234567"
на вызываемом модеме выдается "RING"
говоришь ему "Поднять трубу": "ATA"
модемы договариваются, соединяются...
...выдают слово "CONNECT чего-то там с чем-то там"
ВСЕ, соединение установлено, пихаемые в порт байтики появляются с другой стороны, и наоборот wink.gif
Чтобы прекратить связь: "+++ATH"

Конечно, нужно предусмотреть обработку неудач соединения ("NO DIAL TONE", "BUSY", "NO CARRIER" и т.п.).

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

Подробнее -- см. в полных инструкциях на модемы. В свое время очень хорошо были расписаны, например, модемы US Robotics.
G}{OST
Кстати, по поводу протокола могу посоветовать неплохой апнот с атмела:
http://www.atmel.com/dyn/resources/prod_do...nts/doc1472.pdf
http://www.atmel.com/dyn/resources/prod_documents/AVR350.zip
Цитата
AVR350: XmodemCRC Receive Utility for AVR  (7 pages, revision C, updated 09/05)
The Xmodem protocol was created years ago as a simple means of having two computers talk to each other. With its half-duplex mode of operation, 128-byte packets, ACK/NACK responses and CRC data checking, the Xmodem has found its way into many applications.
G}{OST
Цитата(Igor26 @ Oct 14 2005, 09:43)
Посмотрите здесь, может пригодится. http://book.itep.ru/10/at_109.htm
*

Спасибо за ссылку, это просто чудо-книга w00t.gif
dimkadat
Параметров действительно не много, байт 20. скорость 1200 б/с подойдёт.
Значит , я так понимаю достаточно RX TX линий, асинхронный режим. Соеденяется через MAX232 При этом через определённые промежутки времени модем нужно ресетиь, для защиты от сбоев по питанию. Причём аппаратно.
Mega 128 работает как с обычным UARTом? Только АТ командами, при этом , если самому контроллеру звонить не нужно всё упрощается:
      |
      | line
      v
---------------¬
| модем       |
L---------------        TX mode
   ^          |
    | data  | вызов
    |         v
---------------¬
| MK            |
L---------------

________________________________
      |
      |
      v
---------------¬
| модем       |
L---------------         Init mode
   ^        ^
    | init   | reset
    |        |
---------------¬
| MK            |
L---------------
В общих чертах?
MicronSys
Цитата(GrayCat @ Oct 14 2005, 16:27)
Действительно, для небыстрой пересылки маленьких пакетов можно обойтись только линиями RX, TX. Хотя, очень желательно еще линию DCD завести, чтобы всегда "независимо" знать, что связь есть. Прочие RTS-CTS, DTR-DCR нужны когда пересылаются большие блоки данных, не влазящие в буфера.

Базовый набор команд у всех модемов более/менее одинаков (называют их Hayes-совместимыми).

Инициализация: "ATZ"
Набор номера: "ATD1234567"
на вызываемом модеме выдается  "RING"
говоришь ему "Поднять трубу": "ATA"
модемы договариваются, соединяются...
...выдают слово "CONNECT чего-то там с чем-то там"
ВСЕ, соединение установлено, пихаемые в порт байтики появляются с другой стороны, и наоборот  wink.gif
Чтобы прекратить связь: "+++ATH"

Конечно, нужно предусмотреть обработку неудач соединения ("NO DIAL TONE",
"BUSY", "NO CARRIER" и т.п.).



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

Подробнее -- см. в полных инструкциях на модемы. В свое время очень хорошо были расписаны, например, модемы US Robotics.
*



Я советую послать строку инита.
ATE0V0
Тогда модем будет отвечать цифр. командами
CONNECT - 1
RING -2
NO DIALTONE -6
BUSY - 7
Тогда будет проще

void Tel_Ok(void)
{
index_in-- ;
if (index_in>1) return;
switch (buffer_in[0])
{

case '1':// CONNECT

break;

case '2':// RING

break;

case '6':// NO DIALTONE

break;

case '7':// BUSY

break;

}
}
cheers.gif
Успехов
dimkadat
Извиняюсь за возвращение темы, но есть проблемма, стык МК<-> модем не работает.....
модем не принимает комманды от МК. Причём, если соеденить их через ПК (в протеусе соеденив СОМ1 и СОМ2) то всё превосходно работает....
В развязке стоит МАХ 232СРЕ , может в ней грабли? Модем Акорп 56000. cranky.gif
MicronSys
Цитата(dimkadat @ Dec 16 2005, 11:40) *
Извиняюсь за возвращение темы, но есть проблемма, стык МК<-> модем не работает.....
модем не принимает комманды от МК. Причём, если соеденить их через ПК (в протеусе соеденив СОМ1 и СОМ2) то всё превосходно работает....
В развязке стоит МАХ 232СРЕ , может в ней грабли? Модем Акорп 56000. cranky.gif


Схему в студию !!! smile3046.gif
dimkadat
Типа того, изиняйте за качество
"Вот так должно быть по лучшее"
MicronSys
Не ф...га не видно можно повторить только качество UP sad.gif
afe
Цитата(GrayCat @ Oct 14 2005, 15:27) *
Действительно, для небыстрой пересылки маленьких пакетов можно обойтись только линиями RX, TX. Хотя, очень желательно еще линию DCD завести, чтобы всегда "независимо" знать, что связь есть. Прочие RTS-CTS, DTR-DCR нужны когда пересылаются большие блоки данных, не влазящие в буфера.

Базовый набор команд у всех модемов более/менее одинаков (называют их Hayes-совместимыми).

Инициализация: "ATZ"
Набор номера: "ATD1234567"
на вызываемом модеме выдается "RING"
говоришь ему "Поднять трубу": "ATA"
модемы договариваются, соединяются...
...выдают слово "CONNECT чего-то там с чем-то там"
ВСЕ, соединение установлено, пихаемые в порт байтики появляются с другой стороны, и наоборот
Чтобы прекратить связь: "+++ATH"


А надежней DTR рубить связь, ибо для "+++" паузу определенную нужно выдерживать между плюсами ...

Цитата
Конечно, нужно предусмотреть обработку неудач соединения ("NO DIAL TONE", "BUSY", "NO CARRIER" и т.п.).


ATV0 и можно цифры разбирать вместо строк.

Рекомендую мануал для модемов Hayes-совместимых а в часности Rockwell (Conexant) чипсет:
htp://www.vector.kharkov.ua/new/img_picsupport_info.php?id=10&download=1

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

Подробнее -- см. в полных инструкциях на модемы. В свое время очень хорошо были расписаны, например, модемы US Robotics.
dimkadat
Спасибо всем! устройство рождено, испытано и готовится а производство. Модемы использовал зухель ОМНИ.

"А надежней DTR рубить связь, ибо для "+++" паузу определенную нужно выдерживать между плюсами ...
"

Да, работает на порядок проще и надёжнее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.