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