Режими роботи модему

1.11. Режими роботи модему. Повідомлення і відповіді модему. Функції, що виконуються модемом в різних режимах. Дії для переходу з одного режиму в інший

Модем може перебувати в одному з двох основних режимів - командному режимі або режимі даних. У командному режимі модем виконує команди, що вводяться оператором. У режимі даних модем сприймає все, що може бути отримано від комп'ютера, як дані, які повинні бути передані в лінію. Таким чином, марно вводити команди в режимі даних, так як модем не буде на них реагувати.

Перемикання модему в режим даних. Модем автоматично переходить в режим даних після встановлення з'єднання з віддаленим модемом.

Перемикання модему в командний режим. Модем автоматично перемикається в командний режим в наступних випадках:

  • при включенні харчування;
  • при розриві з'єднання з віддаленим модемом;
  • якщо модем набирає номер, а ми натиснули якусь клавішу на клавіатурі комп'ютера. У цьому випадку, перед тим як перейти в командний режим, модем анулює поточний виклик;
  • після введення оператором Escape-послідовності (ручна зміна режиму).

Ручна зміна режиму. Якщо модем встановив асинхронне з'єднання з віддаленим модемом і знаходиться в режимі даних, то перевести його в командний режим, не пориваючи поточного з'єднання, можна, запровадивши з клавіатури спеціальну керуючу послідовність символів, яка називається Escape-послідовністю. За замовчуванням, Escape-послідовністю є послідовність з трьох поспіль символів "плюс" - "+++". Якщо потрібно, дані символи можна замінити, змінивши вміст регістра S2.

Для відновлення передачі даних необхідно ввести команду ATO. Модем видасть повідомлення "CONNECT nnnn", де nnnn - параметри встановленого з'єднання, після чого повернеться в режим даних.

Основні принципи програмування модемів.

Доступ до модему відбувається через послідовний асинхронний порт. При цьому для передачі модему команд їх необхідно просто записати в регістр даних COM-порту, на якому знаходиться модем. Відповідь від модему також надходить через послідовний порт. Передаючи модему команди, його можна проинициализировать, перевести в режим автовідповідача або змусити набрати номер.

Отже, після встановлення зв'язку з віддаленим модемом, комунікаційна програма може починати обмін даними. Обмін даними так само, як і передача команд, здійснюється через СОМ-порт, Потім за допомогою спеціальної Escape-послідовності можна перемкнути модем з режиму передачі даних назад в командний режим і покласти трубку, розірвавши зв'язок з віддаленим модемом.

Послідовність дій для встановлення зв'язку

а) Ініціалізація COM-порту

Проводимо ініціалізацію COM-порту, до якого підключений модем. Для цього програмуємо регістри мікросхеми UART, задаючи формат даних і швидкість обміну. Зауважимо, що модем буде проводити з'єднання з віддаленим модемом саме на цій швидкості. Чим вище швидкість, тим швидше буде відбуватися обмін даними з віддаленим модемом.

б) Ініціалізація модему

Передаючи модему AT-команди через СОМ-порт, робимо його ініціалізацію. За допомогою AT-команд можна встановити різні режими роботи модему - вибрати протокол обміну, встановити набір діагностичних повідомлень модему і т.д.

в) З'єднання з віддаленим модемом

Передаємо модему команду набору номера (ATD). У цьому випадку модем набирає номер і намагається встановити зв'язок з віддаленим модемом. Або передаємо модему команду AT S0 = 1 для перекладу його в режим автовідповідача. Після цього модем очікує дзвінка від віддаленого модему, а коли він приходить, намагається встановити з ним зв'язок.

г) Можливі відповіді модему

Залежно від режиму, в якому знаходиться модем, він може передавати комп'ютера різні повідомлення. Наприклад, якщо модем виробляє виклик віддаленого модему (AT-команда ATD), то модем може видати такі повідомлення:

CONNECT - Успішне з'єднання
BUSY - Номер зайнятий
NO DIALTONE - На лінії відсутній сигнал комутатора
NO ANSWER - Абонент не відповідає
NO CARRIER - Невдала спроба встановити зв'язок

Коли приходить дзвінок, модем передає комп'ютера повідомлення RING, якщо регістр модему SO дорівнює нулю. В цьому випадку для відповіді на дзвінок треба послати модему команду АТА. Якщо модем знаходиться в режимі автовідповідача і регістр модему SO не дорівнює нулю, то модем автоматично намагається відповісти на дзвінок і може видати наступні повідомлення:

CONNECT - Успішне з'єднання
NO DIALTONE - Ні несучої частоти віддаленого модему
NO CARRIER - Невдала спроба встановити зв'язок

Якщо модем передав комп'ютера повідомлення BUSY, NO DIALTONE, NO ANSWER, NO CARRIER значить, провести з'єднання з віддаленим модемом не вдалося і треба спробувати повторити з'єднання.

д) Переклад модему в командний режим

Після закінчення роботи комунікаційна програма повинна перевести модем в командний режим і передати йому команду покласти трубку (АТНО) Для перекладу модему в командний режим можна скористатися Escape-послідовністю "+++". Після того, як модем перейшов в командний режим, можна знову передавати йому AT-команди.

е) Скидання сигналів DTR і RTS

Низький рівень сигналів DTR і RTS повідомляє модему, що комп'ютер не готовий до прийому даних через СОМ-порт.

При роботі з асинхронним послідовним адаптером ви можете використовувати механізм переривань. Так як передача і прийом даних модемом представляють собою тривалий процес, то застосування переривань від порту дозволяє використовувати процесорний час для інших потреб.

Схожі статті