Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Цифровая и микропроцессорная техника. Учебное пособие
.pdf
5.1. Типовая структура микропроцессорной системы
соответствующей подпрограммы обслуживания, которую называют обработчиком прерывания. Эти векторы являются входами
в подпрограммы обслуживания и хранятся в таблице векторов
прерываний, которая записывается в памяти микропроцессорной системы. Завершается подпрограмма обслуживания специальной командой возврата из прерывания, которая извлекает из
стека хранившееся содержимое PC и PSW, загружает его обратно
в эти регистры, обеспечивая возвращение к выполнению прерванной программы.
Прямой доступ к памяти. Режим прямого доступа к памяти
(DMA – Direct Memory Access) используется, если необходимо
произвести пересылку значительного объема информации между ОЗУ и каким-либо внешним устройством. Реализация такой
пересылки с помощью соответствующей программы требует использования отдельной команды для пересылки каждого байта
или слова и значительного времени на ее выполнение.
Для пересылки больших массивов информации в микропроцессорной системе используются специальные микросхемы –
ко н т роллеры пря мог о дос т упа к пам я ти. При пост уп лении за п р о са от внешнего устройства контроллер выдает соответствующий
сигнал микропроцессору. Полу чив этот сигнал, процессор завершает очередной цикл обмена по системной шине и отключается
от нее, т. е. переводит выходы своих буферов, присоединенных
к шинам адреса, данных и управления в Z-состояние. При этом
процессор выдает контроллеру прямого доступа к памяти сигнал
разрешения на реализацию прямого доступа. Получив этот сигнал, контроллер принимает на себя управление системной шиной. Он выдает на шину адреса ячеек ОЗУ, с которыми выполняется текущий цикл обмена, формирует необходимые сигналы,
определяющие режим работы ОЗУ (запись или чтение) и портов
ввода и вывода, через которые производится пересылка информации (ввод или вывод). Предварительно контроллер прямого
доступа к памяти программируется для выполнения указанных
функций. В него вводятся начальные адреса массивов памяти в
ОЗУ, с которых начинается процесс обмена, и размеры массивов,
подлежащих пересылке.
Теоретически обмен с помощью прямого доступа к памяти
может обеспечить более высокую скорость передачи информации, чем программный обмен, так как процессор передает данные
111

Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
медленнее, чем контроллер прямого доступа к памяти. Однако на
практике это преимущество реализуется далеко не всегда. Скорость обмена в режиме прямого доступа к памяти обычно ограничена возможностями магистрали. Кроме того, необходимость
программного задания режимов контроллера прямого доступа к
памяти также уменьшает реальную скорость пересылки данных в
режиме прямого доступа к памяти. Поэтому этот режим обычно
применяется в системах, где часто необходимо пересылать очень
большие объемы данных (например, в персональных компьютерах). В простых микропроцессорных системах режим прямого
доступа к памяти применяется редко.
5.2. ТИПОВАЯ АРХИТЕКТУРА МИКРОПРОЦЕССОРА
Рассмотрим типовую архитектуру микропроцессора микро-
контроллера AVR (рис. 5.5).
MOSI MISO SCK
Память
программ
Регистр
команд
ОЗУ
Порты ввода
(вывода)
Рис. 5.5. Типовая архитектура микропроцессора микроконтроллера AVR
112
Последовательный
периферийный
интерфейс
Счетчик
команд
Регистры
общего
назначения
АЛУ
Прерывания
ЦПУ
Тай ме ры
(счетчики)
Энергозависимая
память
Аналоговый
компаратор
АЦП
Универсальный
последовательный
приемопередатчик
Последовательный
периферийный
трехпроводной
интерфейс
Двухпроводной
последовательный
интерфейс
Сторожевой
таймер
Интерфейс
JTAG

5.2. Типовая архитектура микропроцессора
Процессор. Сердцем микроконтроллеров AVR является 8-битное микропроцессорное ядро, или центральное процессорное
устройство (ЦПУ), построенное на принципах RISC-архитектуры. Основой этого блока служит арифметико-логическое
устройство (АЛУ). По системному тактовому сигналу из памяти
программ в соответствии с содержимым счетчика команд (PC)
выбирается очередная команда и выполняется в АЛУ. Во время
выбора команды из памяти программ происходит выполнение
предыдущей выбранной команды, что и позволяет достичь быстродействия 1 MIPS на 1 МГц.
АЛУ подключено к регистрам общего назначения (32 шт.),
имеющим байтовый формат, т. е. каждый из них состоит из 8 бит.
РОН находятся в начале адресного пространства оперативной
памяти, но физически не являются ее частью. Поэтому к ним
можно обращаться двумя способами (как к регистрам и как к
памяти). Такое решение является особенностью AVR и повышает
эффективность работы и производительность микроконтроллера.
Отличие между регистрами и оперативной памятью состоит в том, что с регистрами можно производить любые операции
(арифметические, логические, битовые), а в оперативную память
можно лишь записывать данные из регистров.
Память. В микроконтроллере AVR реализована Гарвардская
архитектура, по которой разделены не только адресные пространства памяти программ и памяти данных, но и шины доступа к
ним. Каждая из областей памяти данных также расположена в
своем адресном пространстве.
Память программ (Flash ROM, или Flash ПЗУ) предназначена для хранения последовательности команд, управляющих
функционированием микроконтроллера, и имеет 16-битную организацию. Все AVR имеют Flash-память программ, которая может быть различного размера (от 1 до 256 Кбайт). Ее главное достоинство в том, что она построена на принципе электрической
перепрограммируемости. Программа заносится во Flash-память
AVR как с помощью обычного программатора, так и с помощью
SPI-интерфейса.
Память данных разделена на три части: регистровая, оперативная и энергонезависимая.
Регистровая память включает регистры общего назначения,
объединенные в файл, и служебные регистры ввода (вывода). И те
и другие расположены в адресном пространстве ОЗУ, но не являются его частью.
113

Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
В области регистров ввода (вывода) расположены служебные
регистры (регистры управления микроконтроллером, регистры
состояния и т. п.), а также регистры управления периферийными
устройствами, входящими в состав микроконтроллера. По сути,
управление микроконтроллером заключается в управлении этими
регистрами. Среди служебных регистров есть регистр состояния,
используемый наиболее часто в процессе выполнения программ.
Он содержит набор флагов (табл. 5.1), показывающих текущее состояние микроконтроллера. Большинство флагов автоматически
устанавливаются в «1» или сбрасываются в «0» при наступлении
определенных событий (в соответствии с результатом выполнения
команд). Все биты этого регистра доступны как для чтения, так
и для записи. Эта информация анализируется при выполнении
условных переходов. При возникновении прерываний содержимое
регистра состояния необходимо сохранять программно.
Таблица 5.1
Описание флагов регистра состояния
Обо-
Бит
значе-
ние
0 CF Carry
1 1 – Зарезервирован
2 PF Parity
3 0 – Зарезервирован
4 AF Auxiliary
Название Описание
Флаг переноса. Устанавливается в «1», если
Flag
Flag
Carry
Flag
результат предыдущей операции не уместился в приемнике и произошел перенос
из старшего бита или если требуется заем
(при вычитании). Иначе установлен в «0»
Флаг четности. Устанавливается в «1», если
младший байт результата предыдущей команды содержит четное количество битов,
равных «1». Если количество единиц в младшем байте нечетное, то этот флаг равен «0»
Вспомогательный флаг переноса (флаг полупереноса). Устанавливается в «1», если
в результате предыдущей операции произошел перенос (или заем) из третьего бита
в четвертый. Этот флаг используется автоматически командами двоично-десятичной
коррекции
114

Обо-
Бит
значе-
ние
5 0 – Зарезервирован
6 ZF Zero Flag
7 SF Sign Flag
8 TF Trap Flag
9 IF Interrupt
10 DF Direction
11 OF Overf low
12 13IOPL I/O
14 NT Nested
15 0 – Зарезервирован
Название Описание
Флаг нуля. Устанавливается в «1», если
результат предыдущей команды равен «0»
Флаг знака. Всегда равен старшему биту
результата
Флаг трассировки (флаг ловушки). Предусмотрен для работы отладчиков в пошаговом выполнении, которые не используют
защищенный режим. Если этот флаг установить в «1», то после выполнения каждой
программной команды управление временно передается отладчику (вызывается
прерывание «1»)
Флаг разрешения прерываний. Если сбро-
Enable
Flag
Flag
Flag
Privilege
Level
Task
сить этот флаг в «0», то процессор перестанет обрабатывать прерывания от внешних
устройств. Обычно его сбрасывают на короткое время для выполнения критических
участков программы
Флаг направления. Контролирует поведение
команд обработки строк. Если установлен
в «1», то строки обрабатываются в сторону
уменьшения адресов, если сброшен в «0», то
наоборот
Флаг переполнения. Устанавливается в «1»,
если результат предыдущей арифметической
операции над числами со знаком выходит
за допустимые для них пределы. Например,
если при сложении двух положительных
чисел получается число со старшим битом,
равным «1», т. е. отрицательное, и наоборот
Уровень приоритета ввода (вывода)
Флаг вложенности задач
5.2. Типовая архитектура микропроцессора
Окончание табл. 5.1
115

Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
Оперативная память используется для оперативного хранения данных. Число циклов чтения и записи в ней не ограничено, но при отключении питающего напряжения вся информация
теряется.
Энергонезависимая память данных используется для долговременного хранения различной информации, которая может
изменяться в процессе функционирования микроконтроллерной
системы. Этот тип памяти удобен для хранения промежуточных
данных, различных констант, коэффициентов, серийных номеров, ключей и т. п.
Периферия. Периферия микроконтроллера AVR включает
порты ввода (вывода), поддержку внешних прерываний, таймеры-счетчики, сторожевой таймер, аналоговые компараторы,
10-разрядный 8-канальный АЦП, интерфейсы UART, SPI, широтно-импульсные модуляторы.
Архитектурная особенность построения портов ввода (вывода) у AVR заключается в том, что для каждого физического
вывода (пина) существует 3 бита контроля (управления), а не 2,
как у распространенных 8-разрядных микроконтроллеров (Intel,
Microchip, Motorola и т. д.). Это позволяет избежать необходимости иметь копию содержимого порта в памяти для безопасности и повышает скорость работы микроконтроллера при работе
с внешними устройствами, особенно в условиях внешних электрических помех.
Система прерываний – одна из важнейших частей микроконтроллера. Все микроконтроллеры AVR имеют многоуровневую
систему прерываний. Прерывание прекращает нормальный ход
программы для выполнения приоритетной задачи, определяемой
внутренним или внешним событием.
Для каждого такого события разрабатывают отдельную программу, которую называют подпрограммой обработки запроса на
прерывание (подпрограммой прерывания), и размещают в памяти программ.
При возникновении события, вызывающего прерывание, микроконтроллер сохраняет содержимое счетчика команд, прерывает выполнение центральным процессором текущей программы
и переходит к выполнению подпрограммы прерывания.
После выполнения подпрограммы прерывания осуществляется восстановление предварительно сохраненного счетчика ко-
116

5.2. Типовая архитектура микропроцессора
манд и процессор возвращается к выполнению прерванной программы.
Для каждого события может быть установлен приоритет. Понятие приоритет означает, что выполн яемая под программа прерывания может быть прервана другим событием только при условии,
что оно имеет более высокий приоритет, чем текущее. В противном случае центральный процессор перейдет к обработке нового
события только после окончания обработки предыдущего.
Микроконтроллеры AVR имеют в своем составе 1–4 таймера
(счетчика) с разрядностью 8 или 16 бит, которые могут работать и
как таймеры от внутреннего источника тактовой частоты, и как
счетчики внешних событий. Их можно использовать для точного формирования временных интервалов, подсчета импульсов на
выводах микроконтроллера, формирования последовательности
импульсов, тактирования приемопередатчика последовательного
канала связи. В режиме ШИМ используется широтно-импульсный модулятор для генерирования сигнала с программируемыми
частотой и скважностью. Таймеры (счетчики) способны вырабатывать запросы прерываний.
Сторожевой таймер предназначен для предотвращения катастрофических последствий от случайных сбоев программы. Он
имеет свой собственный RC-генератор, работающий на частоте
1 МГц.
АЦП служит для получения числового значения напряжения, поданного на его вход. Этот результат сохраняется в регист ре дан ных АЦП и определяется числом, занесенным в соответствующий регистр.
Универсальный асинхронный (UART) или синхронно-асинхронный (USART) приемопередатчики – последовательный интерфейс
для организации информационного канала обмена микроконтроллера с внешним миром. Способен работать в дуплексном
режиме. Он поддерживает протокол стандарта RS-232, что дает
возможность связываться с персональным компьютером.
Последовательный периферийный трехпроводной интерфейс
(SPI) предназначен для организации обмена данными между двумя устройствами. С его помощью может осуществляться обмен
данными между микроконтроллером и различными устройствами (цифровыми потенциометрами, АЦП, ПЗУ и др.), а также
между несколькими микроконтроллерами AVR.
117

Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
Через SPI может осуществляться программирование микро-
контроллера.
Двухпроводной последовательный интерфейс (TWI) позволяет
объединить вместе до 128 различных устройств с помощью двунаправленной шины, состоящей из линии тактового сигнала и
линии данных.
Тактовый генератор вырабатывает импульсы для синхрони-
зации работы всех узлов микроконтроллера. Внутренний тактовый генератор AVR может запускаться от нескольких источников
опорной частоты (внешний генератор, внешний кварцевый резонатор, внутренняя или внешняя RC-цепочка). Минимальная
допустимая частота ничем не ограничена (вплоть до пошагового
режима).
Система реального времени (RTC) реализована в некоторых
микроконтроллерах. Таймер (счетчик) RTC имеет отдельный
предделитель, который может быть программным способом подключен или к источнику основной тактовой частоты, или к дополнительному асинхронному источнику опорной частоты (кварцевый резонатор или внешний синхросигнал). Для этой цели зарезервированы два вывода микросхемы. Внутренний осциллятор
оптимизирован для работы с внешним «часовым» кварцевым резонатором 32,768 кГц.
Питание. Микроконтроллеры AVR функционируют при напряжениях питания от 1,8 до 6,0 В. Ток потребления в активном
режиме зависит от величины напряжения питания и частоты, на
которой работает микроконтроллер, и составляет менее 1 мА для
частоты 500 кГц, 5–6 мА – для 5 МГц и 8–9 мА – для 12 МГц.
Микроконтроллеры AVR могут быть переведены программным путем в один из трех режимов пониженного энергопотребления:
• холостого хода (IDLE). Прекращает работу только процес-
сор и фиксируется содержимое памяти данных, а внутренний
генератор синхросигналов, таймеры, система прерываний и сторожевой таймер продолжают функционировать. Ток потребления
не превышает 2,5 мА на частоте 12 МГц;
• стоповый (POW ER DOW N). Сохра н яет с я со д е р ж и мо е рег и-
стрового файла, но останавливается внутренний генератор синхросигналов, и, следовательно, останавливаются все функции,
пока не поступит сигнал внешнего прерывания или аппаратного
118

5.3. Интерфейс передачи данных UART
сброса. При включенном сторожевом таймере ток потребления
в этом режиме составляет около 80 мкА, а при выключенном –
менее 1 мкА (все приведенные значения справедливы для напряжения питания 5 В);
• экономичный (POWER SAVE). Продолжает работать толь-
ко генератор таймера, что обеспечивает сохранность временно й
базы. Все остальные функции отключены.
Сброс при снижении напряжения питания (BOD) отслеживает
напряжение источника питания. Если схема включена, то при
снижении питания ниже некоторого значения она переводит микроконтроллер в состояние сброса. Когда напряжение питания
вновь увеличится до порогового значения, запускается таймер задержки сброса. После формирования задержки внутренний сигнал сброса снимается и происходит запуск микроконтроллера.
5.3. ИНТЕРФЕЙС ПЕРЕДАЧИ ДАННЫХ UART
У всех интерфейсов передачи данных одна цель – передача
данных. Данными с контроллером могут обмениваться датчики,
исполнительные устройства, индикаторы, дисплеи, компьютеры,
смартфоны и другие контроллеры. Причем под обменом данных
имеется в виду не только двухсторонняя связь, но и односторонняя, когда, например, датчик температуры передает информацию
на контроллер и ничего «не ждет» от него в ответ.
Если говорить применительно к Arduino, то в аппаратном
виде у всех плат присутствуют три интерфейса: UART, SPI и I2C,
а у некоторых – встроенный адаптер CAN-шины. У каждого из
перечисленных интерфейсов есть свои преимущества и недостатки, а также свои «клиенты», т. е. устройства, использующие только тот или иной интерфейс для связи с внешним миром.
У UART прием и передача отдельных битов не выравниваются так называемыми синхроимпульсами, что и хорошо, и плохо
одновременно. Единица отличается от нуля исключительно по
времени между перепадами уровней сигнала, которое заранее задается скоростью передачи. Существует версия UART с синхронизацией сигналов (USART). Асинхронная передача данных отличается простотой протокола, минимумом проводов и занятых
в процессе аппаратных средств, имеет возможность полного дуплекса (одновременной передачи данных в обоих направлениях).
119

Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
Однако она имеет меньшую помехозащищенность и, как следствие, максимальную скорость и расстояние при тех же условиях.
С «хардовой» стороны UART использует два пина контроллера (Rх и Tх), где первые буквы обозначают, соответственно,
Receiver и Transmitter. Для связи двух устройств необходимо два
провода, соединять их следует крест-накрест: Rх первого с Tх
второго и наоборот (рис. 5.6).
UART 1 UART 2
Tx
Rx
Рис. 5.6. Схема подключения интерфейса UART
Tx
Rx
У разных плат Arduino разное количество аппаратных портов
UART (чаще всего один, а у Arduino Mega – четыре). Простота
этого интерфейса позволяет эмулировать порт программными
методами, присваивая Rх и Tх почти любым пинам на выбор.
Можно использовать «хардовые» порты на строго определенных
пинах (рекомендуется) или с некоторыми ограничениями – «программные», а при необходимости и те и другие одновременно.
С «софтовой» стороны передача выглядит как цепочка сигналов, а именно битов, разделенных на байты, и служебных сигналов (рис. 5.7).
ПаузаD+0 01 1
Старт
Рис. 5.7. Передача информации с помощью интерфейса UART
223 34 455
Биты
данных
6 67 7 Пауза
СтартСтоп
Биты
данных
Стоп
Пока информация не передается, в линии сохраняется высокий уровень (для случая с Arduino это 5 В, так называемая
TTL-логика). Спад сигнала – это команда принимающей стороне. Через определенное время, зависящее от заранее заданной
скорости, начинается передача байта в виде ряда «0» и (или) «1» с
соблюдением тех же, заранее оговоренных, временны х отрезков.
120
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
