Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Бродин В.Б., Калинин А.Б. Схемы на микроконтроллерах и БИС программируемой логики, 2002

.pdf
Скачиваний:
260
Добавлен:
11.03.2016
Размер:
9.1 Mб
Скачать

ГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

19

ного логического преобразования, например при работе с другим микро­ процессором.

Часть типовых операций управления, необходимых для связи с реаль­ ными объектами, реализованы в традиционной системе аппаратно в виде специализированных интерфейсных БИС. Эти операции не являются три­ виальными, поскольку реализуются сложными самостоятельно функцио­ нирующими цифровыми автоматами, преобразующими данные. Такие ав­ томаты, как последовательный порт, тактируются некоторым синхросигна­ лом и проходят в процессе работы ряд состояний. Они самостоятельно воспринимают внешние события (сигналы) и обрабатывают их, привязка к сетке процессора производится по прерываниям. То же касается и форми­ рования выходных сигналов управления. При отсутствии интерфейсной БИС с нужной операцией прежде приходилось создавать требуемый авто­ мат из схем малой степени интеграции.

Очевидно, что в общем случае микропроцессорная система управляет объектами, используя комбинированную аппаратно-программную реализа­ цию функций управления.

Микроконтроллер отличается от микропроцессора тем, что аппаратные операции, наиболее часто используемые в микропроцессорных системах управления, выполняются внутренними модулями, интегрированными на кристалл вместе с процессорным ядром. Это, кроме памяти программ и данных, тай меры/счетчики, последовательные порты, модули АЦП и ЦАП, модули управления электродвигателями и т.п.

Модуль процессора в микроконтроллере способен выполнять с разде­ лением времени несколько функций управления. При этом функции управления реализуются как процессы на временной сетке с некоторым элементарным интервалом времени А Т/, и можно говорить о квазипарал-

лельных процессах.

Организацию и взаимодействие квазипараллельных процессов управ­ ления рассмотрим на примере работы ведущего микроконтроллера системы управления рентгенотелевизионного аппарата. Связи платы ведущего мик­ роконтроллера с панелью управления и другими объектами видны из рис. 1.3.

При включении аппарата процедура инициализации ведущего микро­ контроллера устанавливает режим автоматического просвечивания, на про­ граммируемое устройство питания рентгеновского излучателя (РИ) пода­ ются логические сигналы управления и аналоговые сигналы уставок анод­ ного напряжения КС и анодного тока МС. Формируются также сигналы для блока диафрагм, усилителя рентгеновского изображения (УРИ) и сис­ темы обработки изображений (СОИ). Аппарат переходит в состояние го­ товности текущего режима, тип и параметры режима могут изменяться с панели управления, но высокое анодное напряжение на РИ подается толь­

20

СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

ко при нажатии педали или ручного включателя. Включение высокого на­ пряжения сопровождается формированием логических сигналов в соответ­ ствии с определенной циклограммой.

Рис. 1.3. Микропроцессорная СУ рентгенотелевизионного аппарата и связи с объектами управления

При включенном РИ ведущий микроконтроллер обслуживает процесс автоматического регулирования мощности дозы. При этом он получает цифровой сигнал обратной связи, частота которого зависит от величины рассогласования аналогового сигнала ОС относительно опорного значения, и формирует новое значение кода уставки, из которого далее образуется аналоговый сигнал КС. Каждый импульс цифрового сигнала ОС вызывает прерывание, процедура которого инкрементирует или декрементирует внутренний счетчик микроконтроллера, являющийся источником кЬда ус­ тавки. Между прерываниями анализируется посылка от панели управле­ ния на предмет изменения раскрыва диафрагм. Отпускание педали или включателя приводит к снятию высокого напряжения с РИ, аппарат вновь переходит в состояние готовности текущего режима. Система обеспечения безопасности функционирования формирует общий сигнал неготовности и код ошибки. Сигнал неготовности приводит к снятию высокого напряже­ ния с РИ и выдаче кода ошибки на панель оператора.

ГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

21

Из вышеизложенного можно заключить, что в сложных системах управления ведущий микроконтроллер должен обеспечить реализацию следующих процессов:

формирование временной сетки с заданным элементарным интервалом;

обслуживание подсистемы безопасности;

формирование циклограмм сигналов управления объектами;

регулирование параметров непрерывных процессов в аппарате на осно­ ве анализа сигналов обратных связей.

взаимодействие с оператором через панель управления и отдельные включатели/педали, переключение режимов работы.

Организация параллельных процессов управления на микроконтрол­ лерах требует предварительного (статического) планирования их выполне­ ния: расчета времени, механизмов взаимодействия и необходимых ресур­ сов. Рассмотрим временную диаграмму реализации перечисленных выше процессов в СУ рентгенотелевизионного аппарата, представленную на рис. 1.4.

Каждый процесс в СУ на микроконтроллерах реализуется как после­ довательность операторов на сетке системного времени. Операторы выпол­ няются с использованием процедур. Процедуры могут прерывать друг друга, но операторы определенных процессов должны быть выполнены к определенному времени.

Рассмотрим каждый из перечисленных выше процессов. При этом мы не будем подробнее, чем это сделано в комментариях, анализировать текст программы. Нашей целью является анализ структуры программы и опре­ деление времени выполнения операторов каждого из процессов. Текст фрагментов программы служит для демонстрации того, что в развитой системе программная реализация функций управления требует значитель­ ного времени и ресурсов из-за необходимости реализовать взаимодействие квазипараллельных процессов.

Формирование временной сетки. Для взаимодействия процессов вна­ чале необходимо определить величину элементарного интервала времени и сформировать временную сетку. Сетка формируется с использованием вы­ деленного аппаратного модуля микроконтроллера - таймера/счетчика, ра­ ботающего в режиме счета внутренних импульсов синхронизации. Таймер при переполнении формирует запрос прерывания, процедура обслужива­ ния которого вызывает его перезагрузку.

Прерывание таймера системного времени должно иметь наивысший приоритет. Поскольку процесс формирования циклограмм сигналов управления использует интервалы системного времени и это является ос­ новой программного управления, временная сетка должна быть непрерыв­ ной и равномерной ATN = Tn+i " TN =const = АТсистемы . Важной задачей является определение длительности элементарного интервала системного

22

СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

 

времени. Слишком длительный интервал вызывает недозагрузку ведущего микроконтроллера, ухудшение параметра «реального времени». Слишком короткий интервал может привести к нарушению циклограмм сигналов управления и аварийной ситуации.

Рис. 1.4. Диаграмма квазипараллельных процессов в системе управления

Если в качестве ведущего используется микроконтроллер семейства MCS-51, то таймер (например ТО) считает машинные циклы (Тц= 1 2 /F 0CU). Перезагрузка таймера системного времени производится процедурой в две команды по два цикла, еще два цикла тратится на вход в процедуру. Следовательно, перезагрузка выполняется за б машинных циклов. Чтобы не накапливалась ошибка, это время должно быть учтено коррекцией начального значения, например следующим образом:

IntTO:

mov THO, #High (TORLD+6) ; перезагрузка ст. байта ТО mev TLO, #Low (TORLD+6) ; перезагрузка мл. байта TO

ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

23

Таким образом, процесс формирования временной сетки включает один оператор перезагрузки таймера, который выполняется после завер­ шения текущего интервала сетки. Нас интересует длительность выполне­ ния этого оператора, представляющая собой сумму машинных циклов его команд Е Qi Как указано выше, команды занимают 6 машинных циклов микроконтроллера. При тактовой частоте Focu = 12 МГц оператор форми­ рования временной сетки нашего примера выполняется за AtCB= 6,0 мксек.

Обслуживание подсистемы безопасности. Микроконтроллер может обслуживать подсистему безопасности, самостоятельно анализируя значе­ ния сигналов с некоторых датчиков, а также обрабатывая запрос прерыва­ ния от внешней схемы контроля функционирования. Самостоятельно ана­ лизируемые сигналы с датчиков отражают состояние медленно меняющих­ ся параметров аппарата - например, температуры. Результатом анализа может быть подача сигналов предупреждения - например мигание индика­ тора на панели управления. Запрос прерывания является результатом ра­ боты схемы контроля функционирования, которая следит за быстро изме­ няющимися параметрами - например, основной частотой синхронизации. При пропадании этого сигнала запрос прерывания приводит к снятию вы­ сокого напряжения, отображению сообщения об ошибке функционирова­ ния.

Если анализируемые сигналы с датчиков имеют логическую форму, то процедура, реализующая оператор рассматриваемого процесса, может иметь следующий вид:

TCntr:

mov

OBRP5, P5

*

ввод значения из порта в регистр-образ порта

 

mov С, IDTP

*

значение линии копируем

 

mov

IdTank, С

*

в бит светодиода IdTank

 

jb

TP2, КТРЗ

*

если ТР2 пассивный ( активный «0»), выходим

 

mov

A, BLINK

*

иначе мигаем

 

jz

KTP1

*

если счетчик мигания обнулился, перезагружаем

КТР1:

djnz

BLINK, KTP2

 

если нет

mov

BLINK, #TankRLD

*

перезагружаем счетчик мигания

КТР2:

cpI

Tblink

*

и инвертируем флаг мигания

mov

C.Tblink

*

флаг мигания копируем во флаг индикации

 

КТРЗ:

mov

IdTank, С

*

перегрева

setb TankSh

* установка бита отображения температуры РИ

 

 

ret

 

 

 

Эта процедура читает данные с порта Р5 (микроконтроллер 80С552) и копирует данные в регистр-образ порта OBRP5, второй и третий биты которого хранят информацию о значениях сигналов с датчиков температу­ ры. Если сигналы образуются на выходах компараторов напряжения, то температурный диапазон разбивается на три участка. Текущая температура показывается оператору светодиодом на панели.

24

СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

Т<Т1

Т1<Т<Т2

Т>Т2

IDTP=1, ТР2=1

IDTP=0, ТР2=1

IDTP=0, ТР2=0

Светодиод не горит

Светодиод горит

Светодиод мигает

Мигание светодиода реализуется посредством программного счетчика BLINK, константа перезагрузки которого TankRLD определяет частоту вспышек. Результом работы этого фрагмента программы и процесса явля­ ется установленный флаг TankSh и значение бита ldTank (активное значе­ ние «О» управляет зажиганием светодиода).

Команды последовательного порта на зажигание и гашение светодио­ да формируются далее процедурами TankOn и TankOFF. Эти процедуры уже относятся к процессу взаимодействия с оператором через последовательный порт.

Рассматриваемый процесс использует следующие ресурсы внутренне­ го ОЗУ микроконтроллера:

 

 

BUNK

 

 

Счетчик мигания IdTank

 

 

FLAG

Tblink IdTANK

TankSh

Байт дополнительных флагов

IDTP

 

OBRP5

KTP2

Образ Р5

Таким образом, процесс обслуживания подсистемы безопасности включает один оператор, реализуется одной процедурой, выполняемой на каждом интервале системной сетки.

Последовательность выполняемых команд в процедуре зависит от входных условий (значений IDTP и ТР2). Наиболее длинная (в машин­ ных циклах) последовательность команд max ( £ Qj) реализуется при пе­ реходе на метку КТР2 и занимает 19 циклов микроконтроллера. При Focu= 12 МГц время обслуживания подсистемы безопасности нашего при­ мера составляет At6n=19,0 мксек.

Формирование временных диаграмм логических сигналов управле­ ния. Для формирования временных диаграмм внутренних и внешних сиг­ налов при программном управлении используются программные счетчики, временная сетка системы и последовательный опрос флагов, которые ха­ рактеризуют активность сигналов. При этом в течение каждого элементар­ ного интервала системной сетки процедура формирования циклограммы производит опрос каждого флага, при его активности инкрементирует или декрементирует регистр счетчика сигнала, при наличии переполнения сбрасывает флаг и изменяет значение сигнала. Таким образом, циклограм­ ма сигналов управления формируется с точностью не хуже элементарного интервала системной сетки. Для реализации указанного механизма под

ГЛАВА 1. РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

25

буферы счета и флаги для каждого сигнала в памяти данных микрокон­ троллера должны быть выделены ресурсы. Модель части ресурсов для СУ рентгенотелевизионного аппарата может выглядеть так:

Счетчик

Флаг

Регистр счетчика

Регистр счетчика

просвечивания

просвечивания

просвечивания (ст.)

просвечивания (мл.)

 

FLUOON

FLUOT1

FLUOTO

Счетчик

Флаг короткой

Регистр счетчика

 

короткой

задержки

короткой задержки

 

задержки 1

SHRTON

SHRT

 

Счетчик

Флаг короткой

Регистр счетчика

 

короткой

задержки

короткой задержки

 

задержки 2

DLAYON

DLAY

 

Счетчик

Флаг сигнала

Регистр счетчика

COPY

COPYON

сигнала COPYT

Бит порта Р1

сигнала COPY

 

 

 

Счетчик

Флаг сигнала

Регистр счетчика

FIX

FIXON

сигнала FIXT

Бит порта Р1

сигнала RX

 

 

 

Счетчик

Флаг длинной

Регистр счетчика дл.

Регистр счетчика дл.

длинной

задержки

задержки (ст.)

задержки (мл.)

аадержки

LONGON

LONGT1

LONGOTO

Счетчик

Флаг сигнала

Регистр счетчика сигнала

задержки

KBLockON

KBLock

 

клавиатуры

 

 

 

 

Рис. 1.5. Модель ресурсов для обслуживания циклограммы сигналов

В модели имеются счетчики, обслуживающие циклограмму внешних сигналов (FLUO - включение высокого напряжения, COPY, FIX - сигна­ лы управления СОИ) и счетчики, обслуживающие внутренние протоколы СУ (KBLock - обслуживания клавиатуры панели управления, SHRT, DLAY, LONG - формирования интервалов времени). Флаги событий ус­ танавливаются в соответствии с командами от панели управления. Отме­ тим, что флаги и счетчики реализуются программно и могут быть привя­ заны к любой ячейке памяти данных микроконтроллера. Определенные выше ресурсы обслуживаются программой в следующей последовательно­ сти:

сохранение в стеке аккумулятора и регистра флагов;

перезагрузка сторожевого таймера;

проверка флага просвечивания FLUO, наращивание счетчика FLUOT1, FLUOTO, проверка значения счетчика и включение звуково­ го сигнала при значениях времени 5 мин. и 10 мин.;

проверка флага короткой задержки SHRTON, наращивание счетчика SHRT, проверка значения счетчика и сброс флага при переполнении;

26

СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

 

проверка флага короткой задержки DLAYON, наращивание счетчика DLAY, проверка значения счетчика и сброс флага при переполнении;

проверка флага FIXON, наращивание счетчика FIXT, проверка значе­ ния счетчика, сброс флага и снятие сигнала FIX при переполнении, гашение индикатора;

проверка флага COPYON, наращивание счетчика COPYT, проверка значения счетчика, сброс флага и снятие сигнала COPY при перепол­ нении, гашение индикатора;

проверка флага длинной задержки LONGON, наращивание счетчика LONGT1, LONGTO, проверка значения счетчика и сброс флага при пе­ реполнении;

проверка флага KBLockON, наращивание счетчика KBLock, проверка

значения счетчика и сброс флага при переполнении; Текст процедуры формирования сигналов управления может быть сле­ дующим:

Циклограмма’

IsRdy: push ACC push PSW

 

orl

PCON, #10h

 

mov

T3, WATCH T

 

jnb

FLUOON, OUTET

 

inc

FLUOTO

 

mov

A, FLUOTO

 

jnz

FT1

 

inc

FLUOT1

 

mov

A.LastFL

 

xrt

A, FLUOT1

 

jz

FT4

 

setb

TOSOW

FT4:

mov LastFL, FLUOT1

FT1:

mov A, FLUOT 1

 

cjne

A,#T5MIN,FT2

 

setb

BELL

FT2:

cjne

A,#T10MIN,FT3

FT3:

jc

OUTFT

 

setb

BELL

 

setb

FLTMNR

 

setb

NTRDERR

OUTFT:

ajmp

OUTLG

 

 

 

jnb

SHRTON, OUTSH

 

mov

A,SHRT

 

jz

STPSH ;

 

djnz

SHRT, OUTSH

STPSH:

clr

SHRTON

OUTSH:

jnb

DLAYON, OUTDL

 

 

mov

A, DLAY

;перезагрузка сторожевого таймера

;если установлен флаг просвечивания

;увеличим мл.байт счетчика на 1

;если ноль, прибавим перенос к ст. байту

;сравним текущее время с отображаемым

если не совпадает, установим флаг вывода на дисплей

переустановим отображаемое время проверим текущее время просв-ния если оно равно 5 мин.

включим звуковой сигнал если оно равно 10 мин.

;включим звуковой сигнал

;установим флаги ошибки просвечивания

;установим флаг общей ошибки

;если уст. флаг короткой задержки 1

;проверим его счетчик

;если не ноль, инкрементируем его

;если ноль, сбросим флаг

если уст. флаг короткой задержки 2 проверим его счетчик

ГЛАВА 1 РАЗРАБОТКА СИСТЕМ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

27

 

jz

STPDL

;

 

 

 

STPDL:.

djnz

DLAY, OUTDL

; если не ноль, инкрементируем его

 

clr

DLAYON

 

; если ноль, сбросим флаг

 

OUTDL:

jnb

 

 

 

; если уст. флаг FIX

 

 

FIXON, OUTFX

 

 

mov

A.FIXT

 

 

; проверим его счетчик

 

 

jz

STPFX

 

;

 

 

 

djnz

FIXT, OUTFX

; если не ноль, инкрементируем его

 

STPFX:

clr

FIXON

 

 

; если ноль, сбросим флаг

 

 

setb

FIX

 

 

; уст.пассивное значение линии

 

 

setb

IdFIX

 

 

; и пассивное значение индикатора

 

OUTFX:

setb

LEDOUT

 

 

; уст.флаг обновления светодиодов

 

jnb

COPYON, OUTCP

; если уст. флаг COPY

 

 

 

 

mov

A.COPYT

 

; проверим его счетчик

 

 

jz

STPCP

;

 

 

 

STPCP:

djnz

COPYT, OUTCP

; если не ноль, инкрементируем его

 

clr

COPYON

 

; если ноль, сбросим флаг

 

 

setb

COPY

 

 

; уст. пассивное значение линии

 

 

setb

IdCOPY

 

 

; и пассивное значение индикатора

 

OUTCP:

setb

LEDOUT

 

 

; уст.флаг обновления светодиодов

 

jnb

LONGON,OUTLG

; если уст. флаг длинной задержки

 

 

 

 

clr

С

 

 

;

 

 

mov

A.LONGO

 

; декремент мл. байта счетчика

 

 

subb

A,#1

 

 

 

 

 

mov

LONGO.A

;

 

 

 

mov

A, LONG 1

 

; декремент ст. байта счетчика

 

 

subb

A,#0

;

 

 

 

 

mov

LONG 1,A

;

 

 

 

jnz

OUTLG

 

 

; проверим ст. байт на 0

 

 

mov

A.LONGO

 

 

 

 

jnz

OUTLG

 

 

; проверим мл. байт на

 

OUTLG:

clr

LONGON

 

; счетчик обнулен, сбросим флаг

 

 

KBIockON,OUTKB

; если уст. флаг задержки клавиату

 

 

jnb

 

 

jb

KBRQ,STPKB

; и нажата клавиша ;

 

 

mov

A.Kblock

 

; проверим счетчик

 

 

jz

STPKB

 

 

 

 

 

djnz

Kblock,OUTKB

; если не ноль, инкрементируем его

 

 

mov

A.Kblock

 

; проверим счетчик

 

 

jz

STPKB

 

;

 

 

STPKB:

djnz

Kblock, OUTKB

; если не ноль, инкрементируем его

 

clr

KblockON

 

; очистка флага

 

 

jb

KBRQ,NORMKB ;

 

 

 

setb

KblockFast

 

 

 

 

;если не нажата клавиша, уст. "быстрый режим

 

NORMKB

sjmp

OUTKB

 

 

; и уйдем

 

clr

KblockFast

; если нажата клавиша,

 

 

 

 

 

 

; сбросим "быстрый режим”

 

 

pop

PSW

 

 

 

 

 

pop

ACC

 

 

 

 

 

ret

 

 

 

 

 

28

СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

 

Процедура формирования циклограммы сигналов управления может следовать непосредственно за процедурой обслуживания подсистемы безо­ пасности. Последовательность выполняемых команд в этом фрагменте про­ граммы зависит от входных условий (значений флагов FLUOON, SHRTON, DLAYON, COPYON, FIXON, LONGON, и KBLockON). Наи­ более длинная последовательность команд max ( Z Qi) включает 114 ма­ шинных циклов микроконтроллера и при тактовой частоте F0C4 =12 МГц занимает ДЬцИКЛ= 114,0 мксек.

Регулирование параметров непрерывных процессов. Регулирование целесообразно выполнять с использованием процедуры прерывания, за­ просом может служить сигнал от компаратора при рассогласовании, вели­ чина которого превышает интервал нечувствительности. Кроме величины рассогласования необходимо знать его знак.

В рассматриваемом примере, рентгенотелевизионном аппарате, сигнал рассогласования преобразуется в последовательность импульсов, частота которых пропорциональна напряжению рассогласования. Каждый импульс вызывает прерывание, а значение логического сигнала UP_Auto говорит о необходимости увеличивать или уменьшать значение уставок анодного на­ пряжения КС и тока МС. Их аналоговые значения формируются в два этапа: вначале процедура прерывания анализирует сигнал UP_Auto, а также определяет, не достигнуты ли границы регулирования (LOWLIM,UPLIM). Если границы не достигнуты, формируются новые значения кодов уставок. Далее вызывается процедура LDDAC, которая записывает эти коды по 8-разрядной шине в регистры двухканального ЦАП. Затем формируются сигналы управления LDAC и ЕА, по которым на выходе ЦАП появляются аналоговые значения КС и МС.

Into:

 

Регулирование по прерыванию Into*

push

 

*

 

 

ACC

 

 

push

00

*

 

 

*

 

 

push

PSW

 

 

 

 

 

mov

R0, #KVCNTH

*

 

 

 

 

 

jb

UP_AUTO,IUP

* проверяем линию Up_Auto

 

ьшение

 

 

 

 

cjne

©R0,#High (LOWLIM+8),

IDN2

;если High=Low предел

 

dec

R0

 

 

IDN2:

cjne

©RO,#LOW (LOWLIM+8) , IDN2

;Low<Low предел, то

jnc

IDN1

 

 

Noldec:

mov

 

 

 

 

KVCNTL, #Low (LOWLIM)

 

 

 

mov

KVCNTL, #High (LOWLIM)

 

 

IDN1:

sjmp

IPASS

 

; регулировать не будем

clr

С

 

;иначе уменьшаем KVCNT

 

 

 

 

mov

A, KVCNTL

 

 

 

subb

A, #8

 

 

 

mov

KVCNTL, A

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]