Разработка контроллера на однокристальном микропроцессореРефераты >> Программирование и компьютеры >> Разработка контроллера на однокристальном микропроцессоре
Программируемый контроллер прерываний служит для упорядочения запросов на прерывание по приоритету и во времени. В данной схеме обслуживается два прерывания: контроль прохождения контрольной точки задачами и самодиагностика. Запросы на прерывание поступают от таймера и подаются на входы 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 более подробно раскрыт состав блоков «прием символа» и «передача символа».