ТЕМА 1.3. МИКРОКОНТРОЛЛЕРЫ И МИКРОКОНТРОЛЛЕРНЫЕ СИСТЕМЫ



Структура типовой системы управления

Микроконтроллер – это такая микросхема, которая представляет собой мини-компьютер, предназначенный для выполнения различных функций. Данная микросхема работает в соответствии с заложенной в нее программой, которую создает программист. Микроконтроллер может в себе содержать различное количество так называемых периферийных модулей, которые определяю его возможности, а также стоимость. К периферии микроконтроллера относятся, например: АЦП (аналого-цифровой преобразователь), различные таймеры, аналоговый компаратор, UART (по простому говоря COM-порт), USB, CANи т.д. Но, как правило, любой микроконтроллер содержит следующие основные узлы:

ü Арифметико-логическое устройство (АЛУ или ALU);

ü Оперативная память (ОЗУ);

ü Постоянная память (ПЗУ);

ü Генератор тактовой частоты;

ü Порты ввода/вывода;

ü Таймеры;

Вот так выглядит упрощенная структурная схема микроконтроллера:

Сердцем микроконтроллера является арифметико-логическое устройство (АЛУ). АЛУ производит все арифметические и логические операции с двоичными данными. Бывают АЛУ различной разрядности: 8-, 16- или 32-разрядные. Например, если АЛУ 8-разрядное, то оно может провести операцию над двумя восьмиразрядными числами и выдать восьмиразрядный результат операции.

К арифметическим операциям относятся: сложение, вычитание, сравнение и т.д.

К логическим операциям относятся: операция умножения «И», сложения «ИЛИ», отрицания «НЕ», «исключающее ИЛИ», сдвиг вправо, сдвиг влево и т.д. Есть также операции, которые не относятся ни к логическим, ни к арифметическим, например сброс в «0» или установка в «1».

Как было сказано выше, АЛУ производит операции над числами и возвращает результат операции в виде числа. Данные числа помещаются в регистры общего назначения – своеобразную временную память. У каждого микроконтроллера количество регистров может быть разным. На структурной схеме приведен пример контроллера, у которого 32 регистра общего назначения.

Однако, для нормальной работы микроконтроллера регистров общего назначения недостаточно, т.к., например, 32 байта – очень маленький объем памяти. Для того, чтобы можно было хранить больше информации, используется оперативно-запоминающее устройство (ОЗУ). Регистры общего назначения содержат данные, с которыми АЛУ работает в данный момент, а ОЗУ – остальные.

Команды, а точнее последовательность команд, которые выполняет АЛУ, хранятся в постоянно-запоминающем устройстве (ПЗУ). Обычно это Flash-память. Данная последовательность команд является ничем иным, как программой микроконтроллера, которую создает программист. Все команды находятся в ПЗУ по определенным адресам.

Для того, чтобы достать какую-то команду из ПЗУ, необходимо обратиться к ее адресу, чем занимается программный счетчик или счетчик команд.

Данные из ПЗУ попадают в регистр команд. АЛУ постоянно «смотрит» содержимое регистра команд и если в нем появляется команда, то АЛУ сразу же начинает ее выполнять.

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

Необходимо также заметить, что вся работа микроконтроллера синхронизируется генератором тактовой частоты, который может быть внутренним или внешним.

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

ü команды пересылки данных;

ü арифметические команды ;

ü логические команды ;

ü команды переходов.

Для реализации возможности независимого управления разрядами портов (регистров) в большинстве современных МК предусмотрена также группа команд битового управления (булевый или битовый процессор). Наличие команд битового процессора позволяет существенно сократить объем кода управляющих программ и время их выполнения.

В ряде МК выделяют также группу команд управления ресурсами контроллера, используемую для настройки режимов работы портов ввода/вывода, управления таймером и т.п. В большинстве современных МК внутренние ресурсы контроллера отображаются на память данных, поэтому для целей управления ресурсами используются команды пересылки данных.

Система команд МК по сравнению с системой команд универсального МП имеет, как правило, менее развитые группы арифметических и логических команд, зато более мощные группы команд пересылки данных и управления. Эта особенность связана со сферой применения МК, требующей, прежде всего, контроля окружающей обстановки и формирования управляющих воздействий.

Схема синхронизации МК обеспечивает формирование сигналов синхронизации, необходимых для выполнения командных циклов центрального процессора, а также обмена информацией по внутренней магистрали. В зависимости от исполнения центрального процессора командный цикл может включать в себя от одного до нескольких (4 — 6) тактов синхронизации. Схема синхронизации формирует также метки времени, необходимые для работы таймеров МК. Память программ и данных МК

В МК используется три основных вида памяти. Память программ представляет собой постоянную память (ПЗУ), предназначенную для хранения программного кода ( команд ) и констант. Ее содержимое в ходе выполнения программы не изменяется. Память данных предназначена для хранения переменных в процессе выполнения программы и представляет собой ОЗУ. Регистры МК — этот вид памяти включает в себя внутренние регистры процессора и регистры, которые служат для управления периферийными устройствами (регистры специальных функций).

 

В настоящее время выпускается целый ряд типов МК. Все эти приборы можно условно разделить на три основных класса:

ü 8-разрядные МК для встраиваемых приложений;

ü 16- и 32-разрядные МК ;

ü цифровые сигнальные процессоры (DSP).

 

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

Росту популярности 8-разрядных МК способствует постоянное расширение номенклатуры изделий, выпускаемых такими известными фирмами, как Motorola, Microchip, Intel, Zilog, Atmel и многими другими. Современные 8-разрядные МК обладают, как правило, рядом отличительных признаков.

Перечислим основные из них:

ü модульная организация, при которой на базе одного процессорного ядра (центрального процессора) проектируется ряд (линейка) МК, различающихся объемом и типом памяти программ, объемом памяти данных, набором периферийных модулей, частотой синхронизации;

ü использование закрытой архитектуры МК, которая характеризуется отсутствием линий магистралей адреса и данных на выводах корпуса МК. Таким образом, МК представляет собой законченную систему обработки данных, наращивание возможностей которой с использованием параллельных магистралей адреса и данных не предполагается;

ü использование типовых функциональных периферийных модулей (таймеры, процессоры событий, контроллеры последовательных интерфейсов, аналого-цифровые преобразователи и др.), имеющих незначительные отличия в алгоритмах работы в МК различных производителей;

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

 

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

Процессорное ядро включает в себя:

ü центральный процессор;

ü внутреннюю контроллерную магистраль (ВКМ) в составе шин адреса, данных и управления;

ü схему синхронизации МК ;

ü схему управления режимами работы МК, включая поддержку режимов пониженного энергопотребления, начального запуска (сброса) и т.д.

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


1.3.2. Таймер

В микроконтроллерах может быть до 4х таймеров/счетчиков (ТС). Разрядность этих таймеров 8 или 16 бит (т.е. они могут считать до 28=256 или до 216=65536). Обычно их используют для точного формирования временных интервалов, подсчета импульсов на выводах микроконтроллера, формирования последовательности импульсов. Таймеры способны вырабатывать запросы на прерывания, при этом освобождая процессор от необходимости опроса состояния таймеров. В данной статье мы разберем работу таймеров и прерываний, которые они могут вырабатывать, на примере 16-ти битного таймера/счетчика1 (TС1) микроконтроллера ATmega8. Всего у этого МК три таймера - два 8ми битных (TС0, TС2) и один 16 битный (TС1). Взглянем на таблицу векторов прерываний МК mega8 - 7 прерываний связаны с таймерами микроконтроллера, из них 4 связаны с таймером/счетчиком1 (TС1). Давайте разберемся, что же может этот таймер, какие регистры им управляют и что в них нужно записать, чтобы настроить таймер как нам нужно. Для начала рассмотрим все регистры ТС1 и за что какой бит отвечает, а потом рассмотрим какие-нибудь простые примеры по настройке таймера. Начнем с регистров управления таймером.

TCCR1A - регистр управления A

Биты 7:6 - COM1A 1:0: контролируют поведение выхода OC1A (см. Таблицу 1).

Биты 5:4 - COM1B 1:0: контролируют поведение выхода OC1B (см. Таблицу 1).

Биты 3:2 - FOC1A, FOC1B: служат для принудительного изменения состояния выходов OC1A и OC1B.

Биты 1:0 - WGM11, WGM10: служат для настройки ТС1 для работы в качестве широтно-импульсного модулятора (ШИМ). В режиме ШИМ состояние выходов OC1A и OC1B будет отличаться. В этой статье не буду ничего писать про режим ШИМа, а то будет куча информации, которую трудно переварить. Что такое ШИМ опишу как-нибудь в другой раз.


 

 

TCCR1B - регистр управления В

Бит 7 - ICNC1: подавление дребезга на входе ICP1. Если бит установлен, то определение события на входе ICP1 происходит с задержкой в 4 машинных цикла (см. дальше по тексту).

Бит 6 - ICES1: выбор фронта срабатывания прерывания по захвату. Если установлен - на растущем фронте, если сброшен - на падающем фронте.

Бит 5 - не используется

Биты 4:3 - WGM1 3:2: для настройки ШИМа.

Биты 2:0 - CS1 2:0: выбор тактирования ТС1 (Таблица 2).


Ну, настроили мы таймер и что? А дальше с частотой, которую мы выбрали в регистре TCCR1B счетчик таймера начинает считать и записывать значение счетчика в регистры TCNT1H и TCNT1L - старший и младший байт счетного регистра. При достижении TCNT1 значения 216 счетчик переполняется и сбрасывается, и начинает счет заново. В этот регистр мы также можем записать какое-нибудь значение, с которого мы хотим, чтобы наш счетчик стартовал. Для 16-битной операции записи, старший байт должен быть записан первым. Младший - вторым. Для операции 16-битного чтения, младший байт должен быть прочитан первым, а содержимое старшего байта считывается вторым. Если мы настроили изменение состояния входа OC1A или OC1B, тогда значение счетного регистра сравнивается каждый раз со значением регистров OCR1A и OCR1B - регистры сравнения. Каждый из этих регистров состоит из двух байт (например, OCR1AH и OCR1AL). Мы можем записать в эти регистры нужное нам значение и по совпадению значения регистра счетчика с регистром сравнения будет происходить нужное нам изменение на выходах OC1A и OC1B. Также есть регистр захвата входа - ICR1 (ICR1H и ICR1L). Значение TCNT1 в этот регистр записывается при наступлении события на входе ICP1.

Счет и изменение состояния ножек МК это уже хорошо, но также этот таймер может при определенных событиях генерить прерывания. Как мы уже видели из таблицы векторов прерываний у ТС1 есть 4 вектора прерывания - прерывание по захвату, прерывание по совпадению А, прерывание по совпадению В, прерывание по переполнению (указаны в порядке уменьшения приоритета). Рассмотрим регистры, настраивая которые можно управлять прерываниями ТС1.


TIMSK - регистр маски прерываний таймеров/счетчиков

Бит 7 - OCIE2: прерывание по совпадению ТС2

Бит 6 - TOIE2: прерывание по переполнению ТС2

Бит 5 - TICIE1: прерывание по захвату ТС1

Бит 4 - OCIE1A: прерывание по совпадению A ТС1

Бит 3 - OCIE1B: прерывание по совпадению В ТС1

Бит 2 - TOIE1: прерывание по переполнению ТС1

Бит 1 - не используется

Бит 0 - TOIE0: прерывание по переполнению ТС0

Если соответствующий бит установлен в "1" и бит I (7-й бит) регистра состояний SREG установлен в "1", тогда соответствующее прерывание будет срабатывать.


TIFR - регистр флагов прерываний таймеров/счетчиков

 

Флаги соответствуют прерываниям в регистре TIMSK. Устанавливаются в "1" при выполнении условий соответствующего прерывания.

Вот и вся теория связанная с ТС1. Остальные таймеры настраиваются аналогичным образом. Теперь мы можем обобщить и записать какими возможностями обладает этот таймер:

  • Счетчик 16-ти битный (16 битный ШИМ)
  • Два независимых выхода, срабатывающих по совпадению
  • Один вход по захвату события (растущий или падающий фронт) и подавление дребезга на этом входе
  • Тактирование от встроенного тактового генератора или внешний источник тактирования таймера (T1)
  • 4 независимых прерывания

Есть и другие возможности, но о них не в этот раз. На рисунке отметил ножки связанные с таймерами/счетчиками МК.

Контроллер прерываний

 Прерывание—это сигнал, которое вырабатывает переферийное устройство, для информирования центрального процессора, чтобы он начал процесс выполнения определённой программы для переферийного устройства, вызвавшего это прерывание. При этом процессор останавливает выполнение прежней программы.

Контроллер прерываний предназначен для обработки и арбитража поступающих запросов на обслуживание к центральному процессору от переферийных устройств. По аналогии функции контроллера прерываний можно сравнить с секретарём какого‐нибудь начальника. Секретарь должен решить, кого из посетителей допустить к боссу в первую очередь, а кого и потом, исходя из приорететов, отдаваемых боссом и статуса самого посетителя.

Так и в компьютерной системе, возможна такая ситуация, когда несколько переферийных устройств послали сигнал прерывания или запрос на прерывание. В компьютерной литературе этот сигнал обозначается IRQ(Interrupt Request).

Как уже выше говорилось, прерывания имеют определённый приоритет, который позволяет контроллеру прерываний отдавать предпочтение в данный момент времени одному устройству, а не другому. В современном компьютере существует до 16 внешних и переферийных устройств, генерирующие прерывания.

 

Вот эти устройства:

IRQ 0, системный таймер;

IRQ 1, клавиатура;

IRQ 2, исползуется для запросов устройств, подключенных каскадом;

IRQ 8, часы реального времени;

IRQ 9, зарезервировано;

IRQ 10, зарезервировано;

IRQ 11, зарезервировано;

IRQ 12, ps/2‐мышь;

IRQ 13, сопроцессор;

IRQ 14, контроллер «жёсткого» диска;

IRQ 15, зарезервировано;

IRQ 3, портыCOM2,COM4;

IRQ 4, портыCOM1,COM3;

IRQ 5, порт LPT2;

IRQ 6, контроллер дисковода;

IRQ 7, порт LPT1,принтер;

 

Здесь сигналы приведены в порядке убывания приоритетов. Можно заметить, что после IRQ 2, следует IRQ 8. Дело в том, что в своё время контроллер прерываний состоял из двух микросхем, одна была подключена к другой. Вот эта вторая микросхема и подключается к линии IRQ 2, образуя каскад. Она обслуживает линии IRQ8‐IRQ 15. А затем следуют линии первой микросхемы.

Работу контроллера прерывания мы рассмотрим на основе микросхем фирмы Intel 8259A, которые применялись в теперь уже очень старых компьютерах с процессорами до 386 серии. В этих компьютерах обычно было 2 микросхемы 8259A, подключенных каскадно, то‐есть одна к другой. Одна из микросхем, подключенная по линии запроса на прерывание непосредственно к процессору является ведущей или мастером. Остальные,подключаются к
ведущей через аналогичные выводы, называются ведомыми.

На рисунке изображена схема подключения контроллеров прерываний и их взаимодействие с центральным процессором. Сигналы на прерывание от переферийных устройств или ведомых контроллеров поступают на входы IR0‐IR7 ведущего контроллера. Внутренняя логика ведущего контроллера обрабатывает поступившие запросы с точки зрения приоритета. Если приоритет запроса устройства достаточен, то на выходе INT контроллера вырабатывается сигнал, поступающий на вход INTR процессора. В противном случае, запрос блокируется.

Если процессор разрешает прерывания, то после завершения выполнения текущей команды, он вырабатывает по линии INTA последовательность сигналов, которая переводит ведомый контроллер в состояние невосприимчивости к поступающим новым запросам на прерывание, а кроме того, на линию данных выводится информация из внутренних регистров контроллера по которой процессор распознаёт тип прерывания.

Разрешение на прерывание процессор передаёт контроллеру прерываний через контроллер шины. Сигнал RD предназначен для того, чтобы контроллер прерываний поместил на шину данных содержимое внутренних регистров. По сигналу WR контроллер прерываний, наоборот, принимает данные с одноимённой шины и записывает их во внутренние регистры. Соответственно, это влияет на режим работы контроллера прерываний.

Вход CS подключается к шине адреса и по этому сигналу происходит идентификация конкретного контролллера прерываний. Вход A0 указывает на порт контроллера прерываний в пространстве ввода-вывода. Входы IR0‐IR7 предназначены для приёма запросов на прерывание от переферийных устройств и ведомых контроллеров. Выходы CAS0‐CAS2 предназначены для идентификации конкретного ведомого контроллера.

Мы рассмотрели устройство функции работу контроллера прерываний. Полностью вопрос работы контроллера прерываний в данной статье рассматривать не будем. Но добавить можно следующее. Данный контроллер прерываний появился ещё в первых PC-совместимых компьютерах. С тех пор, и процессоры, и сам компьютер во многом изменились, хотя некоторые моменты остались. Поэтому, для того, чтобы было понятней и была рассмотрена организация контроллера прерываний 8295A.

На приведенной выше схеме показаны сигналов приходящие не только на ведомый и ведущий контроллеры прерываний, но и на остальные ведомые. Однако на вашем компьютере или ноутбуке на самом деле 2 контроллера прерываний, как выше указывалось: ведущий и ведомый. Но можно создавать свои компьютерные системы, используя таким образом до 64 ведомых контроллеров прерываний.

В современных компьютерах уже давно функции контроллера прерываний выполняют не микросхемы 8259A, а «южный» мост. Однако, для всех программ и устройств всё остаётся по-прежнему. Более того, контроллер прерываний можно программировать, и обращаться к внутренним регистрам и портам необходимо точно также, как и к контроллеру 8259A.

 

Контроллер ПДП

Прямой доступ к памяти (DMA) - это метод непосредственного обращения к памяти, минуя процессор. Процессор отвечает только за программирование DMA: настройку на определенный тип передачи, задание начального адреса и размера массива обмениваемых данных. Обычно DMA используется для обмена массивами данных между системной памятью и устройствами ввода-вывода.

Обмен данными между процессором и устройствами ввода-вывода осуществляется по системной шине, "хозяином" которой является процессор. При использовании контроллера DMA на время обмена данными он должен получить управление системной шиной, т.е. стать ее "хозяином". По окончании обмена подсистема DMA возвращает процессору право управления шиной.

Архитектура компьютера PC AT включает в себя подсистему DMA, состоящую из двух контроллеров DMA Intel 8237, регистра старшего адреса DMA и регистров страниц DMA. Эти контроллеры обеспечивают 7 каналов DMA.

Система обеспечивает передачу данных по каналам DMA как по одному байту за цикл DMA, так и по два байта за цикл, исходя из возможностей архитектуры процессора (двухбайтной шины данных). Чтобы сохранить преемственность подсистемы DMA в PC AT с аналогичной подсистемой в PC XT каскадирование "байтного" контроллера DMA с распределением каналов XT осуществляется через "словный" контроллер DMA.

Для осуществления прямого доступа к памяти контроллер должен выполнить ряд последовательных операций:

ü принять запрос (DREQ) от устройства ввода-вывода;

ü сформировать запрос (HRQ) в процессор на захват шины;

ü принять сигнал (HLDA), подтверждающий захват шины;

ü сформировать сигнал (DACK), сообщающий устройству о начале обмена данными;

ü выдать адрес ячейки памяти, предназначенной для обмена;

ü выработать сигналы (MEMR, IOW или MEMW, IOR), обеспечивающие управление обменом;

ü по окончании цикла DMA либо повторить цикл DMA, изменив адрес, либо прекратить цикл.

Контроллеры DMA обеспечивают формирование только 16 младших разрядов адреса памяти. Причем старшая часть адреса (А15-А8 для DMA1 или А16-А9 для DMA2) во время цикла DMA по шине данных поступает в регистр старшего адреса DMA и далее на шину адреса, а младшая часть адреса (А7-А0 для DMA1 или А8-А1 для DMA2) выдается на шину адреса непосредственно из контроллера. Восемь старших разрядов адреса памяти содержатся в регистре страниц DMA. Разряд А16 из регистра страниц DMA запрещается, когда выбран DMA2. Разряд A0 не связан с DMA2 и всегда содержит нуль при передаче слова.

Это означает, что:

ü размер блока данных, который может быть передан или адресован, измеряется не байтами (8 бит), а словами (16 бит);

ü слова всегда должны быть расположены на четной границе.

Таким образом, контроллер DMA и регистр страниц определяют 24-разрядный адрес, что обеспечивает передачу данных в пределах адресного пространства 16 М байт.

Регистры страниц.

Регистр страниц вместе с контроллерами DMA он определяет полный (24-разрядный) адрес для каналов DMA.

Адреса портов регистров страниц:

Канал DMA Адрес порта регистра страниц
0 087h
1 083h
2 081h
3 082h
4 -
5 08Вh
6 089h
7 08Ah
Регенерация 08Fh

* Содержимое регистра страниц в целях регенерации должно быть равно 00h.

Адресация портов .

В таблице приведены адреса портов - регистров адреса ОП и управления/состояния контроллеров DMA, а также форматы регистров:

Функции регистров

Формат

Адреса портов

Чтение/запись

DMA1 DMA2
Регистрсостояния (STAT) Read Status Register)

8

008h

0D0h

Чтение
Регистркоманд (CR) (Write Command Register) Запись
Регистррежима (MOD) (Write Mode Register)

6

00Bh

0D6h

Запись
Регистррежима (MOD)*** (Read Mode Register) Чтение
Запись одиночных разрядов регистра маск (Write Single Mask Register) 4

00Ah

0D4h

Запись
Регистркоманд (CR)*** (Read Command Register) 8 Чтение
Запись всех разрядов маски (Write Mask Register)

4

00Fh

0DEh

Запись
Регистрмаски (MASK)*** (Read Mask Register) Чтение
Программный регистр запросов (REQ)** Write Request Register)

4

009h

0D2h

Запись
Регистрзапросов *** (Read Request Register) Чтение
Базовый и текущий регистры адреса - канал 0 16 000h 0C0h Запись
Текущий регистр адреса канал 0 16 000h 0C0h Чтение
Базовый и текущий регистры cчетчика - канал 0 16 001h 0C2h Запись
Текущий регистр счетчика - канал 0 16 001h 0C2h Чтение
Базовый и текущий регистры адреса - канал 1 16 002h 0C4h Запись
Текущий регистр адреса - канал 1 16 002h 0C4h Чтение
Базовый и текущий регистры cчетчика - канал 1 16 003h 0C6h Запись
Текущий регистр счетчика - канал 1 16 003h 0C6h Чтение
Базовый и текущий регистры адреса - канал 2 16 004h 0C8h Запись
Текущий регистр адреса - канал 2 16 004h 0C8h Чтение
Базовый и текущий регистры cчетчика - канал 2 16 005h 0CAh Запись
Текущий регистр счетчика - канал 2 16 005h 0CAh Чтение
Базовый и текущий регистры адреса - канал 3 16 006h 0CCh Запись
Текущий регистр адреса - канал 3 16 006h 0CCh Чтение
Базовый и текущий регистры cчетчика - канал 3 16 007h 0CEh Запись
Текущий регистр счетчика - канал 3 16 007h 0CEh Чтение
Временныйрегистрданных(TR)** Read Temporary Register)¦ 16

00Dh

0DAh

Чтение
Общий сброс (Master Clear) * Запись
Сброс F/F(Clear Byte Pointer Flip-Flop)

*

00Ch

0D8h

Запись
Установка F/F *** (Set Byte Pointer Flip-Flop) Чтение
Сброс регистра маски (Clear Mask Register)

*

00Eh

0DCh

Запись
Сброссчетчика MODE *** (Clear Mode Counter) Чтение

· * Это не регистры, а непосредственные команды для контроллера DMA.

· ** Эти регистры используются только в режиме ПАМЯТЬ-ПАМЯТЬ.

· *** Эти регистры и команды контроллера DMA не реализованы в контроллере 8237А и в "Периферийном контроллере" STC62C008, но реализованы в большинстве современных комплектов процессорных БИС.

Режимы обслуживания.

В активном цикле обслуживание подсистемы DMA возможно в одном из четырех режимов. Окончание обслуживания распознается по переходу регистра счетчика слов из 0000Н в FFFFН. При этом возникает сигнал окончания счета (TC), который может вызвать автоинициализацию, если она запрограммирована, или маскирование канала при ее отсутствии.

Одновременно с TC вырабатывается выходной сигнал -EOP. Во время автоинициализации первоначальные значения регистров текущего адреса и счетчика восстанавливаются из соответствующих базовых регистров. После автоинициализации канал готов выполнять другое обслуживание подсистемы DMA без вмешательства CPU, как только обнаружится достоверный DREQ.


Дата добавления: 2019-02-22; просмотров: 1022; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!