Микропроцессоры и микроконтроллеры

 
 
 
«Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.»
Brian W. Kernighan.
Русский | Українська


Микропроцессоры и микроконтроллеры :: Канали вводу-виводу на основі МК51 :: Приклади апаратно-програмної реалізації вхідних каналів

Приклади апаратно-програмної реалізації вхідних каналів

Короткі відомості про АЦП К1113ПВ1

rn

Даний АЦП відноситься до класу АЦП послідовних наближень, функціонально закінчено і сполученої з МП за рівнем ТТЛ-сигналів.
Про характеристики та принципи функціонування даного АЦП можна прочитати в роботі [Гутников В.С. Інтегральна електроніка ...].

rn

Призначення висновків БІС АЦП таке: AI - аналоговий вхід (U = 0 ... 10,24 В або - 5,12 ... 5,12 В); V = 0 /1 - вибір двох /однополярного режиму перетворення; В /С - скидання /запуск перетворення; подача "сбросу" - мінімум на 2 мкс; N0 ... N9 - вихідний десятіразрядній код; # DR - сигнал готовності даних ( "Кінець перетворення"). Час перетворення ТПР складає 30 мкс. Отже, з урахуванням скидання /запуску і прийому даних загальний цикл перетворення складе макс. 50 мкс, тобто на АЦП такого типу можна реалізувати частоту опитування сигналів до 20 тис. вибірок /с. Основна перевага такого АЦП - безпосереднє сполучення з керуючим мікропроцесорним блоком.

rn

Слід зазначити, що даний АЦП не є ідеальним вибором з точки зору параметра ціна /продуктивність . У практичних розробках має сенс застосовувати інтегральні АЦП імпортного виробництва, наприклад Analog Devices або використовувати мікроконтролери з вбудованим АЦП (сімейства AVR або ADuC8xx сімейства MCS-51). У даній статті АЦП К1113ПВ1 розглядається як простий і наочний приклад.

rn

Розробка програмно-керованого каналу обміну

rn

При розробці програмно-керованого каналу АЦП логічно розміщується в просторі введення-виведення, тобто безпосередньо підключається до портів МК51. Видача сигналів управління здійснюється програмним шляхом через лінії портів МК51. Програма МК після запуску перетворення реалізує цикл очікування готовності даних сигнал # DR.

rn

Приймається такий розподіл ліній портів МК (для прикладу):

rn

Р0.0 ... Р0.7, Р1.0, Р1.1 - прийом вихідного коду АЦП - N0 ... N9;
P1.2 - прийом сигналу # DR;
Р1 .3 - видача сигналу В /С (скидання /запуск перетворення).

rn

Схема підключення БІС АЦП до МК51 показана на ріс.18.3.

rn

Програмний фрагмент обслуговування АЦП повинен підтримувати протокол керування АЦП відповідно до його тимчасової діаграмою і може мати вигляд:

rn

декларативная частина

rn

N0_7 equ P0

rn

N8 bit P1.0

rn

N9 bit P1.1

rn

DR bit P1.2

rn

BC bit P1.3

rn

measureL data 40H; комірки для розміщення прийнятого 10-бітного коду

rn

measureH data 41H

rn

rn

; Настройка портів

rn

CSEG

rn

MOV P0, # 0FFH; Порт Р0 на введення

rn

SETB N8; Настройка ліній Р1.0 ... Р1.2 на введення

rn

SETB N9

rn

SETB DR

rn

; Процедура обслуговування АЦП

rn

ADT: SETB BC; "Скидання" АЦП

rn

NOP; Інтервал - 2 мкс

rn

NOP

rn

CLR BC; Запуск перетворення

rn

WAIT: JB DR, WAIT; Очікування сигналу готовності (до DR = 0)

rn

MOV measureL, N0_7

rn

CLR A; Читання розрядів N8, N9

rn

MOV A, P1

rn

ANL A, # 00000011B

rn

MOV measureH, A

rn

SETB BC; Видача сигналу скидання АЦП

rn

RET

rn
Розробка аналого-цифрового каналу з обміном по переривання
rn

В даному випадку сигнал # DR з АЦП може подаватися на вхід зовнішнього запиту на переривання, наприклад, INT0. Інші висновки підключаються за схемою, зображеної на ріс.18.3.

rn

Після запуску перетворення МК51 не очікує сигналу готовності даних # DR = 0, а виконує поточну функціональну програму. Прийом коду в МК51 здійснюється у процедурі обробки переривання від входу INT0.

rn

Програмний фрагмент реалізації даного протоколу обміну:

rn

декларативная частина (нове в порівнянні з попередньою програмою)

rn

INIT_IE equ 10000001B; код для настроювання регістра IE

rn

; Стартовий блок

rn

CSEG

rn

org 0

rn

JMP INIT_SYS; Стартовий перехід

rn

; Вектор переходу на процедуру обробки переривання від INT0

rn

org 0003H

rn

VECT_INT0: JMP DR_INT

rn

; Ініціалізація системи

rn

org 002BH

rn

INIT_SYS: MOV IE, # INIT_IE; Настройка системи переривань

rn

SETB IT0; Сприйняття сигналу за зріз

rn

MOV P0, # 0FFH; Порт Р0 - на введення

rn

SETB N8; Лінії Р1.0, Р1.1 - на введення

rn

SETB N9

rn

; Функціональна програма

rn

. . .

rn

CALL ADT; Запуск перетворення

rn

. . .

rn

; Процедура запуску перетворення

rn

ADT: SETB BC; "Скидання" АЦП

rn

NOP; Інтервал - 2 мкс

rn

NOP

rn

CLR BC; Запуск перетворення

rn

RET

rn

Процедура обробки переривання від INT0 (завершення перетворення)

rn

DR_INT: PUSH ACC

rn

MOV measureL, N0_7; Читання молодших розрядів коду

rn

MOV A, P1

rn

ANL A, # 00000011B; Читання і виділення старших розрядів коду

rn

MOV measureH, A

rn

SETB BC; "Скидання" АЦП (зняття сигналу запуску)

rn

POP ACC

rn

RETI

rn

rn

Схема з обробкою сигналу готовності даних # DR як сигналу переривання забезпечує стійкість МК-системи до відмови АЦП або обриву лінії # DR, оскільки при цьому не буде відбуватися зацікліваніе програми, як у першому прикладі. Крім того, варіант з обробкою переривань дозволяє одночасно керувати кількома АЦП, беручи від них інформацію по мірі готовності без непродуктивно очікування.

rn

Блок аналого-цифрового перетворення може бути реалізований також і в зовнішньому адресний простір мікроконтролера. У цьому випадку вихідний код АЦП повинен подаватися на вхідний порт системи, побудований на основі регістра або ППІ ВВ55, а сигнали управління АЦП можуть подаватися через порт виводу (регістр) або безпосередньо від мікроконтролера. Сигнал готовності АЦП може подаватися на МК також через регістр або безпосередньо на вхід переривання в залежності від прийнятого варіанта реалізації системи.

rn

Блоки (канали) ціфроаналогового перетворення зазвичай відрізняються тим, що мікросхеми ЦАП є пристроями безперервної дії, тобто не вимагають спеціальних сигналів керування для запуску або скидання. Двійковий код, поданий на цифрові входи ЦАП, безперервно перетворюється в рівень струму або напруги на його аналоговому виході.

rn

Мікросхема ЦАП може бути підключена безпосередньо до портів мікроконтролера або до портів висновку (регістрах, ППІ), розміщених у зовнішньому адресний простір МК. Якщо розрядність ЦАП перевищує розрядність порту або регістра, необхідно використовувати додатковий порт або регістр. При цьому пересилання двійкового коду на ЦАП повинна виконуватися в два етапи - молодший і старший байти.