
- •Розділ 5 інтерфейс пристроїв введення-виведення
- •5.1. Функції інтерфейсу введення-виведення
- •5.2. Програмований паралельний інтерфейс
- •5.3. Програмований інтерфейс клавіатури та індикації
- •5.4. Програмований таймер
- •5.5. Архітектура і функціональні можливості контролера прямого доступу до пам'яті
- •5.6. Програмований послідовний інтерфейс
- •5.7. Програмований контролер переривань
- •5.8. Приклад розробки мікропроцесорної системи
5.8. Приклад розробки мікропроцесорної системи
Нехай треба розробити принципову схему і програмне забезпечення МПС керування широтно-імпульсного стабілізатора напруги з частотою f = 1 кГц. Мікропроцесорна система керування забезпечує оброблення сигналу зворотного зв'язку U із виходу АЦП за законом пропорційного регулятора:
, де
— коефіцієнт заповнення імпульсів
широтно-імпульсного стабілізатора;
20H —
код опорного сигналу.
Структурну схему МПС керування зображено на рис. 5.64.
Рис. 5.64. Структурна схема МПС керування
Сигнал зворотного зв'язку надходить на АЦП, де він перетворюється на двійковий код. Цей код по системній шині надходить у ЦП, де за програмою, записаною у ПЗП, обробляється за законом пропорційного регулятора. Результатом обчислення є коефіцієнт заповнення, який завантажується у регістр таймера як константа. На виході таймера отримуємо логічні рівні імпульсів керування ШІП.
Функціональну схему мікропроцесорної системи керування показано на рис. 5.65.
Під час розробки функціональної схеми центрального процесора виникає потреба у демультиплексуванні шини адреси-даних, буферизації шин адреси (АВ) і шин даних (BD), а
Рис. 5.65. Функціональна схема МПС
також у формуванні системних
керуючих сигналів пам'яті та зовнішніх
пристроїв. Демультиплексування
здійснюється за допомогою двох ВІС
К1810ИР82, що виконують функції фіксатора
адреси і буфера шини АВ,
буферизації шин даних
- за допомогою двоспрямованих шинних
формувачів К1810ВА86, які підсилюють
сигнали шини даних і формування
керуючих сигналів - за допомогою
комбінаційних логічних елементів. На
виході цих елементів формуються сигнали
,
,
,
.
Оскільки у розроблюваній МПС не потрібні режими 1ІДП, переривань та обміну за сигналом готовності, то порівняно зі схемою модуля ЦП (див. рис. 2.40) схема на рис. 5.65 не містить сигналів переривань, готовності, запиту ПДП і дозволу шин BUSEN. Тому на входи ВІС генератора, ЦП, регістрів-фіксаторів та буферних регістрів подаються постійні логічні рівні нуля або одиниці. Відсутні також кінцеві каскади схеми формування керуючих сигналів (у цій схемі немає потреби переводити керуючий сигнал у третій стан).
Модуль ПЗП виконано на базі двох ВІС КР556РТ5 ємністю 512 х 8 біт кожна. Пам'ять організована у вигляді двох банків пам'яті - молодшого і старшого. Молодший банк вмикається до молодшої половини шини даних D7-D0 і містить лише комірки пам'яті з парними адресами; старший банк - до старшої половини шини даних D15-D8 і містить лише комірки пам'яті з непарними адресами. Зчитування з ПЗП відбувається під час виконання циклу читання пам'яті. При цьому формується сигнал = 0, який і переводить виходи ВІС ПЗП в активний стан. Із ПЗП завжди зчитується слово. Для цього прикладу початкову адресу ПЗП визначимо за нульових значень А9-A1, A0, а кінцеву - за одиничних.
Отже, початкова адреса ПЗП - 00000H, кінцева адреса
Функціональна схема містить також АЦП К572ПВ1,який є 12-розрядним перетворювачем напруги на двійковий код низької швидкодії. Оскільки АЦП має внутрішній регістр із входом керування третім станом, зовнішній порт введення не потрібний. Вихід АЦП з'єднаний з лініями D11 –D0. З погляду процесора АЦП є 16-розрядиим портом. Адреса 16-роз-рядного порту має бути парною. Як видно з рис. 5.65, АЦП вибирається за A3 = 1. Тому адреса АЦП буває будь-якою за A3=1, A0 = 0. Наприклад, оберемо адресу АЦП, що дорівнює 08H.
Програмований таймер К1810ВИ54 у схемі (див. рис. 5.65; призначений для генерації імпульсів керування широтно-імпульсним стабілізатором. Таймер містить три незалежних канали, кожний з яких може бути запрограмований па роботу в одному з шести режимів для двійкового та двійково-десяткового обчислення. У цьому прикладі використовують такі режими роботи каналів:
• канал 0 — програмований мультивібратор;
• канал 1 — імпульсний генератор частоти для запуску каналу 0;
• канал 2 — імпульсний генератор для задавання частоти роботи АЦП.
Як видно з рис. 5.65, таймер вибирається за адреси з A3 = = 0. Лінії A1 і А2 обирають один з трьох каналів таймера або регістр керуючого слова. Отже, адресами таймера є:
• адреса каналу 0 — 00H;
• адреса каналу 1 — 02H;
• адреса каналу 2 — 04H;
• адреса RWCH — 06H.
Розрахуємо константи
завантаження таймера так. Перетворимо
коефіцієнт заповнення широтно-імпульсного
стабілізатора gamma
на константу перерахунку,
що завантажується у таймер. Зауважимо,
що вихідна частота стабілізатора
дорівнює 1 кГц, а частота тактових
імпульсів
МГц.
Канал 0. Згідно із завданням коефіцієнт заповнення імпульсів широтно-імпульсного стабілізатора
.
Визначимо період роботи широтно-імпульсного стабілізатора, мс:
.
Тоді тривалість імпульсу, мс:
Тривалість лічильних імпульсів каналів (CLK) за частоти роботи процесора 5 МГц, не:
.
Код завантаження каналу 0
таймера визначають як відношення
до
:
Рис. 5.66. Алгоритм керування широтно-імпульсним стабілізатором
Канал 1. Коефіцієнт ділення каналу 1 визначають як відношення тривалості періоду широтно-імпульсного стабілізатора до тривалості періоду Tclk:
Канал 2. Коефіцієнт ділення каналу 2 визначають як відношення тривалості періоду тактових імпульсів АЦП (170 кГц) до тривалості періоду Tclk:
.
Алгоритм керування широтно-імпульсним стабілізатором показано на рис. 5.66. Спочатку в обидва канали таймера завантажуються керуючі слова. Керуюче слово для каналу 0 дорівнює 00110010В і визначає режим 1 лічильника 0, завантаження відбувається спочатку молодшого, а потім старшого байта, лічення — двійкове. Керуюче слово для першого і другого каналів визначає режим 1, завантаження спочатку молодшого, а потім старшого байтів, лічення — двійкове. Керуючі слова дорівнюють відповідно 01110100В і 10110100В.
Після завантаження керуючих слів програма завантажує початкові значення у канали 1 та 2 таймера. На цьому ініціалізація закінчується і починається нескінченний цикл введення коду зворотної напруги з АЦП, перерахування її на код завантаження і виведення його у канал 0.
Зазначимо, що після системного скидання регістри CS і IP МП відповідно набудуть значень 0FFFFH і 0000Н. Це призведе до того, що в адресі першої комірки ПЗП, до якої після скидання звернеться МП у першому машинному циклі ВИБІРКА КОМАНДИ, чотири молодших розряди будуть нульовими, а всі інші — одиничними. Тоді ця адреса дорівнюватиме 3F0H.
Програма має такий вигляд:
|
ORG 3F0H |
|
|
JMP START |
|
|
ORG 100Н |
|
START |
MOV AL, 00110010B |
Формування в AL керуючого слова режиму 1 каналу 0 |
|
OUT 06, AL |
Виведення керуючого слова в ; РКС |
|
MOV AL, 01110100B |
Формування в AL керуючого ; слова в РКС |
|
OUT 06, AL |
Виведення керуючого слова ;режиму 2 ; каналу 1 |
|
MOV AL,10110100В |
Формування в AL керуючого слова режиму каналу 2 |
|
OUT 06, AL |
Виведення керуючого слова ; режиму РКС |
|
MOV AX, 5000 |
Задавання частоти перетворен-; ня f = 1 кГц |
|
OUT 02H, AL |
Запис молодшого байта коду Попереднє встановлення в канал 1 |
|
MOVAL, AH |
Запис старшого байта коду ; Попереднє встановлення в канал 1 |
|
OUT 02H, AL |
Задавання частоти АЦП f = ; = 170кГц |
|
MOV AL ,29 |
Запис коду, попереднє встанов-; лення в канал 2 |
|
OUT 04H, AL MOV AL, 00 OUT 04H, AL |
|
L: |
IN AX, 08H |
Введення сигналу зворотного ; зв'язку U; |
|
AND AX, 0000 1111 1111 1111B |
Виділення значущих цифр U ; Віднімання U — 20Н, результат — у АХ; |
|
MOV BL, 20 |
|
|
MUL BL |
Множення на 20:20(U-20H), результат— в АХ |
|
ADD AX, 2500 |
Додавання 2500+20(U-20H), результат — в АХ |
|
OUT 00H,AL |
Запис молодшого байта коду Попереднє встановлення в канал 0 |
|
MOV AL, AH |
|
|
OUT 00H,AL |
Запис старшого байта коду Попереднє встановлення в канал 0 |
|
MOV CX, 100 |
Затримка на час, більший ніж тривалість перетворення АЦП |
D: |
LOOP D |
t = 16 • 100 • 200 (нc) |
|
JMP L |
Перейти за адресою з міткою L (цикл) |
|
END |
|
Контрольні запитання
1. Як забезпечується зберігання інформації, що надходить від ПВВ?
2. Назвіть способи адресування портів введення-виведення.
3. Дайте порівняльну характеристику видів обміну.
4. Які є типи програмного обміну?
5. Наведіть структурну схему обміну за стробом готовності.
6. Наведіть структурну схему обміну за перериванням.
7. Наведіть структурну схему обміну в режимі ПДП.
8. Як відбувається запам'ятовування вмісту акумулятора, РЗП, програмного лічильника та прапорців під час обміну за перериванням?
9. В яких випадках доцільно застосовувати прямий доступ до пам'яті?
10. Яке призначення ВІС програмованого паралельного інтерфейсу КР580ВВ55?
11. Опишіть режими роботи програмованого паралельного інтерфейсу.
12. Назвіть можливі комбінації ввімкнення портів ВІС КР580ВВ55.
13. Які порти паралельного інтерфейсу можуть працювати в усіх можливих режимах?
14. Запишіть керуюче слово для роботи паралельного інтерфейсу в режимі 0 під час налагодження портів А і В на виведення, а порту С — на введення.
15. Який принцип скидання-встановлення розрядів порту С?
16. Яке призначення ВІС програмованого інтерфейсу клавіатури та індикації?
17. Яку максимальну кількість клавіш можна з'єднати з ВІС програмованого інтерфейсу клавіатури та індикації КР580ВВ79?
18. Поясніть особливості режиму опитування матриці клавіатури.
19. Поясніть особливості режиму опитування матриці датчиків.
20. Поясніть особливості режиму введення за стробом.
21. Які функції виконує програмований таймер у МПС?
22. З яких блоків складається таймер? Що входить до складу одного лічильника?
23. Опишіть режими роботи таймера.
24. Чим відрізняється дія сигналу GATE в режимах 0 та 1 ?
25. Які нові функції має ВІС таймера КР1810ВИ54 порівняно з ВІС таймера КР580ВИ53?
26. Назвіть можливі комбінації роботи каналів таймера.
27. Назвіть приклади використання таймера МПС.
28. Запишіть керуючі слова для роботи таймерів у режимах 0, 2, 5.
29. Як можна прочитати вміст внутрішніх регістрів таймера?
30. У чому полягає відмінність між режимами 4 і 5?
31. В якому режимі таймер працює як подільник частоти?
32. Яке максимальне число можна завантажити у внутрішні регістри таймера?
33. Для чого потрібні лінії Л0, А1 таймера?
34. Які функції виконує КПДП у мікропроцесорній системі?
35. Розкажіть про режими роботи КПДП.
36. В яких випадках доцільно застосовувати прямий доступ до пам'яті?
37. Яке призначення регістра станів?
38. Який принцип призначення пріоритетів каналів?
39. Які функції виконує порт послідовного передавання даних у VGC?
40. Розкажіть про режими роботи ВІС.
41. Поясніть роботу ВІС послідовного інтерфейсу в асинхронному режимі.
42. Поясніть роботу ВІС послідовного інтерфейсу в синхронному режимі.
43. Як здійснюється обмін даними за синхронного режиму з внутрішньою і зовнішньою синхронізацією?
44. Які функції виконує контролер переривань у МПС керування?
45. Яку кількість запитів переривань може обслужити одна ВІС ПКП?
46. Якої максимальної кількості запитів переривань можна досягти у системі переривань на базі ВІС КР580ВН59?
47. Для чого призначений режим спеціального маскування?
48. Які пріоритетні схеми оброблення запитів переривань реалізуються у ВІС КР580ВН59?
49. Як змінюються пріоритети у схемі циклічного оброблення пріоритетів?
50. Коли доцільно використовувати режим фіксованих пріоритетів?
51. Коли доцільно використовувати режим циклічних пріоритетів?
52. Який із входів IRQ має вищий пріоритет?
53. Як можна зменшити пріоритет входів IRQ?
54. Як можна вимкнути одну або кілька ліній IRQ?
55. Коли можна записувати команди ініціалізації і керування?
56. Для чого необхідні сигнали І NT і І NT А?