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

Программируемый контроллер прерываний служит для упорядочения запросов на прерывание по приоритету и во времени. В данной схеме обслуживается два прерывания: контроль прохождения контрольной точки задачами и самодиагностика. Запросы на прерывание поступают от таймера и подаются на входы IRQ0, IRQ1 и IRQ2.

Для выбора нужной микросхемы при выполнении операций ввода-вывода используется дешифратор DD29, преобразующий два разряда адресной шины AB2 и AB3 в сигналы выбора CS. Сигналы выбора кристалла CS формируются только если один из сигналов IOR и IOW находится в активном состоянии. Необходимым условием выбора внешних по отношению к процессору устройств является равенство нулю младшего адресного разряда AB0. Для хранения адреса в течение всего цикла шины используются регистры-защелки DD11 и DD12, управляемые сигналов ALE процессора. Шина данных умощняется за счет подключения шинных формирователей.

Память контроллера организована на четырех микросхемах; две из них образуют ПЗУ (DD2 и DD3) и две другие – ОЗУ (DD7 и DD8). Память выполнена в виде двух банков с целью передачи как двухбайтовых слов, так и отдельных байтов. Для выбора соответствующего банка используются сигнал BHE (разрешение старшего банка) и младший разряд адресной шины AB0. Разряд шины адреса AB14 служит для выбора ПЗУ или ОЗУ. Также в качестве управляющих сигналов, задающих направление передачи применяются MEMR и MEMW.

Шина управления состоит из четырех сигналов MEMR, MEMW, IOR, IOW, которые формируются на основе сигналов процессора RD, WR, M/IO.

В таблице 2.1 показано соответствие основных элементов структурной схемы контроллера используемым микросхемам.

Таблица 2.1 – Используемые микросхемы.

Обозначение на схеме

Микросхема

DD1

К1810 ГФ84

DD2, DD3

К556 РТ16

DD6

К1810 ВМ86

DD7, DD8

К537 РУ17

DD11, DD12

К1810 ИР82

DD13, DD14

К1810 ВА86

DD15, DD16

К580 ВВ55

DD17

К1810 ВИ54

DD18

К1810 ВН59А

DD27

К155 ТМ2

DD28

К155 ИР1

DD29

К155 ИД3

3 РАЗРАБОТКА РАБОЧЕЙ ПРОГРАММЫ КОНТРОЛЛЕРА

3.1 Структура данных

В данном проекте фоновым процессом является передача данных. В связи с этим опишем используемые переменные и структуры.

К основной структуре можно отнести два массива. Один из них служит буфером приемника и занимает в памяти ячейки с 0000 по 2FFFh. Указателем в этом массиве служит переменная RecCount. Второй массив SendBuf является буфером передатчика. За его заполнением следит отдельная задача, не рассматриваемая в данном проекте. При заполнении этого буфера данными флаг BufReady устанавливается в единичное состояние. Буфер SendBuf имеет размер 255 байт и располагается с адреса 3000h по адрес 30FFh. Указателем на очередной элемент буфера служит переменная SendCount. В таблице 3.1 описаны используемые переменные.

Таблица 3.1 – Описание используемых переменных

Переменная

Размер

Расположение

Описание

TimeVar

3 байта

3100h

Переменная хранит время в секундах с начала работы контроллера

BufReady

1 байт

3104h

Флаг готовности буфера передатчика

RecCount

2 байта

3106h

Указатель буфера приемника

SendCount

2 байта

3108h

Указатель буфера передатчика

Sentry

1 байт

310Ah

Переменная – точка входа в процедуру передатчика

FS

1 байт

310Ch

Флаг работы процедуры передатчика (анализируется «службой времени»)

Переменная TimeVar обслуживается счетчиком времени. Ее значение периодически используется для процедурой формирования очередного сообщения.

Переменная Sentry необходима для работы однопроходной формы задачи. В ней хранится метка входа в процедуру.

Переменная FS является сигнализатором того, что процесс передачи в данный момент активен. В случае «зависания» по этим флагам служба времени определяет конфликтную задачу и отображает ее номер на индикаторе.

Счетчик байтов SendCount в процессе передачи сообщения изменяет свое значение от 0 до FF.

3.2 Схемы алгоритмов процессов в автономной форме

Схема алгоритма процесса самодиагностики в автономной форме показана на рисунке 3.1.

Рисунок 3.1 – Автономная форма алгоритма процесса самодиагностики.

Процесс самодиагностики инициируется по прерываниям от таймера. Заключается в подсчете контрольной суммы ПЗУ и сравнении ее с известным значением. При несовпадении индикатор готовности гасится и процессор останавливается (вводится в бесконечный цикл)

Схема алгоритма процесса приема в автономной форме показана на рисунке 3.2.

Рисунок 3.2 – Автономная форма алгоритма процесса приема.

На рисунках 3.3 и 3.4 более подробно раскрыт состав блоков «прием символа» и «передача символа».


Страница: