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

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


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

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

Краткие сведения об АЦП К1113ПВ1

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

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

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

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

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

Принимаем такое распределение линий портов МК (для примера):

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

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

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

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

N0_7 equ P0

N8 bit P1.0

N9 bit P1.1

DR bit P1.2

BC bit P1.3

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

measureH data 41H

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

CSEG

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

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

SETB N9

SETB DR

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

ADT: SETB BC ; "Сброс" АЦП

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

NOP

CLR BC ; Запуск преобразования

WAIT: JB DR, WAIT ; Ожидание сигнала готовности (до DR = 0)

MOV measureL, N0_7

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

MOV A, P1

ANL A, #00000011B

MOV measureH, A

SETB BC ; Выдача сигнала сброса АЦП

RET

Разработка аналого-цифрового канала с обменом по прерыванию

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

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

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

Декларативная часть (новое в сравнении с предыдущей программой)

INIT_IE equ 10000001B ; код для настройки регистра IE

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

CSEG

org 0

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

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

org 0003H

VECT_INT0: JMP DR_INT

; Инициализация системы

org 002BH

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

SETB IT0 ; Восприятие сигнала по срезу

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

SETB N8 ; Линии Р1.0, Р1.1 - на ввод

SETB N9

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

. . .

CALL ADT ; Запуск преобразования

. . .

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

ADT: SETB BC ; “Сброс” АЦП

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

NOP

CLR BC ; Запуск преобразования

RET

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

DR_INT: PUSH ACC

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

MOV A, P1

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

MOV measureH, A

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

POP ACC

RETI

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

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

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

Микросхема ЦАП может быть подключена непосредственно к портам микроконтроллера или к портам вывода (регистрам, ППИ), размещенным во внешнем адресном пространстве МК. Если разрядность ЦАП превышает разрядность порта или регистра, необходимо использовать дополнительный порт или регистр. При этом пересылка двоичного кода на ЦАП должна выполняться в два этапа – младший и старший байты.