скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыДипломная работа: Апаратно–програмний комплекс GSM-МТМ

ctl = inp(LCR); // LCR - адреса регістра керування

// установлюємо старший біт регістра

outp(LCR_N, ctl | 0x80);

// обчислюємо значення для дільника частоти

//(змінна baud визначає швидкість обміну,

// яку ми хочемо установити)

switch(baud) {

case 110: div = 1040; break;

case 150: div = 768; break;

case 300: div = 384; break;

case 600: div = 192; break;

case 1200: div = 96; break;

case 2400: div = 48; break;

case 4800: div = 24; break;

case 9600: div = 12; break;

case 19200: div = 6; break;

case 38400: div = 3; break;

case 57600: div = 2; break;

case 115200: div =1; break;

default: return(-1); break;

}

// записуємо значення дільника частоти,

// молодший байт у регістр даних, старший –

// у регістр керування перериваннями

// ICR - адреса регістра керування перериваннями

outp(ICR, (div >> 8) & 0x00ff);

// DAT - адреса регістра даних

outp(DAT, div & 0x00ff);

// переводимо регістр даних і регістр

// керування перериваннями назад у звичайний

// для них режим

ctl = inp(LCR); // LCR - адреса регістра керування

//скидаємо старший біт регістра

outp(LCR, ctl & 0x7f);

Потім треба визначити формат даних. Для цього запишемо нове керуюче слово в регістр LCR:

// записуємо нове керуюче слово

outp(LCR, 00000011B);

// керуюче слово 00000011B встановлює довжину

// слова 8 біт, один стоповий біт, скасовує перевірку

// на парність і скасовує режим фіксації парності

Останнім кроком в ініціалізації регістрів UART є ініціалізація регістра керування перериваннями. Ми повинні спеціально вказати послідовному адаптеру, коли він повинен генерувати переривання.

Створення процедури обробки переривання для СОМ порта

Послідовний асинхронний адаптер можна запрограмувати таким чином, що кожний раз, коли він прийме чи передасть черговий байт, буде згенероване відповідне переривання. Переривання можуть генеруватися асинхронним адаптером у таких випадках:

змінився стан лінії приймача: відбулося переповнення приймача, відбулася помилка парності чи синхронізації, лінія перейшла в стан BREAK (розрив);

дані прийнят доступні для читання через регістр даних;

регістр передавача порожній;

змінився стан модему: змінився стан ліній CTS, RI, DCD, DSR.

Існу можливість окремо забороняти чи дозволяти певний тип переривання. Для цього необхідно встановити відповідні біти в регістрі керування перериваннями.

Кожному COM-порту відповідає, крім базової адреси його регістрів, лінія IRQ [3]. Стандартний розподіл апаратних переривань такий:

COM-порт IRQ Номер переривання
COM1 IRQ4 INT 0Ch
COM2 IRQ3 INT 0Bh
COM3 IRQ4 INT 0Ch
COM4 IRQ3 INT 0Bh

Для встановлення власного оброблювача переривання від СОМ порту необхідно замінити процедуру обробки переривання, яка встановлена операційною системою або БІОСом на власну процедуру обробки переривання. Після цього дозволити переривання, яке було встановлено.

При реалізації процедури обробки переривання необхідно керуватися таким алгоритмом:

1.        Визначити причину переривання

Для цього потрібно проаналізувати стан бітів D1 D2, які визначають причину переривання:

Біти D2 D1 Причина переривання
00 переривання по лін стану;
01 буфер передавача порожній;
10 дані прийняті;
11 змінився стан модему.

У залежност від того, яке відбулося переривання, його треба відповідним чином обробити.

Алгоритм роботи для кожного типу переривання від СОМ порта:

Відбулося переривання по лінії стану

Прочитати регістр стану лінії і конкретизувати причину переривання (дане переривання скидається після читання регістра стану лінії). Якщо це необхідно, подати основній програмі сигнал про помилку, що відбулася, з метою її усунення. Наприклад, у випадку розриву лінії (BREAK) (віддалений модем повісив трубку), можна було б спробувати відновити зв'язок.

Переривання по прийому даних

Черговий символ прийнятий, і його можна прочитати через регістр даних. Переривання скидається після читання регістра даних. Прийнятий байт необхідно записати в прийомний буфер програми, з якого згодом його прочитає основна програма. Буфер приймача зручно організувати у виді черги.

Буфер передавача порожній

Переривання відбувається у випадку, якщо буфер передавача порожній і можна передати COM-порту черговий символ. Можна організувати буфер передавача програми, у який програма буде записувати дані, призначені для відправки через COM-порт. У цьому випадку, коли прийде переривання, треба прочитати черговий символ з програмного буфера і записати його в регістр даних. Переривання скидається після запису чергового символу в регістр даних UART. Якщо немає даних для передач (програмний буфер передавача порожній), можна заборонити це переривання через регістр керування перериваннями.

Змінився стан модему

Переривання відбувається при зміні стану вхідних ліній CTS, RI, DCD, DSR. Стан цих ліній можна визначити, прочитавши регістр стану модему MSR. Це переривання використовується для виявлення сигналу RING на телефонній лінії. Переривання автоматично скидається після читання регістра стану модему.

За час який переривання оброблялося може наступити нове переривання по ліній IRQ, тому необхідно проаналізувати біт D0. У випадку коли переривання знову згенероване (біт D0 регістра ідентифікації переривань дорівнює одиниці). Тоді перед завершенням обробки переривання необхідно обробити наступне переривання відповідно до стану бітів D1, D2. Так варто робити до тих пір, поки не будуть оброблені всі переривання (біт D0 не буде рівний нулю).

Виконавши вс вищевказані застереження та вимоги для виходу з процедури обробки переривання необхідно передати контролеру переривань команду обробки кінця переривання. Для цього посилається в порт з адресою 20h команда кінця переривання і здійснюється вихід з процедури обробки переривання:

mov al,20h

out 20h,al

iret

Установка оброблювача переривань

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

Останнім кроком в ініціалізації регістрів UART є установка регістра керування перериваннями, у який записується занчення причин при настанні яких генеруються переривання. Наприклад, щоб дозволити генерацію переривань при надходженн чергового символу, треба записати значення для бітів D1,D2 відповідно 0 та 1 у регістрі керування перериваннями:

// установлюємо регістр керування перериваннями

//ICR - адреса регістра керування перериваннями

outp(port_adr+ICR, 1);

На цьому етап ніціалізації регістрів UART можна вважати закінченим. Тепер COM-порт готовий до обміну через нього даними з мобільним телефоном.

Ініціалізація мобільного телефону

Ініціалізація мобільного телефону здійснюється через передачу мобільному телефону АТ команд, які реалізовані в стандарті 07.07, 05.07 міжнародної організації ETSI 15.03.2000 року.

Для ніціалізації мобільного телефону завантажимо стандартну (заводську) конфігурацію параметрів стільникового термінального обладнання.

Для цього передамо мобільному телефону команду ATZ. Якщо ініціалізація пройшла успішно мобільний телефно поверне “ОК”. Після цього задамо режим передачі номеру телефону на СОМ порт: АТ+CLIP = 1

Список основних команд приведений у пункці 2.2 цього розділу [4].

Після ніціалізації мобільного телефону, комплекс переходить у режим очікування дзвінків. Якщо у процесі роботи мобільний телефон повернув на СОМ порт команду <ОК>, то команда розпізнана, виконана без помилок.

Завершення програми

Для завершення комунікаційної програми, що використовує переривання, необхідно скинути сигнали DTR і RTS і заборонити через контролер переривань переривання від COM-порту:

// зчитуємо стан регістра маски переривань

mov dx,21h

in dx,al

// забороняємо переривання від порту COM1

or al,00010000b

// записуємо нове значення в регістр

// маски переривань

out dx,al

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

2.4      Аналіз елементної бази, інтерфейси комплексу

При вибор елементної бази враховувалась ціна деталей. Вибір зроблено на мобільному телефоні Motorola який підтримує інтерфейс через СОМ порт на швидкост 9600кбіт/с, Система команд управління мобільним телефоном схожа з системою HYPES і визначена міжнародною організацією ETSI.

Для управління мобільним телефоном використовується інтерфейс RS232C через СОМ порт комп'ютера. Швидкість 9600 є відносно малою швидкістю обміну даними, тому ЕОМ використовується малопотужна IBM PC 486DX4. Вона має менші габарити і вартість. Але за рахунок цього збільшились вимоги до часових характеристик програмного забезпечення оскільки без втрат необхідно передати та прийняти дані з мобільного телефону. Для того, щоб була можливість впевниного прийому–передач даних необхідно використовувати буферизований ввід–вивід. Такий (буферизований) ввід–вивід досягаєтсья за допомогою використання апаратних переривань. При реалізації апаратного буфера для мікроконтроллера UART16xxx без помилок реалізована лише мікросхема UART1685A, яка не використовується в комп'ютерах IBM PC486DX2, тому для виконання поставленого завдання потрібно реалізувати програмний буфер даних. Його можна реалізувати написавши додатковий драйвер СОМ порту. Тобто написати спеціальну програму, яка обслуговуватиме апаратне переривання.

Використавши мікроконтроллер DTMF cерії M8870 фірми Motorola, та DTMF набір з телефонного апарату комплекс реалізує інтерфейс між користувачем. У якості узгоджуючого пристрою використовується мікросхема MAX232. У якості підсилювачів телефонного сигналу використовуються підсилювачі на базі транзисторів серії КТ1023.

Для розділення вхідних та вихідних сигналів, та узгодження НЧ сигналу з телефонною лінією використовується узгоджуючий трансформатор.

Опис нтерфейсів комплексу

Живлення

Комутуюча плата комплексу вмонтована вередину системного блоку комп’ютера IBM486DX4, тому живлення здійснюється безпосередньо від системного блоку живлення. Системний бок живлення живиться від міської електромережі з напругою 220В, 50Гц. Потужність системного блоку з комутуючою платою < 100Вт

Роз‘єм RJ11

Для підключення тональної телефонної лінії або міні АТС у комплекс вмонтований роз’єм RJ11. Структурна схема цього роз’єму приведена на рис 1.

рис. 1 Підключення телефонної лінії до роз’єму RJ11

Підключення мобільного телефону до СОМ порту

рис. 2. Стандартний роз’єм мобільного телефону

В мобільний телефон вмонтований роз’єм приведений на рис. 2. Позначення виводів цього роз’єму приведене в таблиці 1.

Таблиця 1. Позначення та назви сигналів для мобілього телефону

Назва Функція Вхід/вихід
1 DC in DC для заряда батереї Вхід/вихід
2 Data in Прийом даних Вхід
3 DG Цифрова земля
4 Data out Відправка даних Вихід
5 Vcc +5V вихід Вихід
6 Test Ключ для виключення телефону підключивши +5V. Тест
7 Mute 0 - номрмальний, 1- музика при визові
8 Ext/Int Протативний / віддалений вхід
9 GND Аналогова земля
10 Accsessory Зв’язаний з мікрофоном / динаміком
11 BF in BF вхід Вхід
12 BF out BF вихід Вихід

Для СОМ та LPT портів приведені лише схематичні позначення, оскільки вони входять до стандартного комплекту системного блоку IBM486DX4

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.