А. В. Никонов, Е. М. Раскин
ОДНОКРИСТАЛЬНЫЕ
МИКРОКОНТРОЛЛЕРЫ И МИКРОЭВМ
Курс лекций
Омск
Издательство ОмГТУ
2010
УДК 004.31–181.48(075)
ББК 32.973я73
Н62
Рецензенты:
Никонов, А. В.
Н62 Однокристальные микроконтроллеры и микроЭВМ: курс лекций /
А. В. Никонов, Е. М. Раскин. – Омск: Изд-во ОмГТУ, 2010. – 140 с.
ISBN 978-5-8149-0966-4
УДК 004.31–181.48(075)
ББК 32.973я73
3
ВВЕДЕНИЕ
Создание микропроцессора (МП) как универсального компонента,
который стал связывающим звеном БИС и СБИС различного назначения,
позволило обеспечить функциональную полноту изделий электронной
промышленности большой степени интеграции. МП придал свойство
универсальности всей совокупности современного поколения изделий
электронной техники сверхбольшой степени интеграции, что обеспечивает
низкую стоимость систем управления. Он стал проводником электроники во
все сферы народного хозяйства, науки и быта.
Основной причиной качественно нового этапа в развитии автономных
средств вычислительной техники (СВТ) послужили успехи электронной
промышленности в увеличении разрешающей способности формирования
элементов на полупроводниковом кристалле. Разрешающая способность в
несколько сотен нанометров и менее позволила расположить функциональные
узлы ЭВМ на кристалле БИС или СБИС, что привело к созданию
однокристальных микроЭВМ (ОмЭВМ) и однокристальных
микроконтроллеров (ОмК).
Следствием универсальности МП-систем является их высокая гибкость –
возможность быстрой перенастройки при необходимости даже значительных
изменений алгоритмов управления. Перенастройка осуществляется
программным путём без существенных производственных затрат.
МП позволяют легко реализовать принципы открытых систем,
функциональные возможности которых могут наращиваться по мере
необходимости или при появлении новых технических средств. Области
применения ОмЭВМ и ОмК классифицируют по составу функций,
выполняемых ими при управлении технологическими процессами,
оборудованием, устройствами и их параметрами и данными.
Задачи автоматизации процессов различного рода сопряжены с
проблемой автоматического ввода информации в ЭВМ, для решения которой
разработана аналоговая и аналого-цифровая база. Фактически, это процессоры
аналогового сигнала, комплексно выполняющие автоматические операции
сбора, измерений, предварительной обработки, подготовки и ввода в ЭВМ
кодированной измерительной информации. Такие процессоры могут быть
объединены с интегральными первичными измерительными преобразователями
(датчиками).
Целесообразность применения МП-устройства определяется
эффективностью при его включении в проект. Универсальных рекомендаций
4
здесь нет и решение принимает сам разработчик. Но в целом использование
МП-устройства оправдано в следующих случаях [1]:
а) число корпусов интегральных схем (ИС) малой и средней степени
интеграции, требуемое для решения задачи, превышает 30–50 шт.;
б) проектируемое устройство должно быть многофункциональным;
в) проектируемый модуль должен взаимодействовать с большим числом
входных и выходных устройств;
д) требуется запомнить большой объём данных или большое число
логических состояний;
е) при выполнении алгоритмов, связанных с вычислениями;
ж) при необходимости выполнения дополнительных обеспечивающих
функций (самокалибровка, самодиагностика и т. п.);
и) необходимо выполнять статистическую обработку данных в процессе
работы;
к) промежуточные результаты работы устройства должны определяться
по ходу работы и индицироваться;
л) необходимость выполнять различные функциональные преобразо-
вания;
м) велик объём обрабатываемых данных и требуется большая
производительность при их обработке.
В современной технике используются как ОмЭВМ, так и ОмК. ОмЭВМ –
виды вычислительных устройств, представляющих собой комплекс
технических средств и программного обеспечения (ПО), способный
реализовать алгоритм, оформленный в виде программы, хранимой в памяти, и
ориентированный на реализацию процессов переработки информации во
взаимодействии с человеком-пользователем [2]. Как универсальная БИС они
начали изготавливаться в 70-е годы прошлого столетия, и на кристалле
располагались процессор, память (ОЗУ и ПЗУ), схемы сопряжения с
устройствами ввода-вывода (контроллеры) и тактовый генератор.
ОмЭВМ позволили заменить схемы жёсткой логики на программируемые
схемы. Эти изделия имеют низкую стоимость при наличии на кристалле
функционально полного набора устройств. ОмЭВМ объединяет на одном
полупроводниковом кристалле как сам МП, так и ряд дополнительных
устройств, обеспечивающих его функционирование в системе управления:
оперативную и программную память, генератор синхроимпульсов,
разнообразные устройства ввода и вывода информации и др. Такие БИС
относят к области «система на кристалле» (System-on-a-Chip, SoC).
В зависимости от назначения она может оперировать как цифровыми
сигналами, так и аналоговыми, аналого-цифровыми, а также частотами
5
радиодиапазона. Как правило, применяется в портативных и встраиваемых
системах. Если разместить все необходимые цепи на одном
полупроводниковом кристалле не удается, применяется схема из нескольких
кристаллов, помещенных в единый корпус (System in a package, SiP). SoC
считается более выгодной конструкцией, так как позволяет увеличить процент
годных устройств при изготовлении и упростить конструкцию корпуса.
Типичная SoC содержит:
– один или несколько микроконтроллеров, микропроцессоров или ядер
цифровой обработки сигналов;
– банк памяти, состоящий из модулей ПЗУ, ОЗУ, ППЗУ или Flash;
– источники сигналов опорной частоты, например, с использованием
кварцевых резонаторов и систем фазовой автоподстройки частоты (ФАПЧ,
phase-locked loops);
– таймеры, счётчики, цепи задержки после включения;
– стандартные интерфейсы для внешних устройств: USB, FireWire,
Ethernet, USART, SPI;
– входы и выходы цифро-аналоговых и аналого-цифровых
преобразователей;
– регуляторы напряжения и стабилизаторы питания.
Блоки могут быть соединены с помощью шины. Если в составе чипа есть
контроллер прямого доступа к памяти (DMA), то с его помощью можно
заносить данные с большой скоростью из внешних устройств напрямую в
память чипа, минуя процессорное ядро.
Для функционирования системы программное обеспечение не менее
важно, чем аппаратное. Разработка, как правило, ведётся параллельно.
Аппаратная часть собирается из стандартных отлаженных блоков, для сборки
программной части используются готовые драйверы. Применяются средства
разработки CAD и интегрированные программные оболочки.
Для того, чтобы удостовериться в правильной работе созданной
комбинации блоков, драйверы и программу загружают в эмулятор аппаратной
части (микросхему с программируемыми цепями, FPGA). Также требуется
задать расположение блоков и разработать межблочные связи. Перед сдачей в
производство аппаратная часть тестируется на корректность с использованием
специальных языков (Verilog, VHDL, SystemVerilog, SystemC, OpenVera).
До 70 % общих усилий на разработку затрачивается именно на этом этапе.
Системы на кристалле потребляют меньше энергии, стоят дешевле и
работают надёжнее, чем наборы микросхем с той же функциональностью.
Меньшее количество корпусов упрощает монтаж. Тем не менее, создание одной
слишком большой и сложной системы на кристалле может оказаться более
6
дорогим процессом, чем серии из маленьких, из-за сложности разработки и
отладки а также снижения процента годных изделий.
ОмК – устройство переработки информации, ориентированное на работу с
некоторой искусственной системой [2]. Большое число портов – особенность
контроллеров: так, БИС 580ВМ80А имеет 256 портов ввода-вывода. В памяти
контроллера может храниться большое число программ, но их количество всегда
ограничено и сами программы известны заранее. Они вводятся в контроллер в
процессе проектирования или БИС, или устройства на его основе. Хранящийся в
памяти комплект программ обновляется в исключительных случаях:
используются ПЗУ для постоянных программ и ППЗУ для изменяющегося ПО [3].
Также у контроллеров нет операционной системы, нет внутреннего
системного ПО (или оно представлено очень слабо). Все режимы работы
контроллера известны заранее и поэтому потребность в системном ПО
отсутствует. ОмК обычно работают в реальном масштабе времени, что
достигается применением БИС быстродействующих серий и отсутствием
системного ПО (например, БИС серии 1804 имеют длительность цикла 150 нс).
ОмЭВМ и ОмК имеют большое число сходных черт, но микроконтроллер –
это устройство переработки информации (способное реализовать алгоритм),
ориентированное на совместную работу с некоторой искусственной системой
(машиной, прибором, и т. п.). В повседневной практике термин
«микроконтроллер» вытеснил термин «однокристальная микроЭВМ».
7
1. ОДНОКРИСТАЛЬНЫЕ МИКРОПРОЦЕССОРНЫЕ
УСТРОЙСТВА. АРХИТЕКТУРА И ВИДЫ МИКРОЭВМ
И МИКРОКОНТРОЛЛЕРОВ
В разделе представлена архитектура однокристальных МП-уст-
ройств. Рассмотрена организация структур ОмЭВМ и различных видов
ОмК. Даются основные черты исторически сложившихся направлений
и современных тенденций в области однокристальных «систем на
кристалле».
Ключевые слова: архитектура микропроцессора, шинная организация,
микроконтроллер, сторожевой таймер, микроконтроллер встраиваемый;
микроконтроллеры с внешней памятью; цифровой сигнальный процессор.
8
Преимущество RISC-процессоров проявляется в том, что их более
простые команды требуют для выполнения значительно меньшее число
машинных циклов. За счёт этого достигается существенное увеличение
производительности.
Также архитектура процессоров оценивается по принципу организации
памяти – архитектуры Гарвардского и Принстонского университетов США.
Принстонская архитектура (её также называют архитектурой Фон-Неймана)
имеет общую память для хранения программ и данных. Она представлена на
рисунке 1.1.
Дешифра-
ПЗУ данные тор команд
программ адреса
ОЗУ дан- Блок ин- Процессор и
ных терфейса с внутренние
памятью регистры
Стековое
ОЗУ управляющие
сигналы
9
В Гарвардской архитектуре разделена память программ и память данных.
Обращение к памяти происходит по отдельным шинам адреса и данных, что
значительно повышает производительность процессора по сравнению с
предыдущей архитектурой (рисунок 1.2).
данные
адреса
ПЗУ Дешифра-
программ тор команд
управляющие
сигналы Стековое
ОЗУ
Блок реги-
Процессор и ин- стров
терфейс к блоку (ОЗУ дан-
регистров ных)
10
следующую структурную организацию. С раздельными шинами (рисунок 1.3:
раздельными – для памяти и для контроллеров ВУ): за счёт использования
двунаправленных шин, по одной шине, в зависимости от дополнительного
управляющего сигнала (напр., READ/WRITE) данные передаются из памяти в
процессор или обратно.
A
(шина адреса)
Контроллеры
М F внешних
(память) (процессор) устройств (ВУ)
D С
(шина данных) (шина управления)
С
D A
F М
R/W
Контроллеры
I/O
(ВУ)
11
Рис. 1.4. Структурная организация БИС ВТ с изолированными шинами
A/D
F М
С
R/W
Контроллеры
I/O
(ВУ)
R/W
Контроллеры
(ВУ)
12
Микроконтроллеры – управляющие устройства в микроисполнении –
широко применяются в различных областях технической деятельности
человека:
в ПЭВМ, стиральных машинах, музыкальных центрах, автомобилях, средствах
измерений, и т. д. Микроконтроллер является управляющим ядром аппаратных
комплексов различного назначения. С его помощью гораздо легче, в отличие от
традиционных решений, реализуются различные схемы. Опираясь на [4],
можно представить внутреннее содержание микроконтроллера и его
направленность на некоторые возможные объекты управления так, как это
сделано на рисунке 1.7.
Электро- Индикаторы
Индикаторы (свето- Выклю-
Персо- (светодиодные,
диодные, 7- чатели и
нальный двига-
7-сегментные,
сегментные, матрич- переклю-
компью- тель матричные)
ные) чатели
тер
Микро-
Тактовый Цепь контрол-
Таймер
генератор сброса лер
13
Из рисунка 1.7 видно, что МК содержит типовые функциональные узлы.
К ним относятся следующие.
1. Центральное процессорное устройство – оно принимает из памяти
программ коды команд, декодирует их и исполняет. В него входят арифметико-
логическое устройство (АЛУ), регистры и цепи управления.
2. Память программ – она хранит коды команд, последовательность
которых формирует программу микроконтроллера.
3. Оперативная память данных (ОЗУ) – здесь хранятся переменные
программ. У многих МК здесь также расположен стек.
4. Тактовый генератор – инициирует работу контроллера, и от него
зависит скорость работы МК.
5. Цепь сброса – приводит МК в исходное состояние, чем определяет
правильный запуск его работы.
6. Последовательный порт – позволяет обмениваться данными с
внешними устройствами при малом числе проводов.
7. Цифровой порт ввода-вывода – с помощью его линий можно управлять
одновременно несколькими внешними устройствами, адресуя их.
8. Таймер – задаёт временные интервалы.
9. Сторожевой таймер – специальный таймер, предназначенный для
предотвращения системных сбоев программы: после запуска он начинает
отсчёт заданного временного интервала. Если программа не перезапустит его
до истечения этого интервала времени, сторожевой таймер перезапустит МК.
То есть программа должна сигнализировать таймеру, что с ней всё в порядке.
Если такого сигнала нет, то в работе программы по какой-то причине
произошёл сбой.
Наиболее распространён ОмК ф. Intel 51-й серии и его клоны от разных
производителей. Кроме этого, появились интегральные схемы, использующие
сокращённый набор команд процессора (RISK – Reduced Instruction Set
Computers). Среди них популярны контроллеры ф. Microchip семейства PIC
(Peripheral Interface Controller). Также лидирующее место занимают RISK
ОмК из серии AVR (например, ф. Аtmel). PIC-контроллеры выпускают многие
фирмы, кому не лень их делать.
PIC-контроллер имеет также RISK-процессор, только архитектура
процессора другая и кодовое слово не 8 бит, а 11–15 бит.
Основное отличие RISK-процессора от 51-й серии ф. Intel, например, то,
что команда в нём исполняется за один такт, и число команд ограничено –
обычно около 60–70 штук. Поэтому в ходе изучения нужно рассматривать оба
типа микроконтроллеров. Как обычный ОмК нужно рассмотреть контроллер
51-й серии (и как самый используемый тип контроллеров). А в качестве
14
RISK-контроллера необходимо рассмотреть PIC-контроллеры и контроллер
AVR ф. Аtmel, так как для него много всевозможного бесплатного
обеспечения, используемого для программирования и демонстрации.
Впрочем, нет принципиальной разницы, на каком оборудовании
изучаются ОмК, так как сейчас все они часто программируется на языке С. Но
ресурсы в разных процессорах разные и, в зависимости от модели, что-то
может присутствовать, а что-то может быть упущено. После контроллера 51-й
серии целесообразно рассматривать AVR-контроллеры, а затем идут atmega и
arm как дальнейшее развитие. Достаточно рассмотреть и изучить один
процессор –
и полученные знания легко распространяются на все остальное. Новые ресурсы
и возможности появляются, а принципы остаются всё те же (кроме PIC-
контроллеров).
Семейство MCS-51, по сути дела, стало прародителем семейств так
называемых PIC и AVR микроконтроллеров, выполненных по Гарвардской
архитектуре процессора.
В случае высоких требований к быстродействию МК, при условии их
низкой стоимости и энергопотребления, разработки на основе МК MCS-51
применяются реже, уступая место разработкам на PIC и AVR
микроконтроллерах.
В целом, многообразие современных ОмК чрезвычайно велико. Зачастую
их делят на виды [5]:
– встраиваемые 8-разрядные;
– 16- и 32-разрядные МК;
– цифровые сигнальные процессоры (DSP).
Встраиваемые (embedded) микроконтроллеры имеют все ресурсы
(память, устройства ввода-вывода, и т. д.) на одном кристалле с процессорным
ядром. На такой контроллер подаются питание и тактовые сигналы. В них
процессорное ядро может быть общего плана или разработано специально для
данного МК. Основное назначение встраиваемых МК – обеспечить гибкое
программируемое управление объектами и связь с внешними устройствами.
Они не приспособлены для выполнения комплекса сложных функций.
Такие МК содержат большое число вспомогательных устройств, за счёт
чего реализуется их включение в конкретную систему с использованием
минимального числа дополнительных компонентов. Обобщённая структура
такого контроллера приведена на рисунке 1.8.
15
Блок Память про-
управления грамм
питанием
Порты вво-
да–вывода
Блок
управления Процес-
сбросом сор
Блок син-
хронизации
ОЗУ
и таймер
16
источник
питания Блок
управления входные и
выходные
Порты вво-
да–вывода
сигнал сброса питанием сигналы
(запуск) Блок
управления Процес-
сбросом сор
тактовые Блок син-
сигналы хронизации Интерфейс с
Интерфейс
внешней па-
и таймер с внешней
мятью Память
памятью программ
данные (ПЗУ)
адреса Память
данных
управляющие (ОЗУ)
сигналы
17
перестраиваемых), в синтезаторах и анализаторах речи, в анализаторах спектра,
для генераторов сигналов различной формы и т. п.
Примером отечественных ОмЭВМ может служить таблица А.1 [6, 7]
приложения А. Наиболее доведённой до практического применения являлась
серия 1850. Ряд серий ОмЭВМ имеют БИС отладочного кристалла без
встроенного ПЗУ и позволяют отрабатывать различные применения БИС
данных серий за счёт замены или перепрограммирования внешнего ПЗУ
(например, КМ1814ВЕ3, КР1816ВЕ35, КР1816ВЕ39 или КР1820ВЕ1).
Наличие аналогового ввода-вывода и встроенного устройства цифровой
обработки в БИС КМ1813ВЕ1 позволяет использовать её для построения
фильтров (в том числе перестраиваемых), в синтезаторах и анализаторах речи, в
анализаторах спектра, для генераторов сигналов различной формы и т. п.
Характеристики отечественных микроконтроллеров приведены в таблице
Б.1 приложения Б, а характеристики зарубежных ОмК приведены в таблице Б.2.
Описание контроллера серии AVR (микроконтроллер AT90S2313) приведено
в [8].
Выводы
Основной причиной качественно нового этапа в развитии автономных
средств вычислительной техники послужили успехи электронной
промышленности в увеличении разрешающей способности формирования
элементов на полупроводниковом кристалле. Целесообразность применения
однокристальных МП-устройств определяется эффективностью при их
включении в проект. Преимущество RISC-процессоров проявляется в том, что
их более простые команды требуют для выполнения значительно меньшее
число машинных циклов. За счёт этого достигается существенное увеличение
производительности.
ОмЭВМ объединяет на одном полупроводниковом кристалле как сам
МП, так и ряд дополнительных устройств, обеспечивающих его
функционирование в системе управления: оперативную и программную память,
генератор синхроимпульсов, разнообразные устройства ввода и вывода
информации и др. ОмК – это устройства переработки информации,
ориентированные на работу с некоторой искусственной системой. Большое
число портов – их особенность. Микроконтроллер является управляющим
ядром аппаратных комплексов различного назначения. С его помощью гораздо
легче, в отличие от традиционных решений, реализуются различные схемы.
Основное преимущество Принстонской архитектуры в том, что она
упрощает устройство микропроцессора, так как реализует обращение только к
одной общей памяти при необходимости воспользоваться ЗУ данных, программ
или стеком. Это представляет большую гибкость для разработчика ПО прежде
всего в области операционных систем реального времени. Гарвардская
18
архитектура выполняет команды за меньшее число тактов, чем предыдущая –
здесь больше возможностей для реализации параллельных операций.
С целью уменьшения выводов БИС ОмЭВМ и ОмК при их построении
применяют различные структурные организации. Многообразие современных
ОмК чрезвычайно велико, и часто их делят на виды: встраиваемые 8-разрядные;
16- и 32-разрядные; цифровые сигнальные процессоры.
19
2. Цифровая обработка информации на основе быстродействующих БИС /
С.А. Гамкрелидзе [и др.]; под ред. В.Г. Домрачева. – М.: Энергоатомиздат,
1988. – 136 с.
3. Однокристальные микроЭВМ / А. В. Боборыкин [и др.]. – М.: Бином,
МИКАП, 1994. – 398 с.
20
2. АППАРАТНАЯ ЧАСТЬ ОДНОКРИСТАЛЬНЫХ
МП-СРЕДСТВ
В этом разделы освещены особенности однокристальных
микропроцессорных средств, определяющих условия и эффективность их
использования.
Ключевые слова: КМОП-инвертор, спящий режим, потребляемая
мощность, инициализация, напряжение питания, тактовый генератор,
прерывание, таймер, ШИМ, преобразование напряжения
КМОП-инвертор. В настоящее время практически все однокристальные
микропроцессорные средства выпускаются по КМОП-технологии (CMOS –
Complementary Metal Oxide Semiconductor). В ней используется логический
ключ на паре комплементарных (р-канальном и n-каналном) полевых
транзисторов с изолированным затвором (рисунок 2.1) – так называемый
КМОП-инвертор.
При низком уровне напряжения на входе верхний транзистор открыт, а
нижний – закрыт, и на выходе установится высокий потенциал UП. При
высоком уровне напряжения на входе верхний транзистор закрыт, а нижний
открыт, и на выходе низкий потенциал «земли».
IC
+Uп
р-канальный
UЗИ
вкл
выкл
вход выход
+Uп IC
0 выкл n-канальный
вкл UЗИ
21
процессе закрывания, а другой – в процессе открывания, от шины питания к
земле в короткое время переключения протекает значительный импульс тока.
То есть увеличиваются средний потребляемый ток и потребляемая мощность.
Кроме того, такая схема обладает большим входным и малым выходным
сопротивлением.
Порог переключения. Для практического использования КМОП-элемен-
тов важно знать значение порога переключения. Обычно оно лежит в
пределах от 1,4 В до UП/2. Различные логические элементы могут иметь разные
пороги переключения. Прежде, чем использовать элемент, необходимо
убедиться, что его логические уровни и порог переключения соответствуют
уровням и порогам переключения других элементов.
Нужно обращать внимание на возможность использования элементов с
пониженным напряжением питания, которые имеют более низкие уровни
логической единицы (низковольтная логика). Необходимо, чтобы уровень
логической единицы (высокий уровень потенциала) всегда был выше порога
переключения.
Потребляемая мощность. Очень часто однокристальные
микропроцессорные средства имеют автономное питание: батареи или
конденсаторы большой ёмкости, обеспечивающие сохранение
работоспособности при кратковременных отключениях питания. При
планировании энергопотребления необходимо учитывать, что потребляемая
мощность зависит от режима функционирования. В зависимости от режима
работы, МП-устройство может при одном и том же ресурсе энергии
функционировать в течение нескольких часов или нескольких месяцев.
Имеются три значения мощности, потребляемой МП-компонентом в различных
рабочих условиях:
а) собственная мощность, необходимая для нормальной работы МП-
компонента. Эту мощность потребляет МП-компонент когда к нему не
подключены внешние устройства. Значение этой мощности зависит в основном
от тока, потребляемого при переключении КМОП-инверторов, который в свою
очередь зависит от скорости работы (частоты переключения). Так, для МК
PICMicro 16С73А увеличение тактовой частоты с 1 МГц до 4 МГц приводит к
увеличению тока питания с 550 мкА до 1,25 мА. Это означает, что программное
обеспечение должно быть компактным с целью увеличения срока службы
устройства без смены батарей.
Собственная мощность уменьшается при снижении напряжения питания.
В этом плане нужно выбирать тип МП-компонента и подключённых к нему
устройств. Многие ИС могут работать при снижении напряжения питания до
2 В и менее;
22
б) мощность, потребляемая устройствами ввода-вывода, которую
необходимо учитывать при наличии обмена данными с внешними
устройствами. Эта мощность определяет значение мощности, которое МП-
компонент должен затратить на управление работой внешней устройств. Она
определяется конкретным вариантом применения МП-компонента. Например,
если МК является единственным активным устройством и выдаёт управляющие
сигналы непрерывно, даже когда внешние устройства не требуют
обслуживания, то данное устройство будет потреблять больший ток, чем это
необходимо для нормальной работы;
в) мощность, потребляемая в «спящем» режиме, когда ожидается
наступление внешнего события, переключающего МП-компонент в рабочий
режим. В спящий режим МК входит после выполнения специальной команды.
При этом тактовый генератор останавливается до наступления некоторого
события, например, поступления сигнала от сторожевого таймера или
изменения состояния определённого входа.
Использование спящего режима может уменьшить потребляемую
мощность с уровня в несколько милливатт до микроватт. Спящий режим – это
виртуальный выключатель, реализованный внутри микропроцессорного
компонента. В этом режиме сохраняется содержимое памяти данных ОЗУ
(RAM).
Основной недостаток спящего режима – это относительно большое
время, необходимое для выхода из спящего режима и запуска тактового
генератора МП-компонента (десятки миллисекунд). Такая задержка
оказывается слишком большой при взаимодействии с другой компьютерной
системой. При работе в спящем режиме необходимо, чтобы ток нагрузки МП-
компонента был минимален: втекающий или вытекающий ток нагрузки
вызывает увеличение потребления мощности.
Напряжение питания. Однокристальные МП-компоненты работают в
широком диапазоне напряжений питания и в широком диапазоне внешних
условий. Различные источники питания могут иметь уровень напряжения ниже
номинального, что ведёт к изменению значений напряжений логических «0» и
«1». Кроме этого, напряжение питания может иметь пульсации. Поэтому при
проектировании соответствующих устройств необходимо оценивать
справочные характеристики, отражающие диапазоны изменений уровней
напряжения логических «0» и «1» и напряжения питания.
Для предохранения функционального узла на ОМК следует
развязывать питающее напряжение: у вывода питания подключается
конденсатор ёмкостью порядка 0,1 мкФ, что обеспечивает повышенный
23
выходной ток при переходных процессах. В итоге в функциональном узле
предотвращаются ложные сбросы и искажения данных.
Запуск устройства. Запуск устройства с ОМК должен происходить после
того, как установилось требуемое значение напряжения питания после его
включения. Поэтому в устройствах применяют простую схему сброса
(инициализации) ОМК при включении напряжения питания (рисунок 2.2).
UПИТ
R1–10 к
на вход «Сброс»
МП-элемента
ручной «Сброс» (актиный уро-
R2 вень – низкий)
100
C–0,1 мк
CLK0
CLK1
25
резонатору подключают резистор большого номинала (несколько мегаом), что
обуславливает устойчивую работу тактового генератора.
Недостаток данной схемы – это внешние компоненты и механическая
хрупкость кварцевого резонатора. В ряде случаев вместо кварцевого резонатора
применяют керамические компоненты – фильтр на основе пьезоэлементов или
на основе поверхностной акустической волны (ПАВ-фильтры). Такие элементы
более устойчивы к ударной механической нагрузке, часто имеют встроенные
конденсаторы, хотя таким генераторам присуща большая относительная
нестабильность частоты (примерно 0,1–0,5 %).
Другой способ задания частоты генерации – это использование RC-
компонентов (рисунок 2.4).
R
микроконтоллер
CLK0
C
CLK1
26
Программный счётчик. Программный счётчик (РС – Program Counter)
используется для указания следующей команды выполняемой программы. Это
счётчик с параллельным вводом и параллельным выводом. В процессорах с
принстонской архитектурой содержимое РС поступает по шине данных в схему
управления памятью, указывая адрес считываемой команды. Программные
счётчики часто входят в состав схемы управления памятью – это позволяет
избежать передачи адреса по внутренней шине данных.
Основные характерные особенности программного счётчика
следующие:
– параллельная загрузка нового содержимого с шины данных;
– возможность возврата к адресу первой команды программы
(возможность сброса);
– реализация счёта на увеличение (инкремента) для адресации следующей
команды.
Сигналы, обеспечивающие выполнение этих операций счётчиком,
формируются дешифратором команд, управляющим последовательностью
действий МП-компонента.
Параллельная загрузка используется для записи в программный счётчик
адреса перехода при выполнении команды безусловного перехода (jump) или
вызова подпрограммы (call). В компьютерах с принстонской архитектурой этот
адрес поступает по шине данных. Так как в 8-разрядных устройствах объём
доступной памяти программ составляет лишь 256 байт, то разрядность РС
больше, чем 8 бит. При загрузке в счётчик нового адреса, он поступает по шине
данных частями по 8 бит, что требует выполнения дополнительных машинных
циклов.
Чтобы сократить время загрузки программного счётчика, ряд
процессоров имеет команды ветвления branch, при которых загружается
только 8 младших разрядов адреса. Старшие разряды адреса остаются без
изменения. В этом случае по шине передаётся только один байт (для загрузки
полного 16-разрядного адреса понадобилось бы передавать два байта).
Начальное содержимое программного счётчика после запуска МП-
устройства может иметь любое значение. Часто используется значение
начального адреса 0000016 (адрес, выраженный шестнадцатиричным числом),
но ряд устройств начинает выполнение программы с других адресов.
Аналогичная ситуация возникает с адресами прерываний (векторами
прерываний) при выполнении программы по запросу на прерывание основной
программы. Обслуживание прерывания начинается с адреса (вектора
27
прерывания), отличного от адреса, загружаемого при начальном запуске
устройства. Но для реализации прерывания или запуска устройства
используются обычно одни и те же аппаратные средства.
Если выполняется вызов подпрограммы или обрабатывается прерывание,
то адрес возврата (следующей команды) может быть сохранён в стеке без
выполнения дополнительных тактов для инкремента содержимого
программного счётчика.
В устройствах с принстонской архитектурой необходимо следить, чтобы
РС не вышел за пределы памяти программ (иначе начнётся выборка данных
вместо команд и попытка выполнить выбранные коды данных, что ведёт к
непредсказуемому результату). Также, если программный счётчик достигнет
конца адресуемой памяти, то некоторые устройства осуществляют циклический
переход к команде, размещённой по адресу 0000016. В других устройствах
дешифратор команд продолжает наращивать программный счётчик, что
приводит к выполнению неопределённых команд.
Арифметико-логическое устройство. АЛУ процессора используется для
выполнения всех математических операций в программе (сложение, вычитание,
логическое И, логическое ИЛИ, сдвиг содержимого регистров и установку
содержимого регистра состояния в соответствии с полученными результатами.
АЛУ не используется при чтении или записи данных или команд – оно служит
только для обработки данных. АЛУ можно представить как аппаратный блок,
который обрабатывает два слова данных (операнды) и сохраняет полученный
результат (рисунок 2.5).
операнд 1 операнд 2
Биты состояния
АЛУ (флаги)
результат
максимально
|MAX – B| MAX – A возможное при
данном числе
разрядов (MAX)
отрицательные –В 0
А положительные
дополнение
числа –В после
взятия его по А + (дополне-
не учитывается ние числа –В
модулю из-за перепол- после взятия его
нения разрядной по модулю)
сетки
результат вычи-
тания: А – В
29
Рис. 2.6. Замена вычитания сложением
32
используется специально выделенный фрагмент памяти. Переменные,
определённые внутри функции, обычно называют локальными или
автоматическими, так как они используются только данной функцией, и память
для их размещения выделяется автоматически.
б. За счёт использования индексного регистра для эмуляции стека.
Аналогичный метод вызова функций используется в процессорах, не имеющих
стека. Адрес возврата можно сохранить в эмулированном счётчике.
в. Для передачи параметров, их можно сохранить в регистрах процессора
или в памяти данных в качестве специальных переменных. Но передача
параметров через регистры процессора сокращает число регистров, доступных
для выполнения функции, а сохранение параметров в виде специальных
переменных также уменьшает объём памяти, доступной для использования
программой.
Возврат параметров выполняется любым из описанных выше способов.
Но обычно значения возвращаемых параметров загружаются в регистры
процессора. Это наиболее быстрый и эффективный метод передачи данных.
Прерывания. Обработчики запросов на прерывания у
микроконтроллерных устройств проще, чем у персонального компьютера. По
запросу на прерывание основной программы, основная программа
останавливается и запускается специальная подпрограмма («обработчик
прерывания», «программа обслуживания прерывания»). Запуск программы
вызывается сигналом аппаратуры. Так как основная программа может отказать
в подтверждении прерывания и в выполнении программы обслуживания
прерывания, то в этом плане существует термин запрос на прерывание
(interrupt request). Действия при выполнении прерывания показаны на рисунке
2.7.
33
Сбросить контроллер
Обработать
Восстановить
прерывание Программа
Сохранить
Возврат
обслужива-
регистры
регистры
прерываний
ния преры-
вания
34
Обработчик прерываний выполняет нижеследующую последовательность
действий (рисунок 2.7).
1. Сохранить содержимое регистров контекста – регистров,
определяющих текущее состояние выполнения основной программы. Обычно
это состояние программного счётчика, регистры состояния и аккумулятор.
Также сохраняется содержимое индексного регистра процессора, так как он
может быть использован для обработки запроса на прерывание.
2. Сбросить контроллер прерываний и устройства, вызвавшее запрос.
После сброса контроллер прерываний готов воспринимать следующий запрос.
Если поступит новый запрос прерывания, то регистр маскирования прерываний
процессора предотвратит обработку запроса. Но регистр состояния прерываний
зафиксирует этот запрос, который будет ожидать своего обслуживания. После
завершения обработки текущего прерывания маска прерываний будет
сброшена и вновь поступивший запрос поступает на обработку.
Вложенные прерывания сложны для обработки рядом однокристальных
МП-устройств, которые не имеют стека. В устройствах со стеком они также
могут вызвать переполнение стека – у однокристальных МП-устройств
зачастую ограничен объём их памяти данных и стека.
3. Обработать данные. В микроконтроллерах обычно принимают и
сохраняют данные, и далее их используют после окончания текущей задачи.
Такой способ обслуживания запроса является компромиссом между
немедленной полной обработкой данных по запросу на прерывание, которая
может потребовать много времени, и игнорированием прерывания, что может
привести к потере информации о событии, вызвавшем запрос.
Адрес, который загружается в программный счётчик при переходе к
программе обслуживания прерывания, называется вектор прерывания. Для
различных прерываний могут быть заданы различные вектора, что избавляет
программу обслуживания от необходимости определять причину прерывания.
Использование различными прерываниями одного вектора обычно не вызывает
проблем при работе микроконтроллеров, так как чаще всего микроконтроллер
исполняет одну единственную программу. Этим МК отличается от
персонального компьютера, у которого в ходе эксплуатации могут добавляться
различные источники прерываний.
В микроконтроллере, где аппаратная часть хорошо известна, не должно
возникать проблем при совместном использовании векторов прерываний.
4. Восстановить содержимое регистров контекста. Вместе с выполнением
команды возврата из прерывания это событие переводит процессор в
состояние, в котором он находился до выполнения прерывания. Так как
содержимое регистра состояния и программного счётчика обычно
35
автоматически сохраняется, это избавляет от сохранения этих данных в памяти
программными средствами с помощью команд пересылки. А затем и от
восстановления при возврате к исходной программе.
Но такое автоматическое сохранение реализуется не во всех МП-уст-
ройствах. Если содержимое регистра состояния сохраняется перед
выполнением программы по обслуживанию прерывания, то по команде
возврата производится автоматическое восстановление регистра состояния.
Если содержимое других регистров процессора изменяется при
обслуживании прерывания, то оно должно быть также сохранено в памяти до
изменения, и затем восстановлено перед возвратом в основную программу.
Обычно принято сохранять все регистры процессора, чтобы избежать
непредсказуемых ошибок, которые трудно локализовать.
5. Вернуться к прерванной основной программе.
Выше описаны так называемые аппаратные прерывания, когда запрос
формируется аппаратной частью по какому-либо событию. Ещё существуют
программные прерывания: некоторые процессорные команды используются
для имитации программных прерываний. Обычно это вызов системных
подпрограмм, которые располагаются в произвольном месте памяти или
требуют
при обращении к ним межсегментных переходов (один сегмент равен
216 = 64 Кбайт; область памяти 232 = 4 Гбайт). Эта возможность реализована в
МП ф. Intel i86 и используется в базовой системе ввода-вывода BIOS и
операционной системе (ОС) DOS для ПЭВМ для вызова системных
подпрограмм без необходимости фиксирования точки входа.
Вместо этого используются различные вектора прерываний, выбирающие
команду для выполнения при таком программном прерывании.
Таймеры. Обычно таймеры используются для обеспечения заданной
временной задержки. Для переключения таймера используются тактовые
импульсы процессора. Загрузив в таймер начальное значение, можно отсчитать
требуемые интервалы времени, фиксируя окончание интервала по моменту
переполнения таймера. Если перед таймером включить предварительный
делитель частоты (ПДЧ), это позволит отсчитывать более длинные интервалы
времени.
Если коэффициент предварительного делителя частоты (который обычно
двоичный) равен степени двойки (2, 4, 8, 16, ...), то это может не позволить
точно отсчитать требуемый временной интервал. Точное значение можно
отсчитать путём добавления команд NOP (no operation – задание холостых
тактов процессора) или других команд, используемых для заполнения
определённых промежутков времени. Для отсчёта заданного времени таймер
36
можно очистить, а затем непрерывно сравнивать его содержимое с требуемым
значением.
Другой способ получения точного отсчёта временного интервала
таймером – это загрузить в таймер число, равное разности между его ёмкостью
и числом, требуемым для точного отсчёта. Затем ждать, когда флаг прерывания
по переполнению таймера установится в единицу.
Для задач, связанных с созданием часов реального времени, такой способ
(предварительный делитель частоты и далее таймер) использовать нельзя, так
как в момент перезагрузки таймера степень заполнения ПДЧ неизвестна и при
отсчёте времени будут возникать ошибки.
Для часов реального времени рекомендуется непрерывная работа
таймера, когда делитель частоты никогда не сбрасывается, а при переполнении
таймера – увеличивать содержимое счётчика часов реального времени. Когда
требуется узнать текущее время, программа выбирает и преобразует
содержимое этого счётчика и получает правильное значение времени. (Такой
способ используется в ПЭВМ ф. IBM, где переключение («тик») таймера
происходит 18,2 раза в секунду).
Кроме отсчёта времени, в МП-устройствах таймеры выполняют и другие
задачи. Так, если в качестве тактирующего сигнала использовать сигнал от
внешнего устройства, то можно вести подсчёт числа внешних событий.
Если микроконтроллер имеет 2 таймера, то можно реализовать подсчёт
числа событий, происходящих за единицу времени (тахометр). Программа
сбрасывает в ноль таймер подсчёта числа событий (второй таймер), затем
устанавливает определённый временной интервал для срабатывания таймера,
задающего интервал времени для подсчёта событий (первый таймер) (рису-
нок 2.8).
переполнение
37
По истечении этого интервала времени первый таймер устанавливает в
единицу бит переполнения, по которому процессор считывает содержимое
второго таймера.
Часто таймеры в МК используются для ввода-вывода сигналов с
широтно-импульсной модуляцией (ШИМ) (PWM – Pulse Width Modulated).
Сигнал имеет вид периодической последовательности импульсов с
повторяющейся формой, где длительность импульса пропорциональна
значению некоторой аналоговой величины. Такой сигнал часто используется
для управления скоростью вращения электродвигателя или положением вала в
сервоприводе (следящей системе).
На рисунке 2.9 показана схема формирования сигнала с ШИМ с помощью
МК. Пока заданное значение длительности импульса больше, чем содержимое
таймера, на выходе поддерживается высокий потенциал (вершина импульса).
Когда содержимое таймера станет равным или больше, чем заданное
значение периода следования импульсов, то таймер принудительно
сбрасывается в ноль, и далее процесс повторяется.
Этот способ формирования ШИМ-сигнала требует минимального участия
процессора. Длительность импульса может быть изменена процессором в
любое время. Такая схема может формировать последовательность импульсов
со скважностью два, для чего можно задать период в два раза большим
длительности импульса.
период сле-
дования им-
пульсов (В)
А<В
заданная дли- (выход ШИМ-
тельность им- Компаратор ко- сигнала)
пульса (А) дов
тактовый Таймер
сигнал А>В
«Сброс»
38
импульс имеет низкий уровень напряжения. Когда измеряемый импульс имеет
высокий уровень напряжения, открывается логический ключ на схеме И и
тактовый сигнал тактирует таймер.
тактирующие
импульсы
И
39
Так как современные КМОП микропроцессорные средства потребляют
очень малую мощность от источника питания (потребляемый ток единицы –
доли миллиампера), то сдвиг напряжения можно осуществить простым
включением в цепь питания диодов. Падение напряжения на кремниевом диоде
составляет 0,7 В, а на германиевом – 0,3 В.
Выводы
Основой однокристальных МП-устройств является КМОП-схемотехни-
ческий базис. Высокая степень интеграции компонентов на полупроводниковом
кристалле позволила создать малогабаритные эффективные микроЭВМ
(микроконтроллеры). Свойства логического КМОП-ключа обеспечили работу в
широком диапазоне напряжений питания, обычно 1,2–5 В при очень малом
потреблении тока от источника питания (в зависимости от режима работы –
от единиц микроампер до десятков миллиампер). Но увеличения тактовой
частоты и избыточная сложность программ ведут к увеличению потребляемой
мощности.
Однокристальные МП-устройства в основном повторяют функиональное
содержание типового процессора ЭВМ, но с учётом ограничений на площадь
кристалла и потребляемую мощность.
Контроллерная направленность в эксплуатации в различных технических
задачах привела к тому, что ОмК стали обеспечивать выполнение
дополнительных специфических функций, поддерживающих процесс
управления в АСУ технологическими процессами.
40
UПИТ2 = UПИТ КМОП – U*
Устройство с Устройство с
ИС ЭСЛ ИС КМОП
выход
R
1–10 кОм
вход
UПИТ1 = 0 – U* сигнал
КМОП
уровень
переключения
КМОП
сигнал ЭСЛ
сигнал и порог
смещённого КМОП-
приёмника
Переключение смещённого КМОП-приёмника сигналом с
меньшим размахом «0–1» происходит за счёт того, что его
входной транзистор находится в состоянии активного
линейного усиления.
41
Контрольные вопросы
1. Опишите, что включает в себя термин «однокристальный
микроконтроллер».
2. Опишите основные свойства комплементарного логического ключа,
являющегося основой схемотехнического базиса ОмК.
3. Приведите способы инициализации интегральной схемы
микроконтроллера.
4. Расскажите о способах формирования частоты тактового сигнала ОмК
и присущих им свойствах.
5. Опишите назначение программного счётчика.
6. Дайте описание выполнения арифметических операций в АЛУ.
7. Расскажите об обработке запроса на прерывание и реализации
программы по запросу.
42
3. ОСОБЕННОСТИ ОБМЕНА ДАННЫМИ
В разделе рассмотрен способ обмена данными у однокристальных
МП-устройств. Рассмотрена организация как обмена данными межу
отдельными МП-устройствами, так и организация сети однокристальных
микроконтроллеров.
Ключевые слова: порты ввода-вывода, триггер данных, триггер
управления, бит чётности, последовательный обмен, протокол обмена данными,
микроконтроллерная сеть, ведущий, ведомый, формат команды, арбитраж
запросов.
Основной интерфейс между однокристальным МП-устройством и
внешними устройствами реализуется через параллельные порты ввода-вывода
[5]. Во многих микроконтроллерах выводы этих портов служат также для
выполнения других функций – последовательного или аналогового ввода-
вывода.
В большинстве МК отдельные выводы портов могут быть
запрограммированы на ввод или вывод данных. Типичная схема подключения
внешнего вывода показана на рисунке 3.1.
Шина данных
внешний
D Триггер Q вывод
И С данных
Шина адреса Дешиф-
ратор управление
адреса выводом
D Триггер Q
И С управ-
ления
WR
И
RD
разрешение
ввода данных
Рис. 3.1. Подключение внешнего вывода в МК
43
Внешний вывод в режиме ввода работает как выход с открытым
коллектором (то есть другие схемы обеспечивают ему нагрузку, подключённую
к шине питания). Внешний вывод переходит в режим вывода информации
только для выдачи «0»: ноль сначала записывается в триггер данных, а затем с
помощью триггера управления на внешнем выводе устанавливается низкий
уровень напряжения.
В современных МК обеспечивается индивидуальный доступ к триггеру
данных и триггеру управления с помощью адресной шины. Также имеются МК,
у которых внешние выводы объединены в группы по 4 или 8 разрядов, которые
программируются на совместную работу в качестве входов или выходов.
Внешний вывод также может быть использован для подачи запроса на
прерывание – в этом случае внешний вывод работает в режиме ввода
информации.
Кроме указанной схемы используются варианты подключения внешнего
вывода по схеме с открытым стоком (рисунок 3.2). Состояние внешнего
вывода будет соответствовать состоянию подключённой к нему линии шины до
тех пор, пока внешний вывод не будет переключён на работу в режиме вывода
информации и установлен в состояние «0».
внешний
управление вывод
Шина данных выводом
D Триггер Q И
И С данных
Шина адреса Дешиф-
ратор
адреса
D Триггер Q
И С управ-
ления
WR
И
RD
разрешение
ввода данных
44
В этом случае внешний вывод соединён с землёй через МОП-транзистор,
который управляется схемой И, подключённой к выходам триггеров
управления и данных.
Такое подключение внешнего вывода позволяет создавать шины, в
которых линии объединяют выходы устройств по схеме «монтажное И»:
одноименные линии шины подключаются к напряжению питания через
резистор. Если все МОП-транзисторы (или ключи) закрыты, то на линии
высокий уровень напряжения (логическая «1»). Если же хотя бы один ключ
открыт, то на линии будет низкий потенциал (логический «0»).
Распространённый вид связи между различными системами – это
последовательный обмен: байт данных передаётся по одному проводу бит за
битом с обеспечением синхронизации между приёмником и источником
данных. Существует очень много протоколов последовательной передачи
данных, которые применяются в МП-средствах. Иногда эти протоколы
реализуются схемами, расположенными на полупроводниковом кристалле МП-
средства, что упрощает разработку различных приложений. Наиболее
распространённый вид последовательного ввода-вывода данных – это
асинхронный последовательный
обмен.
В этой форме связи байт данных пересылается как пакет, включающий
информацию о начале и конце передачи данных, а также информацию для
контроля ошибок. Первым передаётся старт-бит, указывающий на начало
передачи данных, т. е. на начало пакета. Этот бит используется приёмником для
синхронизации процесса чтения данных, которые следуют за старт-битом:
младший бит данных идёт первым.
После битов данных может следовать бит чётности (контрольный бит),
который используется для проверки правильности полученных данных. Есть
два типа проверки на чётность: проверка на нечётность (odd – нечётный)
означает, что число единиц в пакете данных, включая бит чётности, должно
быть нечётным. Например, 05516 будет иметь бит чётности равным «1», чтобы
сделать число единичных битов равным пяти, то есть – нечётным. Проверка на
чётность (even – чётный) означает, что число единичных битов должно быть
чётным: например, при передаче числа 05516 бит чётности будет равен «0».
Ряд микроконтроллеров требует определять программно значение бита
чётности и затем помещать его в регистр. Простым образом алгоритм этой
процедуры реализуется в выполнении логической операции «Исключающее
ИЛИ» (ХОR) над всеми битами передаваемого байта. Для микроконтроллера
45
8051 такая процедура выполняется с помощью нижеследующей программы для
байтовой переменной Char.
mov Count, 8 ; Записать в переменную Count число 8 для обработки
8 бит
mov А, 0 ; Записать в регистр А процессора число 0 для его очистки
P_Loop ; Метка в программе, куда выполняется возврат после
обработки каждого бита
xrl A, Char ; Операция XOR над младшими битами операндов:
регистра А и переменной Char
rrc A ; Сдвинуть циклически вправо на 1 бит регистр А, чтобы
перейти к следующему биту
djnz Count, P_Loop ; Уменьшить Count на единицу и, если результат не
равен нулю, то перейти к метке P_Loop (т. е., повторить
8 раз)
Младший бит регистра А будет содержать бит чётности (Even) для
операнда Char. Количество единичных битов вместе с битом чётности будет
чётным числом. Чтобы реализовать проверку на нечётность, необходимо
инвертировать младший бит в регистре А.
За битом чётности следует стоп-бит, который используется приёмником
для обработки конца передачи пакета.
Некоторые параметры должны быть известны при реализации обмена:
один из них – передаваемое число бит данных, которое определяется типом
приёмного и передающего устройств. Например, в телетайпах использовалось 5
бит данных, а также могут использоваться пакеты длиной до 8 бит.
Наряду с битами чётности или нечётности возможны другие варианты
контрольных битов:
– no – означает отсутствие бита чётности в пакете;
– mark – означает, что вместо бита чётности всегда передаётся 1;
– space – означает, что вместо бита чётности всегда передаётся 0.
Такие варианты контрольных битов используются редко – когда
необходимо дать приёмнику дополнительное время на обработку пакета.
Количество стоп-битов также может быть различным. Второй стоп-бит
может вводиться для той же цели, что и контрольные биты mark и space:
приёмнику даётся больше времени для обработки принятого пакета.
Основная масса современных МП-устройств использует для
асинхронного обмена формат данных 8-N-1: это передача 8 бит данных,
отсутствие бита чётности и наличие одного стоп-бита. Этого оказывается
46
достаточным для обеспечения связи между устройствами на современной
элементной базе.
Наиболее известный протокол асинхронной последовательной связи –
это протокол RS-232, являющийся международным стандартом. Здесь
асинхронный приёмник ждёт прихода старт-бита, когда на лини
устанавливается низкий уровень напряжения. Через половину времени
передачи одного бита (длительность этого интервала времени задаётся
синхросигналом) линия опрашивается. Если на линии всё ещё удерживается
низкий уровень сигнала, то приёмник ждёт ещё один период и считывает
данные (рисунок 3.3).
бит чётности
передавае-
стоп-бит
мые данные
бит 0
бит 2
бит 1
бит 3
бит 4
старт-бит
Т
Т/2
синхросигнал t
момент первого
опроса линии на
наличие на ней
«0» момент второго момент считы-
опроса линии на вания бита дан-
наличие на ней ных
«0»
47
передавае-
импульс
мые данные
стоп-
старт-бит
«1» «0»
t
биты данных
DD1, DD2
1533ИР37
МИКРО- О О
D0 0 D0 0
КОНТРОЛЛЕР D1 1 1
RG D1 RG
D2 2 D2 2
D3 1 1 D3
Данные 3 3
1 2 2
D4 4 D4 4
2 3 3
D5 5 D5 5
3 4 4 D6
D6 6 6
4 5 5
D7 7 D7 7
Тактовый
сигнал С С
Разрешение
считывания Е0 Е0
48
Рис. 3.5. Преобразование последовательных данных в параллельный вид
49
СS (разрешение вы-
борки кристалла)
100 нс
тактовые им- t
пульсы
DI (вход дан-
ных)
DО (выход
данных)
OP1
OP2
SB (старт-бит)
A5
A2
A1
A0
A4
A3
D15
D0
Рис. 3.6. Чтение данных в протоколе Microwire
После выбора ИС следует передача:
– старт-бита SB;
– 8-разрядной команды (ОР1, ОР2, А5, А4, А3, А2, А1, А0);
– 16-разрядный адрес (не является обязательным);
– 16 бит данных.
Для максимальной скорости 1 Мбит/с период тактового сигнала равен
500 нс (частота следования импульсов равна 1 МГц, а скважность 2).
Передаваемые биты должны выдаваться на линию за 100 нс до переднего
фронта тактового импульса. Чтение данных должно происходить за 100 нс до
наступления заднего фронта тактового импульса.
Протокол SPI. Этот протокол похож на протокол Microwire, но имеет
ряд отличий:
а) SPI способен передавать данные со скоростью до 3 Мбит/с;
б) разрядность данных в SPI пакете равна 8 бит;
в) передатчик в SPI имеет возможность приостановить передачу данных;
д) данные в SPI могут передаваться в виде множества байтов, которые
называются «блок» или «страница».
Как и в предыдущем протоколе, в SPI сначала передаётся байт, который
содержит команду для принимающего устройства. Затем идёт необязательный
16-разрядный адрес, после чего следуют 8-разрядные данные.
В протоколе SPI используется симметричный тактовый сигнал
(скважность импульсной последовательности равна 2), рисунок 3.7.
50
CS (разрешение вы-
борки кристалла) 30 нс
тактовые им- t
пульсы
DI (вход дан-
ных)
DО (выход
данных)
SB (старт-бит)
15
14
13
12
11
10
17
16
D7
D0
команда
51
Применительно к микроконтроллерам, термин «сеть» означает набор
проводов (шины), которые используются для подключения дополнительных
устройств или для связи с другими микроконтроллерами. То есть сеть МК
отличается от локальной сети, например, такой, как EtherNet. Далее под
микроконтроллерной сетью будем понимать отдельную линию связи (провод)
и множество подключённых к ней устройств, которые могут и инициировать
передачу сообщений, и посылать соответствующий отклик на полученное
сообщение – то есть могут выступать в роли передатчика или приёмника.
В таких сетях имеется интеллектуальное устройство, которое может
инициировать передачу данных – носит название ведущий (master).
Устройства, которые только отвечают на запросы, но не могут их
инициировать, называются «ведомые» (slaves). Микроконтроллерная сеть
может иметь несколько ведущих устройств, и в этом случае сетевой протокол
требует введения схемы арбитража, которая позволит различным ведущим
устройствам передавать данные, не нарушая передачу других сообщений.
Обычно в микроконтроллерной сети передаётся небольшой объём данных
в отличие от локальных сетей ЭВМ, и их пропускная способность довольно
мала. Типовая оценка скорости – это несколько байт в секунду.
Ниже приведены наиболее часто используемые виды
микроконтроллерных сетей и основы используемых в них протоколов, что
позволяет оценить их пригодность для конкретного применения.
Наиболее популярный протокол для сети микроконтроллеров – это I2C,
который предназначен для связи устройств в многопроцессорных системах.
Стандарт разработан компанией Philips в конце 70-х годов как метод
реализации интерфейса между микропроцессорами и периферийными
устройствами, и он не требует прокладки многочисленных линий для передачи
между устройствами всех разрядов адреса, данных и сигналов управления.
Кроме того, данный протокол позволяет разделять сетевые ресурсы между
несколькими ведущими процессорами (multimastering).
Шина I2С содержит две линии: линия SDA для передачи данных и линия
SCL для передачи синхросигнала, который используется для стробирования
данных. Обе линии подключены через резисторы к шине питания, за счёт чего
на них держится высокий уровень напряжения до тех пор, пока на линию не
выставляется «0» с низким уровнем напряжения. Это позволяет нескольким
устройствам управлять их состоянием путём соединения по схеме монтажное
И. Пример организации шины I2C показан на рисунке 3.9.
52
+UПИТ
53
Scl
(синхросигнал)
SDA
(данные) Ждущий
режим
Передаваемые
Конец передачи
Начало передачи (стар-
Ждущий
товое состояние)
режим
биты
Рис. 3.10. Форма сигналов на шине I2C
54
4,0 мкс 4,7 мкс 4,0 мкс 4,0 мкс
Быстрый режим 0,6 мкс 1,3 мкс 0,6 мкс 0,6 мкс
Scl
(синхросигнал)
SDA
(данные) Ждущий
режим
Ждущий
режим
ваемые
Переда-
передачи
состояние)
(стартовое
Начало пе-
биты
Конец
редачи
Начало Принимаемые
Адрес при- Конец
передачи R/W Ack или передавае- Ack
ёмника передачи
мые данные
56
сообщения от других ведущих устройств, работающих со слишком большой
скоростью, которая не обеспечивается при программной реализации.
Выводы
Обмен данными между однокристальными МП-устройствами ведётся при
малом объёме и, следовательно, при малых скоростях. Поэтому
микроконтроллерные сети имеют упрощённую организацию магистрали и
используют для асинхронного и синхронного обмена данными как протоколы
широкого назначения (RS-232, манчестерский код Microwire, SPI), так и
специальные протоколы для микроконтроллерных сетей типа I2С.
Формат команды, передаваемой ведущим устройством ведомому,
позволяет адресовать конкретное устройство и задать вид квитированного
обмена. Формат включает и распределение адресов между устройствами,
подключёнными к шине.
Кроме указанного, алгоритм работы протоколов позволяет провести
арбитраж запросов на захват шины для передачи данных, что предотвращает
возникновение коллизий.
Контрольные вопросы
1. Опишите, за счёт чего выводы микроконтроллера могут быть
запрограммированы на ввод или вывод данных.
2. В цепи контакта микроконтроллера для ввода-вывода есть триггер
данных. Опишите процесс считывания информации с внешней линии данных
через указанный контакт.
3. Поясните понятие «внешний вывод микроконтроллера является
«выходом с открытым коллектором». Какую функцию (и возможность)
позволяет реализовать этот вывод?
4. Опишите работу внешнего вывода микроконтроллера, выполненного
по схеме «с общим стоком», на вывод и приём данных.
5. Расскажите об асинхронном последовательном обмене между систе-
мами.
57
6. Расскажите о проверке правильности полученных данных при обмене
между системами.
7. Опишите два типа проверки на чётность: «odd» и «even».
Список рекомендуемой литературы
1. Воробьёв Н.В. Микропроцессоры. Элементная база и схемотехника
средств сопряжения: учеб. пособие для втузов / Н.В. Воробьёв, В.Д. Вернер;
под ред. Л.Н. Преснухина. – М.: Высш. шк., 1984. – 103 с.
2. Шевкопляс Б.В. Микропроцессорные структуры. Инженерные решения /
Б.В. Шевкопляс. – М.: Радио и связь, 1990. – 512 с.
3. Жан М. Рабаи, Ананта Чандракасан, Боривож Николич. Цифровые
интегральные схемы. Методология проектирования / М. Рабаи Жан,
Чандракасан Ананта, Николич Боривож. – Digital Integrated Circuits. – 2-е изд. –
М.: Вильямс, 2007.
58
4. ПРОТОКОЛЫ ДЛЯ МИКРОКОНТРОЛЛЕРНЫХ СЕТЕЙ
В разделе показаны основы протокола CAN, отражена реализация
ввода-вывода аналоговых сигналов, а также методика организации
ведомых однокристальных МП-устройств. Отражены однокристальные
МП-устройства с программируемой памятью.
Ключевые слова: протокол CAN, кадр, доминантное значение,
рецессивное значение, способ ввода, АЦП, программируемая память, ведомый,
внутрисистемное программирование, бит защиты, схемный эмулятор,
программы-мониторы.
Протокол CAN (Controller Area NetWork) разработан компанией Bosch
как сетевое решение для связи компьютерных систем в автомобилях. Его
аналог – появившийся позже протокол американского стандарта J1850.
Протокол CAN удовлетворяет требованиям: скорость обмена до 1 Мбит/с;
нечувствительность к электромагнитным помехам; малое число контактов в
разъёмах; простое подключение и удаление устройств.
Протоколы обеих стандартов совпадают и основываются на первых двух
уровнях семиуровневой модели открытых систем OSI, но на электрическом
уровне эти стандарты не совместимы. Передача данных в электрическом плане
реализуется с помощью драйверов, соответствующих стандарту RS-485,
который обуславливает выдачу на линию связи дифференциального сигнала
(напряжения). Такая сеть будет работать, даже если один из двух проводников
дифференциальной линии связи (пары) закорочен или оборван. Это особенно
важно для обеспечения надёжности работы оборудования.
Протокол CAN реализуется с использованием схемы «монтажное И»,
которая используется и в шине I2C. Это позволяет выполнять арбитраж между
различными ведущими устройствами: когда выходной драйвер ведущего
устройства активен, шина переводится в низкий уровень напряжения
аналогично шине I2C. Пример реализации арбитража в протоколе CAN показан
на рисунке 4.1.
На рисунке, когда сигнал на выходе драйвера устройства не совпадает с
уровнем напряжения, установленном на линии передачи данных (например,
при выдаче напряжения логической «1» на шине оказывается напряжение
логического «0»), то драйвер останавливает передачу данных до тех пор, пока
не завершится передача текущего сообщения. Такой способ арбитража
исключает необходимость повторной посылки сообщения при возникновении
коллизии на шине.
Каждое сообщение представляет собой отдельный кадр в потоке
пересылаемых данных. Кадр передаётся как фрагмент этого асинхронного
59
последовательного потока, в котором пересылка данных не сопровождается
посылкой синхросигнала. При этом приёмник и передатчик должны работать
на одной тактовой частоте: обычно скорость обмена устанавливается в
диапазоне от
200 Кбит/с до 1 Мбит/с. Формат кадра передачи данных показан на рисунке 4.2.
состояние
ожидания
выходной
драйвер 1
выходной t несовпаде-
ние для
драйвер 2
драйвера 2
выходной несовпаде-
драйвер 3 ние для
драйвера 3
шина бит 2
бит 0
бит 1
бит 4
старт-бит
бит 3
r1/r0 EOF
Рис. 4.2. Кадр передачи данных по шине CAN с использованием 11-битного идентификатора
C дозаряд до
порога пере-
порог пе-
ключения
Микро- реключе-
контрол- ния
лер потен-
R циометр
1–10 кОм
t
Рис. 4.3. Измерение сопротивления на входе МК
62
напряжение формируется внутри МК, там же делится резистивным делителем,
и требуемое значение напряжения выбирается встроенным аналоговым
мультиплексором. Управление перебором значений опорных напряжений в МК
выполняется по простым алгоритмам (например, наращивание выходного
состояния счётчика).
Выбираемое в очередном шаге перебора опорное напряжение подаётся на
опорный вход компаратора. То значение напряжения, при котором происходит
переключение выхода компаратора, соответствует значению поступающего
входного напряжения. Точность такого АЦП в МК мала, так как опорное
напряжение в них формируется с достаточно большим шагом. Например, при
3-разрядном управляющем коде, воздействующем на аналоговый
мультиплексор, имеется восемь опорных напряжений (при максимальном
входном напряжении 5 В эти опорные напряжения равны 0,7; 1,4; 2,1; 2,8; 3,5;
4,2; 4,9 и 5,6 В).
Разновидностью АЦП с применением компараторов является
параллельный метод преобразования, в котором имеется многозначная мера –
источник опорного напряжения (ИОН) с дискретом по выходному напряжению.
На каждый вход ИОН подключён вход опорного напряжения отдельного
компаратора. Другие входы всех компараторов объединены вместе и на них
поступает входной сигнал. Все выходы компараторов подключены к входам
приоритетного шифратора, на выходе которого представляется результат
преобразования в требуемом коде.
Эта разновидность АЦП самая быстродействующая по сравнению с
другими преобразователями (время преобразования определяется только
задержкой компараторов и приоритетного шифратора), но и обладает
максимальной аппаратной избыточностью и стоимостью. Например, при
выходном коде в 8 разрядов требуется 28 = 256 компараторов и т. д.
в. Третий способ аналого-цифрового преобразования – это
интегрирующий однотактный времяимпульсный АЦП (с линейной
развёрткой). В качестве опорного напряжения здесь используется сигнал
генератора линейно-изменяющегося сигнала (ГЛИН), нарастающего от нуля до
UПИТ, и компаратор.
В начале преобразования таймер сбрасывается, а затем с запуском
таймера нарастает сигнал ГЛИН. Когда напряжение ГЛИН превысит
напряжение на входе АЦП, таймер останавливается и вырабатывается сигнал
«конец преобразования» (ADC stop), который может вызвать прерывание МК.
Содержимое таймера пропорционально значению входного напряжения. Часто
ИС МК имеют возможность дать команду на выполнение преобразования,
установив соответствующее значение бита «Старт АЦП» в регистре
63
управления, а после выполнения преобразования в этом регистре
устанавливается соответствующее значение бита «Стоп АЦП».
Это высокоточный метод, но он требует относительно большого времени
на преобразование. Некоторые МК имеют встроенные ГЛИН, причём
обеспечивающие разную скорость сигнала ГЛИН при различных значениях
входного напряжения. Но при больших скоростях уменьшается точность
преобразования. Кроме того, входное напряжение может изменяться за время
преобразования. Для устранения от такой динамической погрешности на входе
применяют УВХ: его запоминающий конденсатор быстро заряжается до
значения входного напряжения, отключается от него, а запомненное значение
подвергается преобразованию.
Для обработки высокочастотных сигналов целесообразно использовать
внешний параллельный АЦП совместно с цифровым процессором сигналов
(DSP).
64
повторителем напряжения установлен многодиапазонный резистивный
делитель напряжения, к промежуточным узлам которого подключены выходы
МК (рисунок 4.4).
Значение напряжения, поступающего на вход повторителя, зависит от
того, на каких выходах МК установлен низкий уровень напряжения
(логический «0»).
+UПИТ
МИКРО-
КОНТРОЛЛЕР
аналоговый
+ выход
Выходы
–
Ведущий Ведомый
процессор Дешифратор микрокон-
Адрес троллер
адреса
RD CS
WR RD
WR
D0–D7 D0–D7
66
Однако этот процесс требует значительного расхода энергии, который
выражается в необходимости приложения относительно большого напряжения
(30 В) и длительности импульса стирания более десятка микросекунд.
Программирование устройства занимает время от нескольких секунд до
нескольких минут, в зависимости от объёма данных и алгоритма
программирования.
Лучшие характеристики имеет EEPROM, впервые разработанная фирмой
Intel в 1989 году и получившая название Flash EEPROM (или Flash Memory) –
флэш-память. Основные преимущества по сравнению с EEPROM – достаточно
высокое быстродействие, малая длительность процесса стирания информации.
Микросхемы современной флэш-памяти имеют время доступа при чтении не
более 35 нс.
Поэтому существуют устройства, которые не требуют оборудования для
программирования. Они имеют встроенный аппаратно-программный блок,
заменяющий внешнее оборудование для программирования (кроме источника
повышенного напряжения, требуемого для программирования).
Кроме этого, существуют МК, которые допускают его программирование
после установки его же в некоторую систему (внутрисистемное
программирование – ISP). То есть, такой МК может быть смонтирован на
плату с пустой памятью программ, которая затем может быть
запрограммирована без влияния на остальные компоненты схемы.
Использование ISP-микроконтроллеров избавляет от необходимости в
специальном программаторе, а это, в свою очередь, даёт возможность
обновлять программное обеспечение без изменения расположенных на плате
аппаратных средств. В производстве так создаётся запас готовых изделий,
которые могут легко модифицироваться в соответствии с новыми
требованиями к ним.
МК могут содержать специальные средства для защиты своего
программного кода. Эти средства предотвращают считывание хранящихся в
них программ. Часто такая возможность реализуется путём установки
определённого значения конфигурационного бита в процессе
программирования. Обычно значение этого бита может быть изменено только в
процессе программирования содержимого памяти МК, например, при
ультрафиолетовом стирании содержимого EPROM (ППЗУ).
Установка бита защиты не может гарантировать абсолютную защиту
загруженного программного кода. Встроенная защита не может предотвратить
все возможности считывания программного кода спецоборудованием. Для
затруднения считывания некоторые МК имеют аппаратные блоки, которые
позволяют сначала зашифровывать записываемые программы путём
67
перемешивания команд, а затем преобразовывать перемешанные данные в
поток команд процессора.
Для отладки проектируемых устройств и для входящих в их состав МК
выпускаются схемные эмуляторы (ICE – In-Circuit Emulator). Эмуляторы
физически заменяют МК в проектируемом устройстве и реализуют интерфейс
разработчика с данным устройством. Этим обеспечивается доступ к
аппаратным средствам и программному обеспечению.
Ряд эмуляторов выпускается интегрированными с системой разработки
программного обеспечения (редактор и компилятор), давая возможность
производить отладку в режиме реального времени. В этом случае исключены
задержки, связанные со стиранием при перепрограммировании памяти или
последовательным вводом-выводом, в том числе на светодиодные индикаторы
для определения текущего состояния МК.
Ряд МК содержат последовательные интерфейсы, предназначенные для
отладки приложений. Эти интерфейсы позволяют считывать и записывать
содержимое регистров, памяти программ и данных, а также обеспечивают
управление работой устройства в режиме удалённого доступа, в том числе и
считывания содержимого памяти данных. Это позволяет контролировать ход
выполнения программы.
При использовании этого интерфейса со специализированной
многофункциональной управляющей программой, он может заменить схемный
эмулятор при отладке ПО и комплексной отладке работы всего устройства.
Интерфейсы такого типа обычно реализуются в сложнофункциональных МК,
но встречаются и в простых вариантах. Для отладки также применяются
специальные программы-мониторы, выполняющие ряд простых функций:
– запуск программы;
– останов и модификация кода программы;
– чтение и модифицирование содержимого регистров и памяти данных;
– пошаговое выполнение программ и остановка в контрольных точках.
Этот вариант отладки используется в МК при наличии большого объёма
памяти. Некоторые контроллеры содержат встроенную программу-монитор.
Наиболее эффективное применение микропроцессорных компонентов
наблюдается в случаях, когда эффективно взаимодействуют аппаратное и
программное обеспечения. Понимание того, как программируется устройство,
не менее важно, чем понимание того, как работают аппаратные интерфейсы.
Системы на базе однокристальных МП-средств используют единство
программного и аппаратного обеспечения. Объединение инструментальных
средств разработки ПО с инструментальными средствами разработки
аппаратного обеспечения очень важно при проектировании устройств. Для
68
разработки приложений на базе МК используют следующие основные
инструменты: редактор исходных текстов; компилятор-ассемблер;
программный симулятор; аппаратный эмулятор; программатор. Каждый из этих
инструментов может исполняться в отдельности, но их совместное
использование упрощает разработку и отладку приложения.
Редактор исходных текстов используется для создания исходного кода
программы. Простые редакторы просто копируют код, вводимый с клавиатуры,
в файл. Специализированные редакторы позволяют реагировать на нажатие
конкретных клавиш определённым образом, что может программироваться
пользователем. Например, такой редактор может иметь программу, которая
обрабатывает нажатия клавиш клавиатуры, и обеспечивает специальные виды
отклика в различных ситуациях. Так ввод оператора if может сопровождаться
откликом, воспроизводящим формат языка для этого оператора. Это избавляет
от ошибок в синтаксисе оператора.
Компилятор-ассемблер используется для преобразования исходного
текста в ассемблерные команды микроконтроллера и затем в формат, который
может быть загружен в память программ. Интерфейс компилятора-ассемблера
обеспечивает взаимодействие между редактором компилятором-ассемблером.
Он может передавать информацию об ошибках компиляции и отображать
неправильные строки на дисплее (например, выделение их цветом в исходном
тексте), что делает процесс разработки простым и эффективным. Такой
интерфейс фактически производит комплексную обработку исходного текста.
Симуляторы – это программы, которые выполняют откомпилированный
программный код в инструментальном компьютере системы разработки (host –
главный компьютер, ведущий узел в сети) таким образом, как если бы он
выполнялся в выполнялся в реальной целевой системе (target). Это позволяет
наблюдать за программой и реакцией МК на различные события. Симулятор
позволяет исследовать различные ситуации, которые трудно воспроизвести на
реальной аппаратуре.
Для имитации внешних условий и ситуаций используется специальный
файл входных воздействий. Файл задаёт последовательность входных
сигналов (тест), поступающих на моделируемое (симулируемое) устройство.
Разработка теста занимает много времени, но его использование позволяет
выявить, как работает МК и программа в определённых ситуациях. Если
устройство не работает ожидаемым образом, в тест вносят изменения, чтобы
выяснить, в чём заключается проблема. Симулятор позволяет наблюдать за
процессом выполнения программы в отличие от реальной аппаратуры, где
видны только конечные результаты.
69
Существуют графические симуляторы: они позволяют вместо изменений
в файле входных воздействий (тесте) имитировать подключённое к МК
оборудование. Такой симулятор экономит время, затрачиваемое на разработку
тестов: он позволяет быстро испытать разные комбинации входных сигналов,
чтобы выявить ошибку и найти её причину. Нужно помнить, что симуляторы не
обеспечивают выполнение программы в режиме реального времени. Но и
нужно помнить, что существенно легче производить отладку ПО используя
исходный текст, а не файлы, сгенерированные компилятором: следить за
выполнением программы с помощью исходного текста проще, чем
контролировать скомпилированный код. Этот метод называется символической
отладкой.
Схемный эмулятор – это специальная схема, реализующая интерфейс с
МК в реальном масштабе времени (emulator – подражатель, последователь).
Эмулятор использует интегральную схему МК, подключённую не к ПЗУ, а к
ОЗУ программ, и вся схема в целом выполняет прикладные задачи с реальной
скоростью. Многие эмуляторы могут использоваться для записи команд,
выполняемых процессором в определённое время – это позволяет уяснить, как
реагирует процессор на данную ситуацию. Схемные эмуляторы имеют
высокую стоимость. Они электрически соединяются с отлаживаемой системой,
что должно выполняться по правилам технической эксплуатации эмулятора. Но
в практике такие устройства являются мощным инструментом для разработки
приложений.
Программатор используется для записи программ в память программ
МК. Много МК выпускаются с масочно-программируемой памятью программ.
Интегральные схемы ROM (ПЗУ) в отечественной литературе называют также
масочными постоянными запоминающими устройствами, т. е. устройствами
программируемыми однократно изготовителем микросхем по способу
заказного фотошаблона (маски).
В качестве запоминающих элементов в них используются диоды,
биполярные транзисторы, биполярные транзисторы с диодами Шотки, МОП-
транзисторы, КМОП-ключи. Запись информации осуществляется методом
включения ЗЭ в требуемое перекрытие матрицы с помощью сменной маски при
изготовлении кристалла. Из всех методов записи информации в ПЗУ этот метод
отличается наибольшей простотой изготовления, и, следовательно, самой
низкой стоимостью при массовом производстве. Поэтому такая память широко
используются в качестве носителей постоянных программных кодов, кодов
физических констант, кодов символов жидкокристаллических индикаторов и т.
д. Занесение в них информации нередко называют «прошивкой».
70
Основу масочных ПЗУ составляют матрица ЗЭ на многоэмиттерных
транзисторах (рисунок 4.6), адресные формирователи (АФ), дешифратор адреса
DС, мультиплексоры MUX, усилители считывания (УСч) и устройство
управления (УУ). Адресные входы А разделены на две группы. Первая группа
(1, 2, …k) адресных входов через АФ и DC выбирает один из 2k
многоэммитерных транзисторов матрицы ЗЭ. В свою очередь, каждый
транзистор имеет 2k эмиттеров, так как обычно матрица ЗЭ имеет равное число
горизонтальных и вертикальных шин. Поэтому число разрядных шин также
равно 2k.
72
В режиме программирования осуществляется запись только логического
нуля. Для этого на управляющий затвор, исток и сток подают импульс
положительного напряжения. В обратно смещенных p-n-переходах возникает
лавинный пробой, область которого насыщена электронами. Часть электронов
проникает в плавающий затвор. Снятие высокого программирующего
напряжения восстанавливает обычное состояние областей транзистора и
запирает электроны в плавающий затвор. Заряженный электронами, он
увеличивает пороговое напряжение включения транзистора.
В режиме стирания информации, при котором осуществляется удаление
заряда из плавающего затвора, осуществляется подача на управляющие затворы
нулевого напряжения, а на стоки – напряжения программирования. В режиме
стирания ЗЭ записывается логическая «1». Режим чтения аналогичен режиму
чтения в УФ РПЗУ.
Интерфейс традиционных микросхем EEPROM имеет временную
диаграмму режима программирования с большой длительностью импульса, что
не позволяет непосредственно использовать сигнал записи системной шины.
Более современные микросхемы имеют более сложную внутреннюю структуру,
в которую входит управляющий автомат. Это позволяет упростить внешний
интерфейс, делая возможным непосредственное подключение к
микропроцессорной шине, и скрыть специфические вспомогательные операции
стирания и верификации после программирования.
Для МК используются как специальные программаторы, так и возможности
внутрисистемного программирования ISP. Во втором случае программатор –
часть проектируемого устройства. Некоторые программаторы реализуют
функции схемного эмулятора. При этом установленный в программаторе МК
подключается к отлаживаемой системе и управляет её работой аналогично
тому, как это выполняется в эмуляторе.
Выводы
Гибкое обеспечения обмена сообщениями в сети ОмК обеспечивается
усложнёнными стандартами (например, CAN). По таким протоколам кадры
имеют сложный формат, что затрудняет его обработку, которая может
выполняться как аппаратно, так и программно. Производители встраивают
интерфейс в выпускаемые микроконтроллеры.
Ввод и вывод аналоговых сигналов из ОмК производится по упрощённым
известным схемотехническим решениям – АЦП, ЦАП и базовым схемам на
основе операционных усилителей.
Активно развивается программный инструмент отладки ОмК систем.
Контроллеры содержат встроенные программы-мониторы, эффективно
взаимодействуют аппаратное и программное обеспечения, используется
73
единство программного и аппаратного обеспечения. Объединяются
инструментальные средства разработки ПО с инструментальными средствами
разработки аппаратного обеспечения.
Контрольные вопросы
1. Приведите основные черты протокола САN для компьютерных
контроллерных сетей.
2. Расскажите об адресации в стандарте контроллерных сетей CAN.
3. Охарактеризуйте способ контроллерного аналого-цифрового
преобразования с промежуточным преобразованием входной физической
величины.
4. Опишите способ контроллерного аналого-цифрового преобразования с
аналоговым компарированием напряжения.
5. Расскажите об интегрирующем однотактном времяимпульснм аналого-
цифровом преобразовании.
6. Приведите схему и опишите работу МК в качестве ведомого устройства.
7. Опишите основные технологии и способы в схемотехнике памяти
микроконтроллерных устройств.
5. СЕМЕЙСТВО ОДНОКРИСТАЛЬНЫХ
КОНТРОЛЛЕРОВ MCS-51
В разделе описано семейство однокристальных микропроцессорных
устройств MCS-51 фирмы Intel, дана обобщенная архитектура семейства,
приведён типовой способ использования, показана система памяти
микроконтроллера 8xC51Fx.
Ключевые слова: микроконтроллер MCS-51, синхронизация, цикл
записи, цикл чтения, внешняя память программ, начальная установка, регистр
специальных функций, слово состояния программы, система команд, режимы
адресации, набор команд.
Семейство 8-разрядных микроконтроллеров MCS-51 было выпущено
фирмой Intel в начале 80-х годов. Микроконтроллеры являются функционально
завершенными однокристальными изделиями с Гарвардской архитектурой,
содержащими все необходимые узлы для работы в автономном режиме, и
предназначенными для реализации различных цифровых алгоритмов
управления. На сегодняшний день семейство MCS-51 содержит несколько
десятков типов ИС, отличающихся конкретной реализацией отдельных узлов и
условиями эксплуатации. Все ИС семейства обладают аналогичной
архитектурой и имеют целый ряд общих узлов. Структура микроконтроллера
MCS-51 приведена на рисунке 5.1 [10].
75
Рис. 5.1. Структурная схема микроконтроллера MCS-51
Общими узлами у всех микроконтроллеров семейства являются:
а) 8-разрядный центральный процессор (ЦП), ориентированный на
управление исполнительными устройствами. ЦП имеет встроенную схему 8-
разрядного аппаратного умножения и деления чисел. Наличие в наборе команд
большого числа операций для работы с прямоадресуемыми битами дает
возможность говорить о так называемом «булевом процессоре»;
б) внутренняя память программ масочного или репрограммируемого
типа, имеющая для различных кристаллов объем от 4-х до 32 Кбайт. В
некоторых версиях она отсутствует;
в) не менее чем 128-байтное резидентное ОЗУ данных, которое
используется для организации регистровых банков, стека и хранения
пользовательских данных;
д) не менее 32-х двунаправленных интерфейсных линий (портов),
индивидуально настраиваемых на ввод или вывод информации;
е) два 16-битных многорежимных счетчика–таймера, используемых для
подсчета внешних событий, организации временных задержек и тактирования
коммуникационного порта;
ж) двунаправленный дуплексный последовательный коммуникационный
порт, предназначенный для организации каналов связи между
микроконтроллером и внешними устройствами;
и) двухуровневая приоритетная система прерываний, поддерживающая не
менее 5-ти векторов прерываний от внутренних и внешних источников;
76
к) встроенный тактовый генератор.
Центральный процессор микроконтроллеров MCS-51 имеет следующие
технические характеристики:
– разрядность АЛУ 8 бит;
– число выполняемых команд 111;
– длина команд один, два или три байта;
– число регистров общего назначения (РОН) 32;
– число прямоадресуемых битовых переменных 128;
– число прямоадресуемых битов в области регистров специальных
функций 128;
– максимальный объем памяти программ 64 Кбайта;
– максимальный объем памяти данных 64 Кбайта;
– максимальный объем внутренней памяти данных 256 байт;
– время выполнения команд при тактовой частоте 12 МГц:
1) сложение – 1 мкс;
2) пересылки «регистр–внешняя память данных» – 2 мкс;
3) умножение–деление – 4 мкс.
– методы адресации регистровый, косвенный, прямой, непосредственный.
Различные микроконтроллеры семейства содержат широкий набор
дополнительных средств для эффективной обработки асинхронных событий,
измерения частот и временных интервалов, обработки аналоговых сигналов,
управления двигателями, организации мультипроцессорных систем. В общем,
БИС семейства MCS-51 – это 8-разрядная ОмЭВМ. ПЗУ, ОЗУ, регистры
специального назначения, АЛУ и внешние шины имеют байтовую
организацию. Двухбайтовые данные используются только регистром-
указателем (DPTR) и счетчиком команд (РС). Также регистр-указатель данных
может быть использован как двухбайтовый регистр DPTR или как два
однобайтовых регистра специального назначения DPH и DPL. Счетчик команд
всегда используется как двухбайтовый регистр.
Типичным представителем контроллеров подсемейства 80xC51Fx
является интегральная схема 83C51FA.
Синхронизация микроконтроллера: опорным интервалом времени, на
котором основана синхронизация работы всего микроконтроллера, является
машинный цикл. Машинный цикл имеет фиксированную длительность и
содержит 6 состояний S1–S6, каждое из которых по длительности
соответствует такту, и, в свою очередь, состоит из двух временных интервалов,
определяемых фазами P1 и P2 (рисунок 5.2). Длительность фазы равна периоду
следования внешнего сигнала синхронизации.
77
Рис. 5.2. Наполнение машинного цикла во времени
f 1/ 2 LC .
Внешний интерфейс микроконтроллера. Внешний интерфейс
микроконтроллера предназначен для организации взаимодействия его с
внешней памятью программ и данных и устройствами ввода-вывода. Обмен
данными осуществляется по внешней мультиплексной магистрали
микроконтроллера. Эта магистраль использует выводы порта P0 для выдачи
младшего байта адреса и чтения-записи байта данных, а выводы порта P2 – для
78
выдачи старшего байта адреса. Обращение к внешней памяти данных требует
двух машинных циклов, поэтому второй импульс ALE внутри машинного
цикла при обращении к внешней памяти данных не генерируется.
Цикл чтения из внешней памяти данных (рисунок 5.4). По заднему
фронту сигнала ALE младший байт адреса, поступающий с выводов порта P0,
должен быть зафиксирован во внешнем регистре-защелке.
80
После сигнала сброса порты ввода-вывода находятся в неизменном
состоянии в течение 19-ти периодов тактирования, после чего в промежутке
между 19-м и 31-м тактом переводятся в начальное «единичное» состояние.
При этом сигналы ALE и PSEN находятся в неактивном высоком состоянии.
По сигналу сброса микроконтроллер устанавливает все служебные
регистры в начальное состояние. На содержимое внутренней памяти данных
сигнал RESET не влияет. При включении питания она устанавливается в
произвольное состояние. Длительность сигнала RESET должна быть не
меньше времени, необходимого для запуска внутреннего тактового генератора,
плюс два машинных цикла.
В свою очередь, время установки генератора зависит от частоты
синхронизации и добротности кварцевого резонатора. При частоте 10 МГц оно
обычно составляет около 1 мкс. Для автоматического рестарта после подачи
напряжения питания к выводу RESET необходимо подключить RC-цепочку,
обеспечивающую требуемую задержку, позволяющую генерировать одиночный
импульс сброса.
После снятия сигнала RESET проходит от одного до двух тактовых
периодов до активизации ИС. При этом микроконтроллер начинает выполнять
программу с адреса 000016 внутренней либо внешней памяти программ (в
зависимости от уровня сигнала EA).
Удержание выводов ALE и PSEN в активном (нулевом) состоянии при
активном сигнале RESET приводит к переводу всех выводов ИС в
высокоимпедансное состояние (режим ONCE). Этот режим используется для
отладки системы.
81
Рис. 5.7. Карта программной памяти
82
Рис. 5.11. Карта внутренней памяти данных
83
области располагаются со значения 8016 по FF16. Наиболее часто
используемыми регистрами специальных функций являются:
– аккумулятор (байтовый адрес 0E016). Используется во всех
арифметических и логических операциях в качестве операнда;
– регистр B (байтовый адрес 0F016). Используется при операциях
умножения и деления, а также как сверхоперативный регистр;
– слово состояния программы PSW (байтовый адрес 0D016). Содержит
информацию о состоянии программы;
– указатель стека (байтовый адрес 08116). Используется для указания на
вершину стека в операциях записи в стек и чтения из него. По аппаратному
сбросу устанавливается в значение 0716 (область стека в этом случае начинается
с адреса 0816) и инкрементируется при каждой записи в стек. Запись в SP
производится для предопределения положения стека во внутренней памяти
данных микроконтроллера;
– указатель данных DPTR (байтовые адреса 08216, 08316). Состоит из двух
байт: старшего DPH и младшего DPL. Используется как 16-ти или 8-битовый
указатель адреса при обращении к внешней памяти или выполнении команды
перехода по косвенному адресу.
Слово состояния программы PSW содержит ряд статусных битов,
отражающих текущее состояние процессора (таблица 5.1).
Таблица 5.1
Формат PSW
PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0
CF (CY) AF (AC) F0 RS1 RS0 OV (OF) – P (PF)
Таблица 5.2
Назначение битов PSW
Бит Назначение
CF (CY) Флаг переноса (Carry Flag)
AF (AC) Флаг дополнительного переноса (Auxilinary Carry Flag)
F0 Флаг пользователя 0
Биты выбора используемого регистрового банка: 00 – банк 0;
RS1, RS0
01 – банк 1; 10 – банк 2; 11 – банк 3.
OF (OV) Флаг переполнения (Owerfow Flag)
– Зарезервирован. Доступен по чтению и записи.
PF (P) Флаг четности (Parity Flag)
84
Бит переноса, кроме арифметических операций, используется также и в
булевых операциях. Биты RS0 и RS1 используются для выбора одного из 4-х
регистровых банков. Бит четности отражает число установленных бит в
аккумуляторе: P = 1, если аккумулятор содержит нечетное число единиц, и P =
0, если четное. Т. е., количество ненулевых битов в аккумуляторе плюс P
является всегда четным числом. Два бита в PSW ни с чем не связаны и могут
использоваться как флаги состояний.
85
режиме осуществляется просмотр таблиц в памяти программ. 16-битовый
регистр (DPTR или программный счетчик) указывает базовый адрес требуемой
таблицы, а аккумулятор указывает на точку входа в нее.
Набор команд имеет 42 мнемонических обозначения команд для
конкретизации 33 функций этой системы. Синтаксис большинства команд
ассемблерного языка состоит из мнемонического обозначения функции, вслед
за которым идут операнды, указывающие методы адресации и типы данных.
Различные типы данных или режимы адресации определяются установленными
операндами, а не изменениями мнемонических обозначений.
Систему команд условно можно разбить на пять групп: арифметические
команды; логические команды; команды передачи данных; команды битового
процессора; команды ветвления и передачи управления. Обозначения и
символы, используемые в системе команд, приведены в таблице 5.3.
Таблица 5.3
Обозначения и символы, используемые в системе команд
Обозначение,
Назначение
символ
1 2
А Аккумулятор
Rn Регистры текущего выбранного банка регистров
r Номер загружаемого регистра, указанного в команде
Окончание табл. 5.3
1 2
Прямо адресуемый 8-битовый внутренний адрес ячейки данных, который
direct может быть ячейкой внутреннего ОЗУ данных (0–127) или регистром
специальных функций SFR (128–255)
@Rr Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных
data8 8-битовое непосредственное данное, входящее в код операции (КОП)
dataH Старшие биты (15–8) непосредственных 16-битовых данных
dataL Младшие биты (7–0) непосредственных 16-битовых данных
addr11 11-битовый адрес назначения
addrL Младшие биты адреса назначения
disp8 8-битовый байт смещения со знаком
Бит с прямой адресацией, адрес которого содержит КОП, находящийся во
bit
внутреннем ОЗУ данных или регистре специальных функций SFR
a15, a14...a0 Биты адреса назначения
(Х) Содержимое элемента Х
((Х)) Содержимое по адресу, хранящемуся в элементе Х
(Х)[M] Разряд М элемента Х
Операции:
86
+ сложения
– вычитания
* умножения
/ деления
AND логического умножения (операция И)
OR логического сложения (операция ИЛИ)
XOR сложения по модулю 2 (исключающее ИЛИ)
/X инверсия элемента Х
87
представленными в двоично-десятичном коде). Она не делает преобразования
двоичного числа в двоично-десятичное, а лишь обеспечивает правильный
результат при сложении двух двоично-десятичных чисел.
Пример логической команды: операция логического И может быть
выполнена одной из следующих команд:
ANL A,7F16 – логическое умножение содержимого регистра А на число
7F16 и результат сохраняется в регистре А;
ANL A,@R1 – логическое умножение содержимого регистра А на число,
адрес которого хранится в регистре R1 (косвенная адресация), и результат
сохранить в регистре А;
ANL A,R6 – логическое умножение содержимого регистра А на
содержимое регистра R6, и результат сохранить в регистре А;
ANL A,#53 – логическое умножение содержимого регистра А на число,
адрес ячейки хранения которого 5316, и результат сохранить в регистре А.
Все логические операции над содержимым аккумулятора выполняются за
один машинный цикл, остальные – за два. Логические операции могут
производиться над любым из нижних 128 байтов внутренней памяти данных
или над любым регистром SFR (регистров специальных функций) в режиме
прямой адресации без использования аккумулятора.
Операции циклического сдвига RL A, RLC A и т. д. перемещают
содержимое аккумулятора на один бит вправо или влево. В случае левого
циклического сдвига младший бит перемещается в старшую позицию. В случае
правого циклического сдвига происходит обратное.
Операция SWAP A осуществляет обмен младшей и старшей тетрад в
аккумуляторе.
88
исключают возможность использования стековых команд для адресации
регистров SFR.
Инструкции передачи данных включают в себя 16-битовую операцию
пересылки MOV DPTR,#data16, которая используется для инициализации
регистра указателя данных DPTR при просмотре таблиц в программной памяти
или для доступа к внешней памяти данных.
Операция XCH A,byte применяется для обмена данными между
аккумулятором и адресуемым байтом. Команда XCHD A,@Ri аналогична
предыдущей, но выполняется только для младших тетрад, участвующих в
обмене операндов.
Для доступа к внешней памяти данных используется только косвенная
адресация. В случае однобайтных адресов используются регистры R0 или R1
текущего регистрового банка, а для 16-разрядных – регистр указателя данных
DPTR. При любом методе доступа к внешней памяти данных аккумулятор
играет роль источника либо приемника информации.
Для доступа к таблицам, размещённым в программной памяти,
используются команды:
MOVC A,@A+DPTR ;
MOVC A,@A+PC .
В качестве базового адреса таблицы используется содержимое
соответственно регистра указателя данных DPTR или PC (программного
счётчика), а смещение берется из A. Эти команды используются
исключительно для чтения данных из программной памяти, но не для записи в
нее.
5.2.3. Булевы операции
Микросхемы MCS-51 содержат в своем составе «булевый» процессор.
Внутреннее ОЗУ имеет 128 прямо адресуемых бит. Пространство регистров
специальных функций SFR может также поддерживать до 128 битовых полей.
Битовые инструкции осущесвляют условные переходы, пересылки, сброс,
инверсии, операции «И» и «ИЛИ». Все указанные биты доступны в режиме
прямой адресации.
Бит переноса CF в регистре специальных функций «слово состояния
программы PSW» используется как однобитный аккумулятор булевого
процессора.
89
прибавляемый к программному счетчику PC в случае выполнения условия
перехода. Границы таких переходов лежат в пределах между минус 128 и 127
относительно первого байта, следующего за инструкцией. В регистре
специальных функций «слово состояния программы PSW» отсутствует флажок
нуля, поэтому инструкции JZ и JNZ проверяют условие «равно нулю» как
тестирование данных в аккумуляторе.
Существует три вида команды безусловного перехода: SJMP, LJMP и
AJMP – различающиеся форматом адреса назначения. Инструкция SJMP
кодирует адрес как относительное смещение, и занимает два байта. Дальность
перехода ограничена диапазоном от минус 128 до 127 байт относительно
инструкции, следующей за SJMP.
В инструкции LJMP используется адрес назначения в виде 16-битной
константы. Длина команды составляет три байта. Адрес назначения может
располагаться в любом месте памяти программ.
Команда AJMP использует 11-битную константу адреса. Команда
состоит из двух байт. При выполнении этой инструкции младшие 11 бит
адресного счетчика замещаются 11-битным адресом из команды. Пять старших
бит программного счетчика PC остаются неизменными. Таким образом,
переход может производиться внутри 2К-байтного блока, в котором
располагается инструкция, следующая за командой AJMP.
Существует два вида команды вызовы подпрограммы: LCALL и ACALL.
Инструкция LCALL использует 16-битный адрес вызываемой подпрограммы.
В данном случае подпрограмма может быть расположена в любом месте памяти
программ. Инструкция ACALL использует 11-битный адрес подпрограммы.
В этом случае вызываемая подпрограмма должна быть расположена в одном
2К-байтном блоке с инструкцией, следующей за ACALL. Оба варианта
команды кладут на стек адрес следующей команды и загружают в
программный счетчик PC соответствующее новое значение.
Подпрограмма завершается инструкцией RET, позволяющей вернуться
на инструкцию, следующую за командой CALL. Эта инструкция снимает со
стека адрес возврата и загружает его в программный счетчик PC. Инструкция
RETI используется для возврата из подпрограмм обработки прерываний.
Единственное отличие RETI от RET состоит в том, что RETI информирует
систему о том, что обработка прерывания завершилась. Если в момент
выполнения RETI нет других прерываний, то она идентична RET.
Инструкция DJNZ предназначена для управления циклами. Для
выполнения цикла N раз надо загрузить в счетчик байт со значением N и
закрыть тело цикла командой DJNZ, указывающей на начало цикла.
90
Команда CJNE сравнивает два своих операнда как беззнаковые целые и
производит переход по указанному в ней адресу, если сравниваемые операнды
не равны. Если первый операнд меньше, чем второй, то бит переноса CF
устанавливается в «1».
Все команды в ассемблированном виде занимают 1, 2 или 3 байта. Более
широкое и подробное описание микроконтроллера приведено в [10].
Выводы
Микроконтроллеры семейства MCS-51 имеют Гарвардскую архитектуру,
т. е. раздельное адресное пространство программ и данных, что позволяет
осуществлять доступ к памяти данных по 8-битным адресам: это способствует
более быстрой обработке данных в процессоре.
Система команд MCS-51 поддерживает набор инструкций, которые
предназначены для выполнения большого объёма команд с высокой скоростью.
Программирование микроконтроллеров облегчает организация памяти в три
ступени (включая регистровые банки).
91
Контрольные вопросы
1. В чём выражается Гарвардская архитектура микроконтроллеров
MCS-51?
2. Дайте общую характеристику микроконтроллеров MCS-51.
3. Охарактеризуйте процессор и внутреннюю память программ
микроконтроллера MCS-51.
4. Охарактеризуйте ОЗУ данных и порты микроконтроллера MCS-51.
5. Охарактеризуйте таймеры и коммуникационный порт
микроконтроллера MCS-51.
6. Охарактеризуйте систему прерываний и тактовый генератор
микроконтроллера MCS-51.
7. Охарактеризуйте методы адресации операндов у микроконтроллера
MCS-51.
92
промежуток времени. В этом семействе микроконтроллеров выпущено много
моделей.
Младшие модели серии 16С5х реализуют нижний уровень
возможностей микроконтроллеров семейства PICMicro. Они выполняют
подмножество команд, реализуемых старшими моделями, и программно
совместимы с ними (не рекомендуются в новых разработках). У них мало число
прерываний, мал объём доступной памяти программ и ОЗУ, отсутствует
внутрисистемное программирование и порты ввода-вывода с расширенными
функциями. Так микроконтроллеры серии 12С5хх обладают 6-ью линиями
ввода-вывода и объёмом памяти программ 512 или 1024 команды.
Используются для создания небольших простых приложений (в основном для
создания простых интерфейсных устройств).
Модели микроконтроллеров среднего уровня обладают большим числом
различных функций. Базовая архитектура аналогична архитектуре младшей
группы моделей, но существенно отличаются по возможностям обработки
прерываний. У них имеется внутрисистемное программирование, а
функциональные возможности позволяют использовать один и тот же
программный код для различных приложений.
Обычно используется один вектор прерывания. Имеются АЦП и
устройства, обеспечивающие непосредственное подключение датчиков.
Технические характеристики моделей среднего уровня отражены в таблице 6.1
[5].
Таблица 6.1
Технические характеристики моделей микроконтроллеров
семейства PICMicro среднего уровня
Характеристика Значение
1 2
Количество уровней
8
прерываний (подпрограмм)
Объём памяти программ 512–8К команд
Регистровый файл (ОЗУ) 36–192 байт
Число источников
4–12
прерываний
Число таймеров 1–3
Напряжение питания 2,0–5,0 В
Тактовая частота ноль – 4 МГц или до 20 МГц
Число линий ввода-вывода 13–33
Тип памяти программ Масочная; ППЗУ; ЭППЗУ/Flash
Окончание табл. 6.1
93
1 2
Возможности
Компараторы напряжения; ЦАП с резистивным
для аналого-цифрового
делителем; интегрирующие АЦП; ШИМ-выходы
преобразования
Протоколы
SPI, I2C, асинхронный
последовательных портов
Прямого подключения ЖКИ; параллельный ведомый
Другие порты
порт
94
может обращаться к 128 адресам (рисунок 6.1). Регистр W, который можно
рассматривать как аккумулятор или регистр временного хранения. Все
арифметические команды процессора PIC используют регистр W. Если
требуется сложить содержимое двух регистров, то сначала надо перенести
содержимое первого регистра и регистр W, а затем добавить к нему
содержимое второго регистра.
Шина
данных
Память Регистры
программ Программный
счётчик
АЛУ
Дешиф-
ратор ко-
манд
Шина адреса
7-битный
дешифра-
тор адреса
95
В ассемблере MPASM фирмы Microchip для указания размещения
результата в регистре-источнике используется символ f. Для записи результата
в регистр W параметр, определяющий место размещения, должен иметь
значение «0» или в команде ассемблера должен быть указан символ w. Для
указания размещения результата используется последний параметр в
ассемблерной записи команды:
addwf FSR, w ; Сложение регистров W и FSR, и
; размещение результата в регистре W
iorwf TMR0, f ; Операция эквивалентности над содержимым регистров
; W и TMR0, и размещение результата в регистре TMR0
выбор банка
Шина регистров
значения данных
Память флагов Регистры
программ Программный
счётчик Регистр
состояния
STATUS
АЛУ
Дешиф-
ратор ко-
Регистр
манд
W
7-битный
(девяти-)
дешифра-
Шина адреса тор адреса
96
При такой записи ассемблер MPASM фирмы Microchip и большинство
других ассемблеров запишут результат вычисления в регистр-источник (ана-
логично указанию параметра «f» или «1»).
Регистр состояния (STATUS) является основным регистром процессора,
который осуществляет контроль выполнения программы. Содержимое этого
регистра можно разделить на три части. В первой части регистра STATUS
содержатся флаги Z, DC и С, которые используются для управления ходом
выполнения программы. Флаг нуля Z устанавливается в «1», если результат
операции равен нулю (например, при выполнении команд сложения,
вычитания, сброса или битных операций).
Флаг переноса С устанавливается в «1», если результат сложения
превышает число 255 (0x0FF) или результат вычитания меньше нуля.
Взведение флага переноса показывает, что для получения правильного
результата необходимо изменить значение старшего байта. Флаг
промежуточного переноса (полупереноса) DC устанавливаемся в «1», если в
результате выполнения арифметических команд (сложение или вычитание)
младшая тетрада (четыре бита) превышает число 15.
Данные флаги могут быть считаны и записаны. Они изменяют своё
значение в соответствии с результатом выполнения арифметических и
логических команд. Следует отметить, что регистр состояния STATUS не
может быть приёмником в арифметических и логических командах. Макрос для
сброса в «0» всех битов регистра состояния перед выполнением
арифметической команды следующий.
ClearFlags Macro ; Сбросить флаги состояния
movlw 0x0F8 ; Загрузить значение константы 0x0F8 в регистр W
andwf STATUS, w ; Выполнить операцию «И» между регистром W
; и регистром STATUS, и размещение результата
; в регистре W
movwf STATUS ; Запись содержимого регистра W в регистр STATUS
endm ; Конец макроса
Функциональная схема процессора PICMicro показано на рисунке 6.2.
Во второй части регистра STATUS следующие два бита определяют
режим работы микроконтроллера при включении и при выходе из режима
ожидания SLEEP. Таблица 6.2 показывает значения этих битов в различных
ситуациях. Данные биты предназначены для того, чтобы прикладная программа
могла определить, в каком состоянии находится процессор в момент перво-
начальной загрузки.
97
Таблица 6.2
Значения битов _PD и _TO, определяющих режим работы контроллера
при включении и при выходе из режима ожидания
_TO _PD Состояние
1 1 Запуск при включении питания или подаче сигнала
на вход _MCLR
0 1 Сброс сторожевого таймера в ходе выполнения
программы
0 0 Выход из режима ожидания по сигналу сторожевого
таймера
1 0 Выход из режима ожидания по сигналу _MCLR
или прерыванию
98
уровня располагаются в банке 1, Для доступа к этим регистрам введены
специальные команды «option» и «tris», с помощью которых можно
содержимое регистра W переписать в эти регистры.
Смена регистровых файлов при переключении банков может показаться
недостатком архитектуры этого семейства. Сложности возникают из-за
принятых компанией Microchip правил адресации. Регистры банка 1 имеют
адреса от 0x080 и более (установка 7-го бита в адресе указывает на
использование страницы 1), а регистры банка 0 – адреса от 0x07F и менее.
Однако реально это лишь способ записи адреса. При данной форме записи бит
PR0 можно рассматривать как бит 7 адреса. Если в заданном адресе бит 7
установлен в «1», то перед обращением к регистру должен быть установлен в
«1» бит PR0 в регистре состояния. Для PICMicro среднего уровня,
использующих четыре банка, диапазон адресов регистров составляет от 0 до
0x01FF, а выбор 128-адресного банка осуществляется с помощью битов PR1 и
PR0.
Основные регистры – STATUS, INDF, FSR, PCL, PCLATH и INTCON
имеют одни и те же адреса в разных типах микроконтроллеров и размещаются с
одинаковым адресом на каждой странице памяти. Это сделано для про-
граммной совместимости различных моделей микроконтроллеров. Размещение
peгистров в двух основных банках показано в таблице 6.3.
Таблица 6.3
Регистры PICMicro среднего уровня
Адрес Банк 0 Банк 1 Адрес Примечание
0х000 INDF INDF 0х080 * – PORTC/TRISC :
0х001 TMR0 OPTION 0х081 для варианта с портом С.
0х002 PCL PCL 0х082
0х003 STATUS STATUS 0х083 ** – регистры ввода/вывода.
0х004 FSR FSR 0х084
0х005 РОRТА TRISA 0х085
0х006 PORTB TRISB 0х086 PCON*** – регистр управлением
0х007 * * 0х087 включением питания.
0х008 ** ** 0х088
0х009 ** ** 0х089 Пространство файловых
0х00А PCLATH PCLATH 0х08A регистров.
0х00В INTCON INTCON 0х08B
0х00С 0х08C ▬ ▬ конец пространство
PCON*** файловых регистров.
0х020 0х0A0
0х07F 0х0FF
99
Адресация регистров в процессорах PIC оcуществляется тремя
различными способaми адресации дынных: непосредственной адресации,
прямой регистровой адресации и косвенной aдресации. Функции этих способов
во многих случаях перекрываются, но каждый из них paзработан для
peaлизации определённой операции.
Непосредственная адресация означает, что операнд, используемый при
операции, являемы частью команды. Можно загрузить в peгистр W
необходимое число или изменить содержимое этого peгистpa с помощью
некоторой команды с определённым операндом (рисунок 6.3).
Непосредственная адресация используется в тех случаях, когда заранее
известно значение переменной для загрузки в регистр или выполнения
операции. Например, запись содержимого в регистр «направления ввода-
вывода» реализуется следующим образом.
Шина
данных
Программный
счётчик выбор банка
регистров
Память Регистры
программ
Регистр
значения MUX состояния
флагов STATUS
АЛУ
Дешиф-
ратор ко-
Регистр
манд
W
7-битный
(девяти-)
дешифра-
Шина адреса тор адреса
bsf STATUS, PR0 ; бит установить в «1» в регистре STATUS, имя бита
; PR0: выбор банка «1» с помощью битов PR0 и PR1
movlw 0011011101b ; загрузить константу в регистр W: т. е.
; запрограммировать разряды № 1 и № 5 на вывод
; данных (установив «0» в битах с номерами 1 и 5;
100
movwf TRISB ^ 0x080h ; загрузить регистр W в регистр TRISB, и выполнить
; с загруженным операцию «исключающее ИЛИ» с
; числом 0x080h (маскирование числом 10000000) –
; т. е. установить в регистре TRISB бит № 7 в
; состояние «0»
bcf STATUS, RP0 ; бит очистить в «0» в регистре STATUS, имя бита
; PR0: выбор банка «0» с помощью битов PR0 и PR1
Выполнение логической операции XOR («исключающее ИЛИ») над
TRISB и числом 0х080 делается потому что адрес TRISB равен 0x086, что
указываем на выбор регистра с номером 0x006 в банке «1». Если оставить 7-ой
бит в TRISB установленным в «1», то MPASM с формирует
предупреждающее сообщение <302> об обращении к pегистpу, находящемуся
вне банка «0». Это даёт возможность проверить, не происходит ли обращение к
неправильному peгистpy. Чтобы избежать этого, можно изменить значение
cтapшего бита, который указывает на используемую страницу регистров.
Значение этого бита можно сбрасывать и с помощью операции &0x07F.
Доступ к peгистpy означает, что можно обработать его содержимое в
АЛУ и поместить результат в peгистpe W или в выбранном регистре.
Вычисление происходит в процессоре и результаты помещаются в регистр W
или обратно в регистр–источник. Обычно для загрузки в регистр W
содержимого другого регистра используется команда mov. Эта команда
выполняется аналогично другим арифметическим командам, использующим
регистр W. Следующий программный код загружает содержимое из одного
регистра и сохраняет его в другом регистре.
movf Reg1 w ; загрузить содержимое регистра Reg1 в регистр W
movwf Reg2 ; сохранить содержимое W в регистре Reg2
Бывают случаи, когда необходимо использовать косвенную адресацию
данных и модифицировать адрес с помощью арифметической операции.
Регистры INDF и FSR используются для индексной и косвенной адресации
данных, что позволяет собирать данные в массив и обращаться к ним как к
массиву. Pегистp INDF является псевдорегистром с адресом 0, который в
действительности не существует. При обращении к этому pегистpy на самом
делe происходит обращение к peгистpy, aдpec которого содержится в FSR.
Схема процессора PICMicio с указанными добавлениями изображена на
рисунке 6.4.
Если необходимо записать строку символов, постyпающиx в процеccop
PIC, то это может бьть сделано при помощи набоpа переменных, но такой
процесс трудно организовать. Вместо этого может бьпь использован массив
байтов, который позволяет производить доступ к данным. Oтдельные байты в
массиве могут быть выбраны явным образом, но обращение к целой строке
101
можем быть осуществлено только последовательно, с использованием простого
алгоритма программирования.
Шина
данных выбор банка
Программный
регистров
счётчик
Память Регистры
программ Регистр
FSR
значения MUX
флагов Регистр
состояния
STATUS
АЛУ
Дешиф-
ратор ко-
Регистр
манд
W
7-битный
(девяти-)
дешифра-
Шина адреса тор адреса
MUX
103
Скобки указывают, что содержимое регистра Index является адресом того
регистра, содержимое которого надо записать в аккумулятор а.
В процессорах PIC не удастся использовать эквивалентную команду
movf (FSR) w
Но вместо (FSR) в этой команде необходимо указать INDF – при этом
будет выполняться точно такая же операция (содержимое FSR используется
как адрес регистра, который является источником операнда.
Программный счётчик имеет механизм изменения наиболее сложный в
семействе PIC. Во всех микроконтроллерах PICMicro команды содержат одно
командное слово или адрес – это особенность архитектуры RISC. Так, в
командах goto и call недостаточно места для указания полного значения нового
содержимого программного счётчика. В контроллерах среднего уровня,
использующих 14-битовые команды, только 11 бит команды служат для
указания нового адреса. Эти 11 бит адресуют 2К памяти микроконтроллера,
которые образуют страницу.
Обычно в команде указываются все младшие биты нового адреса.
Старшие биты загружаются из другого регистра, который называется
PCLATH, каждый раз при выполнении команд goto, call или команд
«вычисляемых переходов», рисунок 6.5. Эта форма указания адреса
используется для всех команд
goto и call, но конкретный вариант их реализации различается для трёх
различных семейств PICMicro.
104
Шина
Регистры данных
PCLATH/STATUS
Шина
команд
MUX MUX
Регистр PCL
105
вызова подпрограмм. То есть, в микроконтроллерах, имеющих объём памяти
1К, можно использовать только две таблицы сегментов переходов (всего
512 элементов).
Так как в микроконтроллерах среднего уровня используются команды
длиной 14 бит, то адресуемый с их помощью объём памяти составляет до
8 Кбайт. При этом некоторые биты регистра STATUS используются для
выполнения других функций, нежели аналогичные биты в младших моделях.
Для адресации памяти программ в моделях среднего уровня введён регистр
PCLATH.
При 14-битной длине команд для указания адреса в командах goto и call
используется 11 бит. Это даёт размер страницы для данного семейства 2К (211).
С помощью команды addwf PCL[,f] микроконтроллеры PICMicro могут
непосредственно обращаться лишь к 256 адресам таблицы. Однако в отличие от
младших моделей выбираемые данные могут иметь любую разрядность и
располагаться в любом месте памяти. Рассмотрим пример размещения в
микроконтроллере 700-элементной таблицы, начиная с произвольного адреса
(т. е. за пределами 256-адресного пространства). Здесь Table является
подпрограммой, которая выбирает в регистр W требуемый элемент таблицы.
Выводы
Простота архитектуры микроконтроллеров семейства PICMicro ведёт к
более сложной методике разработки программного обеспечения при создании
эффективных приложений.
В то же время отсутствие доступа к пространству стека препятствует
разработке систем реального времени.
107
Вопросы для обсуждения
1. Минимизация числа циклов при выполнении команд goto, call и return.
2. Аппаратная реализация стека в семействе PICMicro.
3. Набор команд для архитектуры семейства PICMicro.
Контрольные вопросы
1. Центральный процессор микроконтроллера семейства PICMicro.
2. Регистр состояния микроконтроллера семейства PICMicro.
3. Адресация регистров микроконтроллера семейства PICMicro.
4. Программный счётчик микроконтроллера семейства PICMicro.
5. Внутренняя память микроконтроллеров семейства PICMicro.
6. Системный тактовый генератор микроконтроллеров семейства
PICMicro.
7. Аппаратные регистры и файл регистров микроконтроллеров семейства
PICMicro.
108
7. МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА AVR
В разделе описаны аппаратные средства, дана обобщенная
архитектура микроконтроллеров семейства AVR, приведёны особенности
программирования.
Ключевые слова: микроконтроллер семейства AVR, прямая регистровая
адресация, регистр состояния, полуперенос, адресации внешней памяти,
индексные регистры, стек, прерывания, адресация данных.
Микроконтроллеры AVR считаются одним из направлений, активно
развиваемых корпорацией Atmel. На настоящий момент соотношение «цена –
производительность – энергопотребление» для микроконтроллеров AVR
остается едва ли не лучшим в разряде 8-разрядных микроконтроллеров.
Семейство интенсивно развивается, усложняется и совершенствуется. AVR –
продукт корпорации Atmel (1997 г.). В августе 1999 года уже были три
семейства AVR – tiny, classic и mega (www.atmel.com).
Как и в любом процессоре, особенности AVR являются следствием
общих принципов, использованных при их разработке. Контроллеры
реализованы на базе набора регистров, представленных в графическом виде на
рисунке 7.1. Структура микроконтроллера AVR показана на рисунке 7.2. Эта
организация обеспечивает высокую эффективность процессора при обработке
данных. Архитектура AVR оптимизирована, чтобы соединить достоинства
Гарвардской и Принстонской архитектур для достижения очень быстрого и
эффективного выполнения программ [11].
РОН
и
АЛУ
Регистры ввода–вывода
и память SRAM
109
VCC (UПИТ) PA0–PA7 PC0–PC7
XTAL1
направ- направ-
ления ления
данных данных
порта А порта С
Шина Данных
8
Внутренний Гене-
Програм-
Указатель генератор
мный счёт- ратор
стека
чик Сторожевой
таймер Синхронизация
flash- SRAM и управление
память
программ Регистры Регистр управ-
RESET XTAL2
общего наз- ления МК
Регистр начения
Таймеры-
команд счётчики
Контроллер
Дешифра-
тор команд прерываний
AЛУ ALE
EEPROM
на линии Регистр ICP
управления состояния
PB0–PB7 PD0–PD7
110
Есть два типа команд, которые могут выполняться этим ядром.
Арифметические операции выполняются над содержимым РОН, а операции
изменения последовательности команд могут реализовать только переходы в
программе, но не могут производить вызов подпрограмм или сохранение
содержимого программного счетчика.
Програм-
мный счёт-
чик Шина
данных
Шина Регистры
Память команд общего наз-
программ начения
32 х 8
Дешифра-
тор команд AЛУ
Програм-
мный счёт-
чик Регистры обще- Шина
го назначения данных
Шина
Память команд 32 х 8
программ В
А
Дешифра-
тор команд AЛУ
Рис. 7.4. Пути передачи данных при выполнении команды AVR add А,В
111
Если второй операнд не требуется, в команде указывается только один
регистр, как, например, в команде инверсии. Второй операнд может являться
частью команды (непосредственная адресация), в этом случае данные с шины
команд поступают на шину данных.
Прибавление константы выполняется при помощи команды addiw A,
const, что означает А = А + const и показано графически на рисунке 7.5.
Содержимое программного счетчика инкрементируется после того, как
очередная команда считывается из памяти или принимает новое значение при
выполнении команды безусловного перехода jmp (рисунок 7.6).
Програм-
мный счёт-
чик Регистры обще- Шина
го назначения данных
Шина
Память команд 32 х 8
программ
adiw A, c А
Дешифра-
тор команд AЛУ
Рис. 7.5. Пути передачи данных при выполнении команды adiw A, const
направление передачи
Програм- метки «Label»
мный счёт-
чик Регистры обще- Шина
го назначения данных
Шина
Память команд 32 х 8
программ
jmp Label
Дешифра-
тор команд AЛУ
Рис. 7.6. Пути передачи данных при команде безусловного перехода jump label
112
Регистр состояния. При первом взгляде на описание регистра состояния
в документации на микроконтроллеры AVR вас может удивить количество
битов в нем и кажущаяся сложность выполняемых ими функций. После
включения регистра состояния структура AVR будет иметь вид, показанный на
рисунке 7.7.
Програм-
мный счёт-
чик Шина
данных
Шина Регистры
Память команд общего наз-
программ начения
32 х 8
Дешифра-
тор команд AЛУ
Регистр состоя-
ния SREG
Таблица 7.1
Биты регистра состояния
Номер
Обозначение Назначение
бита
0 С Флаг переноса–заёма
1 Z Флаг нуля
2 N Флаг отрицательного результата
3 V Флаг переполнения
4 S Флаг знака
5 H Флаг переноса между тетрадами (полупереноса)
6 T Временный бит
7 I Бит общего разрешения прерываний
Основным признаком в регистре состояния является флаг нуля, который
устанавливается в «l», когда результатом операции является ноль. Многие
команды могут изменить этот флаг, что делает его неудобным для передачи
113
параметров. Вместо него лучше использовать флаг переноса С, который
применяется для этих целей другими процессорами во многих приложениях. В
ряде случаев более удобным может оказаться использование временного бита
Т, с помощью которого можно задавать значение одного бита, в качестве
условия ветвления программы.
Как и в большинстве микроконтроллеров и микропроцессоров, флаг
переноса–заёма С в AVR устанавливается после каждой операции сложения
или вычитания. Он также используется для временного сохранения старшего
или младшего бита операнда при операциях обыкновенных и циклических
сдвигов, что типично для многих микроконтроллеров. При сложении флаг
переноса устанавливается в «l», если результат больше $FF, а при вычитании –
если результат меньше нуля.
Флаг переноса между тетрадами Н (полуперенос) устанавливается после
выполнения сложения или вычитания, в процессе которого произошел перенос
из младшей или заем в старшей тетраде (полубайте). Например, если прибавили
7 к содержимому регистра, в котором хранилось число 9:
add R16, R17 ; R16 = 9, R17 = 7
Регистр R17 содержит число 7, и после сложения с содержимым R16, в
котором хранится 9, результатом будет число $10, которое не может быть
размещено в младшей тетраде. В этом случае будет установлен флаг Н в реги-
стре состояния. Если младшая тетрада результата имеет значение меньшее, чем
10, то флаг Н будет сброшен в «0».
Как и флаги полупереноса для всех других контроллеров, бит Н меняется
при переносе–заёме из младшего шестнадцатиричного разряда (тетрады). Его
изменение не основано на десятичном результате операции. Но если требуется
контролировать декадный перенос при операциях с двоично-десятичными
числами, бит полупереноса может быть непосредственно использован при
выполнении операции сложения, как это показано выше. Если результат
операции больше или равен 10, то устанавливается значение флага Н = 1,
которое указывает, что правильный двоично-десятичный результат может быть
получен путем прибавлении числа 6.
Использование флагов отрицательного результата N, переполнения V и
знака S может показаться довольно сложным, если рассматривать, как они
устанавливаются в «1» или сбрасываются в «0» при арифметических
операциях. Следует понять их назначение, и тогда их применение станет
простым и логичным. Эти биты надо проверять только после операции
сложения или вычитания, в процессе которых используются или получаются
отрицательные числа, представляемые в дополнительном коде.
114
Флаг отрицательного результата N устанавливается в «1», если старший
(знаковый) разряд результата (бит 7) равен «1». Когда знаковый разряд
установлен в «1», это часто означает, что результат отрицателен. Следует,
однако, отметить, что знаковый разряд может быть установлен в «1» и в
результате логической операции. В этом случае знаковый разряд не должен
использоваться в каких-либо других целях, кроме указания на то, что он был
установлен в 1 после соответствующей операции.
Флаг переполнения V устанавливается при сложении или вычитании двух
чисел со знаком, представленных в дополнительном коде (дополнение до двух)
в случае, если значение полученного результата выходит за пределы
допустимого диапазона, который для восьмибитового числа со знаком со-
ставляет от минус 128 до плюс 127. При сложении двух положительных чисел
флаг V устанавливается в «1» если сумма больше 127, в случае сложения двух
отрицательных чисел – если результат меньше минус 128. Этот флаг
показывает, что результат не является правильным 8-разрядным числом со
знаком.
Вы можете сказать, что на самом деле результат является правильным,
только его нельзя разместить в 8-разрядном регистре, и будете правы. Для раз-
решения этой ситуации служит флаг знака S, который позволяет представить
результат сложения или вычитания 8-разрядных чисел в дополнительном коде в
виде 9-разрядного числа со знаком. Если после операций сложения или
вычитания чисел со знаком флаг переполнения V установлен в «1», то резуль-
татом будет 9-разрядное число со знаком, причем старшим (знаковым) раз-
рядом числа является флаг S, а восемь бит результата будут храниться в 8-
разрядном регистре–приемнике.
Бит Т – временный бит, который используется для хранения результата
команд BST и BLD или для передачи однобитовых параметров. Хотя бит Т не
изменяется никакими другими командами, он должен быть сохранен вместе с
другими битами регистра состояния при выполнении прерываний или
подпрограмм, которые могут изменить содержимое этого регистра.
Последним является общий флаг разрешения прерываний I. Когда он ус-
тановлен в «1», запросы прерываний будут обслуживаться. Если флаг I
сброшен в «0», то обслуживание прерываний будет отложено до тех пор, пока
этот флаг не будет установлен в «1».
Адресация устройств ввода-вывода и памяти SRAM. Понимание того,
как адресуются регистры общего назначения, а как – SRAM, может быть
затруднено. Это верно, когда контроллеры младших моделей семейства
AVR1200 работают вместе с контроллерами AVR8515, реализующими полный
набор функций. Реализация обращения к памяти, регистрам общего назначения
115
и регистрам ввода-вывода может показаться сложной, так как существует два
способа обращения к ним. Первый способ – прямое обращение к каждой из
этих областей данных. Этот способ прямого доступа является основным при
выполнении арифметических операций. Второй способ доступа объединяет все
три области регистров и памяти, включая внешнюю память, образуя общее
адресное пространство данных (рисунок 7.8).
Регистры ввода-вывода – это 64-байтовый блок, который содержит как
регистры управления процессором, так и регистры интерфейса ввода-вывода.
Команды in и out используются для обмена данными между РОН и регистрами
ввода-вывода. Внутренняя память SRAM – это блок оперативной памяти для
хранения переменных. Эта память доступна при помощи команд load и store,
которые позволяют также обращаться к РОН и регистрам ввода-вывода,
которые располагаются в соответствующих областях адресного пространства
данных.
Внешняя
память
$FFFF
117
адресации регистров и оперативной памяти. Адрес может формироваться
разными способами, например, он может быть указан в команде или
определяться с использованием индексного регистра
Младшие модели микроконтроллеров AVR1200 не содержат оперативной
памяти SRAM и не выполняют команды обращения к РОН и регистрам ввода-
вывода, использующие единое адресное пространство данных (рисунок 7.10).
В этой модели имеются три отдельных адресных пространства для памяти
программ, РОН и регистров ввода-вывода, которые не объединяются в единое
адресное пространство данных. К регистрам ввода-вывода можно обратиться
только при помощи команд in и out, а команды load, store фактически не
используются. Младшие модели AVR имеют также только один индексный
регистр Z, расположенный по адресам $1E–$1F в области регистров общего
назначения. Этот индексный регистр может использоваться для выборки
данных, хранящихся или в РОН, или в памяти программ.
Шина
адреса
Регистры вво-
Шина да–вывода
Програм-
команд
мный счёт- Шина
чик Память SRAM внут- данных
ренняя / внешняя
Адрес РОН
Память
программ X
Y
Z
Дешифра-
тор команд
АЛУ
Регистр со-
стояния
SREG
118
Память Область регист- Область реги-
программ ров общего на- стров ввода–
значения вывода
$0000 $0000
32 х 8 64 х 8
$003F
$001F
Команды
Стек про-
граммного
счётчика
Трёхуров-
невый стек Шина
Регистры
данных
ввода–
Шина Програм- вывода
команд мный счёт-
чик
Адрес
РОН
Память
программ
Z
Дешифра-
тор команд AЛУ
Шина
адреса
Регистр состоя-
ния SREG
120
Програм-
мный счёт-
Шина чик к памяти
команд программ
Указатель Шина
стека адреса
SRAM
121
Шина
адреса
Регистры вво-
Шина Указатель
да–вывода
команд стека
Шина
Память SRAM внут- данных
ренняя / внешняя
Програм- Адрес РОН
мный счёт-
чик X
V
Z
Память
программ
Дешифра-
тор команд АЛУ
Регистр со-
стояния
SREG
122
7.16).
Регистры общего
назначения
Команда
0
Код опера- Адрес Код опера-
ции ции
1F
Рис. 7.15. Прямая адресация в AVR
Регистры общего
назначения
Команда
0
Код опера- Адрес 1 Адрес 2 Код опера-
ции ции
1F
Рис. 7.16. Прямая адресация AVR к двум РОН
Команда
123
16 старших регистров общего назначения, имеющих адреса с $10 по $1F.
Последняя форма прямой адресации, применяемая для доступа ко всему
объему адресуемой памяти, использует второе слово команды для указания
16-разрядного адреса. При этом способе адресации данные, размещенные в
любой точке адресуемой памяти, поступают в РОН или выбираются из них.
Есть две особенности, на которые стоит обратить внимание при такой адре-
сации. Первая особенность – опять доступны только 16 старших РОН. Вторая
особенность – команды с такой адресацией не реализуются в младших моделях
AVR1200. В этих моделях для передачи данных между РОН и набором
регистров ввода-вывода используются команды in и out, реализующие прямую
адресацию двух регистров.
Последний способ обращения к данным – косвенная адресация. По
технической документации на микроконтроллеры AVR видно, что в ней
используется пять рисунков для описания этого способа адресации, реализация
которого иллюстрируется на рисунке 7.18. На этом рисунке показана только
косвенно-регистровая адресация и не приведены ее варианты с предекрементом
и постинкрементом. Основные команды косвенной адресации используют
содержимое индексных регистров в качестве адреса для выборки данных. Это
похоже на индексную адресацию в большинстве других микроконтроллеров.
Это единственный режим, доступный в младших моделях AVR, где для
обращения к РОН может использоваться только индексный регистр Z, а РОН и
регистры ввода-вывода не образуют общее регистровое пространство.
Регистры общего
назначения
Команда
Выводы
Эффективность микроконтроллеров семейства AVR поддерживается
наличием флаш-памяти для хранения программ с возможностью
внутрисхемного программирования. Но наличие только 32 регистров общего
назначения является ограничением при написании прикладных программ.
Новые модели AVR обладают дополнительными периферийными
устройствами и вариантами реализации памяти, что значительно обогащает
данное семейство микроконтроллеров.
125
Контрольные вопросы
1. Архитектура процессора микроконтроллеров семейства AVR.
2. Аппаратные средства микроконтроллеров семейства AVR.
3. Прерывания в системе микроконтроллеров семейства AVR.
4. Программирование в системе микроконтроллеров семейства AVR.
5. Средства разработки ПО для микроконтроллеров семейства AVR.
6. Система команд микроконтроллеров семейства AVR.
7. Битовые команды микроконтроллеров семейства AVR.
126
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
127
ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ
БИС, СБИС – категории интегральных схем (большие интегральные
схемы, сверхбольшие интегральные схемы). Классификация ведётся по числу
элементов, расположенных на полупроводниковом кристалле: несколько
десятков элементов – это интегральные схемы малой степени интеграции. При
наличии элементов в количестве от 100 и до 1 000 шт. – средней степени
интеграции; при количестве от 1 000 и до 10 000 – большой степени интеграции
(БИС); и при числе более 10 000 – сверхбольшие интегральные схемы (СБИС).
Современное состояние технологий электронной промышленности позволяет
создавать СБИС при количестве элементов в несколько миллионов на
кристалле площадью примерно 1717 мм2.
ПЛИС – (EPLD, Erasable (Electrically) Programmable Logic Device)
перепрограммируемая логическая интегральная схема: стираемое
программируемое логическое устройство или логическое устройство с
электрическим программированием.
ШИМ – широтно-импульсная модуляция. ШИМ есть импульсный сигнал
постоянной частоты и переменной скважности, то есть отношения периода
следования импульса к его длительности. С помощью задания скважности
(длительности импульсов) можно менять среднее напряжение на выходе ШИМ.
ALU – арифметико-логическое устройство;
ARM – семейство процессоров ARM стандарт де-факто для
встраиваемых и мобильных систем. Представляет собой некоторый
конструктор, с помощью которого заказчик набирает себе те возможности,
которые ему нужны. Поэтому линейка продуктов фирмы ARM состоит из
базовых процессорных ядер и их «дочек», в которых реализованы различные
дополнительные возможности. В настоящее время лицензируются четыре
полностью 32-разрядных базовых ядра: ARM7, ARM9, ARM9E-S и ARM10.
Известны два семейства совместимых с ARM процессоров: StrongARM,
разработанное совместно с корпорацией Digital Electronics, и XScale,
поставляемое корпорацией Intel.
ASIC (Application-Specific Integrated Circuit) – проблемно-ориентиро-
ванная (специализированная) интегральная микросхема (заказная). Микросхема
для выполнения набора специальных функций, например, для управления
устройством, обычно разрабатываемая под конкретного заказчика. Их новой
разновидностью стали программируемые заказные интегральные схемы
(Programmable ASIC), функциональность которых можно со временем
наращивать.
CAD (Computer-Aided Design) – система автоматизированного
проектирования, САПР.
128
CAN (Controller Area Network) – протокол CAN – асинхронная
последовательная коммуникационная шина, использующая в качестве среды
передачи витую пару проводов. Протокол был предложен фирмой Bosch в
конце 1980-х годов для автомобильной промышленности (бортовая сеть
автомашины), затем он был стандартизован (ISO-11898) и SAE. Протокол CAN
реализует первый и второй уровень эталонной модели OSI. При скорости
передачи 1 Мбит/с длина шины может достигать 40 метров. При меньших
скоростях длину можно увеличить до километра. CAN присутствует в двух
версиях: версия А задает 11-битную идентификацию сообщений (т. е. в системе
может быть 2048 сообщений ), версия B – 29-битную (536 миллионов
сообщений). Версия В, часто именуемая full-CAN, вытесняет версию А,
которую называют также basic-CAN.
CISC (Complex Instruction Set Computers) – устройства с полной
(сложной) системой команд. Выполняют большой набор команд с развитыми
возможностями адресации (непосредственная, индексная, и т. д.). Это
традиционная архитектура процессоров с широким набором различных
машинных команд переменной длины и разным временем их исполнения в
противоположность RISC-процессорам. Процессоры семейств 80x86 и 680x0
относятся к CISC-процессорам, однако часто внутри самих CISC-процессоров
используется RISC-архитектура ALU, CPU, EPIC, RISC, VLIW.
CMOS (Complementary Metal-Oxide Semiconductor, Complementary
MOS) – комплементарная структура металл–оксид–полупроводник, КМОП:
технология изготовления микросхем – характеризуется меньшим
быстродействием, но высокой плотностью размещения элементов,
устойчивостью к шумам и малым потреблением энергии.
CPU (Central Processing Unit) – центральный процессор – часть
компьютера, непосредственно выполняющая машинные команды, из которых
состоят программы. Содержит регистровый файл (register file), устройство
управления (control unit), устройство управления памятью (MMU),
арифметико-логическое устройство (ALU) и другие блоки.
DC – дешифратор адреса.
DMA (Direct Memory Access) – контроллер прямого доступа к памяти –
прямой доступ к памяти (ПДП) – метод высокоскоростной пересылки данных
по общей шине между ОЗУ и периферийным устройством (например, жёстким
диском) минуя процессор, который на это время отключается от всех шин. ПДП
несколько замедляет работу процессора. Иногда под DMA подразумевается
микросхема DMAC, осуществляющая контроль обмена в режиме ПДП. DMA –
это частный случай bus mastering (захват шины).
DPH, DPL – однобайтовые регистры специального назначения.
DPTR – регистр–указатель.
129
DSP – цифровые сигнальные процессоры. Цифровой сигнальный
процессор (Digital signal processor; сигнальный микропроцессор; процессор
цифровых сигналов) – специализированный микропроцессор, предназначенный
для цифровой обработки сигналов, обычно в реальном масштабе времени.
EEPROM (E2PROM) (Electrically Erasable Programmable Read-Only
Memory) – электрически стираемое программируемое постоянное
запоминающее устройство (ЭСППЗУ) – электрически стираемая память – тип
полупроводникового ППЗУ, в котором для стирания и перепрограммирования
используется электрические сигналы, подаваемые либо из компьютера, либо с
внешнего устройства (программатора) на специальные ножки микросхемы.
Допускает от 10 до 100 тыс. циклов перезаписи. ЭСППЗУ заметно вытеснено
флэш-памятью.
EPIC (Explicitly Parallel Instruction Computing) – вычисления с
заданным параллелизмом команд. Технология EPIC – технология,
используемая в архитектуре IA-64 набора команд 64-разрядного процессора
Merced, разработанного корпорациями Intel и Hewlett-Packard. В этой
технологии компилятор явным образом говорит процессору, какие команды
можно исполнить параллельно, а какие зависят от других команд.
Ethernet (сеть, стандарт, технология) – протокол канального уровня и
передающая среда ЛВС с шинной архитектурой, разработанная в 1973 г.
Регламентируется стандартами IEEE 802.3 и ISO 8802.3. Регламентирует в
качестве передающей среды коаксиальный кабель, метод управления доступом
CSMA/CD, скорость передачи данных 10 Мбит/с, размер пакета от 72 до
1526 байтов, а также метод кодирования данных. В одной сети Ethernet может
работать до 1024 рабочих станций. Развитие этой технологии для сетей
100 Мбит/с – Fast Ethernet.
FireWire – название высокоскоростной последовательной локальной
шины P1394 фирмы Apple. FireWire (в процессе стандартизации она получила
название IEEE 1394) обеспечивает скорость передачи до 400 Мбит/с,
поддерживает P&P, а также позволяет подсоединять несколько различных
устройств (теоретически – до 63) через один разъём.
Flash – флэш-память: энергонезависимая электрически
перепрограммируемая постоянная память, которая может быть записана и
прочитана так же, как и динамическое ОЗУ, но сохраняет своё содержимое без
питания и регенерации, как EPROM. Применяется в очень многих видах
электронных устройств.
FPGA (Field Programmable Gate Array) – программируемая вентильная
матрица, базовый матричный кристалл (БМК): тип вентильной матрицы,
которая может быть запрограммирована самим пользователем (в условиях
эксплуатации).
HDD – жёсткий диск (винчестер).
130
host (хост) – общий термин, описывающий нечто, содержащее ресурс и
предоставляющее к нему доступ. Часто используется как префикс, например
host computer.
ICE (in-circuit emulator) – внутрисхемный эмулятор – программно-
аппаратное средство разработки прототипных, например процессорных, плат.
Вместо процессора подсоединяется плата эмулятора, который вырабатывает
все необходимые сигналы и исполняет программы, но с трассировкой основных
сигналов и расширенными возможностями отладки.
ISP (In-System Programming) – внутрисистемное программирование –
внутрисхемное программирование установленных на плату ПЛИС.
MIPS – (Microprocessor without Interlocked Pipeline Stages)
микропроцессор без аппаратных блокировок между пятью ступенями
конвейера. MIPS-процессор, MIPS-архитектура – это проект открытой
процессорной RISC-архитектуры, разрабатывавшийся в середине 80-х годов
группой под руководством профессора Дж. Хеннесси в Стэнфордском
университете для исполнения ОС Berkeley Standard UNIX, а также
коммерческие варианты процессоров, выпускаемые компаниями AMD, BRCM,
IDT, Marvell, NEC, PMC, Toshiba.
MUX – мультиплексоры.
OSI (Open Systems Interconnection) – взаимодействие открытых систем –
эталонная модель OSI – семиуровневая модель протоколов передачи данных
(стандарт ISO-7498) для обеспечения взаимодействия открытых систем. В
модели OSI все сетевые функции разделены на уровни таким образом, что все
вышележащие уровни пользуются услугами нижележащих через
стандартизованные интерфейсы. Такая структура позволяет модифицировать
любой из уровней, не затрагивая остальные. Уровни OSI снизу вверх:
физический (physical layer), канальный (data link layer), сетевой (network
layer), транспортный (transport layer), сеансовый (session layer),
представления данных (presentation layer) и прикладной (application layer).
Поскольку уровни с первого по третий управляют физической доставкой
данных по сети, то их иногда называют уровнями среды передачи данных
(media layers).
РС – счётчик команд.
phase-locked loops – система фазовой автоподстройки частоты.
PowerPC (Power Performance Chip) – процессор PowerPC – это
семейство 32- и 64-разрядных микропроцессоров, разработанных альянсом
IBM, Motorola и Apple Computer (1993 г.). Широко применяются в
компьютерах PowerMac (Apple Computer), RS/6000 и AS/400 (IBM).
Базируется на RISC-архитектуре.
RAM (ОЗУ) – оперативное запоминающее устройство;
ROM (ПЗУ) – постоянное запоминающее устройство;
131
RISC (Reduced Instruction Set Computer) – устройства с сокращённой
системой команд. RISC-архитектура – архитектура процессоров, построенная
на основе сокращённого набора команд (их обычно в три раза меньше, чем у
аналогичных по разрядности обычных CISC-процессоров). Характеризуется
наличием команд фиксированной длины, большого количества регистров,
операций типа регистр-регистр (всех, кроме команд чтения и записи в память),
а также отсутствием косвенной адресации. Концепцию RISC разработал Джон
Кок из IBM Research, название придумал профессор университета в Беркли
Дэвид Паттерсон. Одним их недостатков RISC-архитектуры считается
фиксированная длина команд, требующая для хранения программы большего
объёма памяти. С другой стороны, она сильно упрощает конвейеризацию. Три
наиболее распространённых RISC-архитектуры: MIPS, PowerPC и ARM.
SoC (system-on-a-chip) – система на кристалле – однокристальная
система объединяет в одном кристалле все или большую часть элементов
цифровой системы. Если в качестве элементной базы для SoC выбрана ПЛИС
(программируемая логическая интегральная схема), то используется также
термин SoPC. Если SoC содержит несколько процессоров, то она именуется
однокристальным мультипроцессором (MPSoC).
SPI (Serial Peripheral Interface) – последовательный интерфейс
(периферийных устройств): передача по нему идёт бит за битом. Часто так
именуется БИС 8051 корпорации Intel, в процессорах встроенных систем
обычно интегрируется в кристалл процессора.
UART (Universal Asynchronous Receiver/Transmitter) – универсальный
асинхронный приёмопередатчик – микросхема типа Intel 8251, 8250 или 16450,
16550A, преобразующая данные, поступающие по параллельным линиям, в
данные, передаваемые последовательно, и наоборот. Так как работа
передатчика и приёмника не синхронизируется, поток данных должен
содержать сигналы о начале и конце байта данных – стартовый и стоповый
биты.
USART (Universal Synchronous-Asynchronous Receiver/Transmitter) –
универсальный синхронный/асинхронный приемопередатчик.
USB (Universal Serial Bus) – универсальная последовательная шина –
стандарт, предложенный в 1995 г. для обмена данными по недорогой шине
между персональными компьютерами и среднескоростными периферийными
устройствами. Подключение устройства не требует перезагрузки компьютера,
переконфигурирования системы или установки интерфейсной карты.
Распознавание устройства и установка соответствующего драйвера
выполняется компьютером автоматически, без вмешательства человека. К
одному порту USB можно последовательно присоединить до 127 устройств.
USB-кабель содержит четыре провода: два – витая пара, питание 5 В и общий
провод. Таким образом, через него можно запитывать маломощные устройства.
132
Поддерживается технология plug and play, а также «горячая» замена. Развитие
стандарта – принятый
в 2000 г. более быстрый совместимый с предыдущей версией стандарт USB 2.0,
обеспечивающий пропускную способность до 480 Кбайт/с.
VLIW (Very Long Instruction Word) – архитектура процессора с
командными словами очень большой длины. В такой команде объединено
несколько обычных команд, которые выполняются одновременно
(параллельно) разными функциональными блоками процессора для повышения
его быстродействия. Рост производительности достигается за счет того, что
процессору не нужно тратить время на организацию параллелизма на уровне
команд (ILP). Группирование параллельно исполняемых операций выполняется
компилятором. Таким образом, характеристики компьютера будут сильно
зависеть от качества компилятора (а ручная оптимизация программы очень
сложна). Архитектура VLIW-компьютеров была предложена в 1979 г.
сотрудником Йельского университета Дж. Фишером.
134
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
А Запись информации ............................. 66
Адресация непосредственная ............. 95 Запуск устройства .............................. 22
– прямая регистровая ........................ 105 И
– внешней памяти .............................. 110 Инициализация .................................... 22
Адресация косвенная .................. 97, 118 Интерфейс внешний ............................ 69
– регистровая .................................... 119 Интегрирующий (АЦП) ...................... 57
Арифметико-логическое Инструкции переходов ....................... 85
устройство............................................. 26 К
Арифметические команды .................. 90 Кадр ...................................................... 55
Архитектура микропроцессорной КМОП ................................................... 19
системы .................................................. 7 Код дополнительный .......................... 27
– Принстонского университета ............ 8 Кодирование «манчестерское» ........... 45
– Гарвардского университета ............... 9 Коллизия .............................................. 52
Б Компаратор аналоговый ..................... 58
Бит чётности ........................................ 42 Компилятор-ассемблер ....................... 65
– защиты ............................................... 63 Косвенная адресация .......................... 91
– прямоадресуемый ............................. 72 Л
Булевы операции ................................. 85 Логические команды ........................... 81
Быстрый режим ................................... 52 М
В «Манчестер» ........................................ 44
Ввода-вывода порт .............................. 13 Микроконтроллер встраиваемый ....... 14
– адресация ........................................ 109 – с внешней памятью .......................... 15
Ведомый ......................................... 48, 55 МНОП-транзистор .............................. 68
Ведущий ............................................... 48 Модели младшие ................................. 88
Вектор прерывания ............................. 33 – среднего уровня ................................ 88
Вывод порта ......................................... 40 Монтажное И .................................41, 49
Выборка кристалла .............................. 46 Мощность собственная ....................... 20
Вывод синхронный ............................. 46 – ввода-вывода ..................................... 21
Г – в «спящем» режиме .......................... 21
Генератор тактовый ............................ 23 Н
Д Набор команд ....................................... 81
Дополнения механизм образования ... 28 Напряжения преобразование .............. 37
Данных ввод ........................................ 40 Начальная установка ........................... 76
– адресация ........................................ 109 О
– команды передачи ........................... 84 Обмен последовательный ................... 42
Доминантное (значение) ..................... 56 – асинхронный ..................................... 42
Ж – синхронный ....................................... 45
Ждущее состояние .............................. 49
ОмК (однокристальный
З микроконтроллер) ................................. 6
135
ОмЭВМ (однокристальная – общего назначения ................... 94, 106
микроЭВМ) ............................................ 4 – состояния ............................. 32, 83, 107
Оперативная память ............................ 13 – восстановление ................................. 33
Организация раздельными шинами ... 10 Регистров адресация ........................... 95
– изолированными шинами ................ 10 Регистровые инструкции .................... 81
– мультиплексируемой шиной ........... 11 Регистровые банки .............................. 93
– общими шинами ............................... 11 Регистры основные ............................. 94
П – индексные ....................................... 111
Память данных .................................... 78 Рeгистpy доступ ................................... 94
– программ ..................................... 13, 72 Редактор исходных текстов ................ 65
– внешняя ............................................. 72 Режимы адресации .............................. 80
– программируемая ............................. 62 Режим ожидания ................................. 92
Параллелизм .......................................... 9 Рецессивное (значение) ....................... 56
«Плавающее» состояние ..................... 50 С
Подпрограммы .................................... 30 Сброса цепь .......................................... 13
Поллинг ................................................ 32
Симметричность процессора ................ 7
Полуперенос ...................................... 108
Симулятор ............................................ 65
Порог переключения ........................... 20
Синхронизация микроконтроллера .... 73
Порт последовательный ...................... 13
Синхросигнал ...................................... 43
– ввода-вывода ..................................... 40
Система команд ................................... 80
Прерывания .................................. 31, 115
Система на кристалле ........................... 4
– аппаратные ........................................ 33
Слово состояния .................................. 79
– вложенные ........................................ 32
Способ ввода ....................................... 57
– вектор ................................................ 33
– запрос ................................................ 31 Стандартный режим ............................ 50
– обработчик ........................................ 32 Старт-бит ............................................. 42
– программные ..................................... 33 Стек .................................................... 113
Программатор ...................................... 66 Стоп-бит ............................................... 43
Программа-монитор ............................ 64 Схема с открытым стоком .................. 41
Программирование внутрисистем- Счётчик программный .................. 24, 99
ное ........................................................ 63 Т
Промежуточное преобразование ........ 57 Таймер ............................................ 13, 34
Протокол асинхронной последова- – сторожевой ........................................ 13
тельной связи ....................................... 43 Тактовый генератор ............................ 13
– синхронной последовательной Тахометр .............................................. 35
связи ..................................................... 46 У
– CAN ................................................... 55 Устройства периферийные ............... 101
– I2C ..................................................... 49 Управляющий автомат ........................ 69
– Microwire ........................................... 48 Указатель стека ................................... 79
– RS-232 ............................................... 43
– SPI ...................................................... 47
Р Ф
Регистр специальных функций .......... 71
Файл входных воздействий ................ 65
136
Флаг ...................................................... 92 Чтение информации ............................ 67
Формат команды ................................. 51 Ш
Функции ............................................... 30 Шины разрядные ................................. 67
Ц ШИМ .................................................... 35
Центральное процессорное Э
устройство .............................................12 Эмулятор схемный ........................ 64, 66
Цикл записи ......................................... 75
– чтения .......................................... 75, 76
Цифровой порт .................................... 13
Цифровой сигнальный процессор ...... 16
137
ПРИЛОЖЕНИЯ
Приложение А
Характеристики отечественных
однокристальных микроЭВМ
Примером последовательного развития отечественных ОмЭВМ может
служить таблица А1 [6, 7]. Наиболее доведённой до практического применения
являлась серия 1850. Расположение названий типов ОмЭВМ по строкам
отражает развитие этого направления во времени. Заметен рост
вычислительных ресурсов за счёт увеличения ёмкости ПЗУ программ, в том
числе и в появлении внешнего ПЗУ программ. Улучшалась технология
изготовления ПЗУ, ведущая к программированию с помощью простых
аппаратных средств, расширялась система команд. Возрастала разрядность
шины данных и увеличивалось значение тактовой частоты. При этом снижалась
мощность, потребляемая от источника питания.
Появились встроенные таймеры, обеспечивалась обработка запроса на
прерывание работы основной программы. Также появились внутренние АЦП,
ЦАП и входное УВХ.
Таблица А1
Характеристики БИС отечественных ОмЭВМ
Тип (аналог) Значения параметров
КБ1013ВК1-2 Разрядность шины данных: 4. РПИТ: 200 мкВт. Внутреннее ПЗУ
программ: 29 страниц 63×8 бит.
КБ1013ВК4-2 РПИТ: 200 мкВт. Внутреннее ПЗУ программ: 44 страницы 63х8 бит.
К1813ВЕ1 fT: 6,67 МГц. Внутреннее ПЗУ программ: 4608 бит (192х24). Тип
(i2920) внутреннего ПЗУ: УФ ППЗУ. Внутреннее регистровое ОЗУ: 1 Кбит
(40х25). Примечание: 21 команда; внутренние АЦП, ЦАП; входное УВХ.
КР1814ВЕ2 Разрядность шины данных: 4. Внутреннее ПЗУ программ: 1 К бит
(TMS1000NLL) (16х64 байт). Тип внутреннего ПЗУ: масочное. Внутреннее регистровое
ОЗУ: 64х4 бит. Примечание: 43 команды.
К1814ВЕ3 Разрядность шины данных: 4. fT: 0,35 МГц. Внутреннее регистровое
(TMS1099) ОЗУ: 64х4 бит. Примечание: 43 команды.
КР1814ВЕ4 Разрядность шины данных: 4. Внутреннее ПЗУ программ: 1 Кбит. Тип
(TMS1200) внутреннего ПЗУ: масочное. Внутреннее регистровое ОЗУ: 64х4 бит.
Примечание: 43 команды.
КР1816ВЕ31 Разрядность шины данных: 8. fT: до 12 МГц. Порты ввода-вывода:
(i8031АН) (кол-во)х(разрядн.): 4х8. UПИТ: 5 В; IПИТ: 150 мА. Внутреннее
регистровое ОЗУ: 128х8 бит. Внешняя память программ: 64 Кх8.
Внешняя память данных: 64 Кх8. Кол-во таймеров/разрядность: 2/16.
Число источников прерываний; внешних выводов/приоритет: 5; 2/2.
Продолжение табл. А.1
138
КР1816ВЕ35 Разрядность шины данных: 8. fT: 6 МГц. Порты ввода-вывода: (кол-
(i8035) во)х(разрядн.): 3х8. UПИТ: 5 В; IПИТ: 135 мА. Внутреннее регистровое
ОЗУ: 64х8 бит. Внешняя память программ: 4 Кх8. Внешняя память
данных: 384х8. Кол-во таймеров/разрядность: 1/8.
КР1816ВЕ39 Разрядность шины данных: 8. fT: 11 МГц. Порты ввода-вывода: (кол-
(i8039) во)х(разрядн.): 3х8. UПИТ: 5 В; IПИТ: 110 мА. Внутреннее регистровое
ОЗУ: 128х8 бит. Внешняя память программ: 4 Кх8. Внешняя память
данных: 384х8. Кол-во таймеров/разрядность: 1/8.
КР1816ВЕ48 Разрядность шины данных: 8. fT: 6 МГц. Внутреннее ПЗУ программ:
(i8048) 1 Кх8 бит. Тип внутреннего ПЗУ: УФ ППЗУ. Внутреннее регистровое
ОЗУ: 64х8 бит. Три 8-разрядных порта ввода-вывода.
КР1816ВЕ49 Разрядность шины данных: 8. fT: 11 МГц. Порты ввода-вывода: (кол-
(i8049) во)х(разрядн.): 3х8. Внутреннее ПЗУ программ: 2 Кх8 бит. Тип
внутреннего ПЗУ: масочное (или УФ ППЗУ, без ПЗУ). Внутреннее
регистровое ОЗУ: 128х8 бит. Внешняя память программ: 4 Кх8.
Внешняя память данных: 256х8. Кол-во таймеров/разрядность: 1/8.
Примечание: 111 команд.
КР1816ВЕ51 Разрядность шины данных: 8. fT: 12 МГц. Внутреннее ПЗУ программ:
(i8051АН) 4 Кх8 бит. Тип внутреннего ПЗУ: масочное. Внутреннее регистровое
ОЗУ: 128х8 бит.
КР1816ВЕ751 Разрядность шины данных: 8. fT: до 12 МГц. Порты ввода-вывода:
(i8749Н) (кол-во)х(разрядн.): 4х8. UПИТ: 5 В; IПИТ: 220 мА. Внутреннее ПЗУ
программ: 4 Кбит. Тип внутреннего ПЗУ: УФ ППЗУ. Внутреннее
регистровое ОЗУ: 128х8 бит. Внешняя память программ: 64 Кх8.
Внешняя память данных: 64 Кх8. Кол-во таймеров/разрядность: 2/16.
Число источников прерываний; внешних выводов/приоритет: 5; 2/2.
КР1820ВЕ1 Разрядность шины данных: 4. fT: 4 МГц. UПИТ: 5 В; IПИТ: 35 мА.
(СОР402) Внутреннее регистровое ОЗУ: 64х4 бит. Число источников
прерываний; внешних выводов/приоритет: 1;. Примечание: 49 команд.
К1820ВЕ2 Разрядность шины данных: 4. fT: 4 МГц. UПИТ: 5 В; IПИТ: 35 мА.
(СОР420) Внутреннее ПЗУ программ: 1024х8 бит. Тип внутреннего ПЗУ:
масочное. Внутреннее регистровое ОЗУ: 64х4 бит. Число источников
прерываний; внешних выводов/приоритет: 1;. Примечание: 49 команд.
КР1830ВЕ31 Разрядность шины данных: 8. fT: до 12 МГц. Порты ввода-вывода:
(i80С31ВН) (кол-во)х(разрядн.): 4х8. UПИТ: 5 В; IПИТ: 18 мА. Внутреннее регистровое
ОЗУ: 128х8 бит. Внешняя память программ: 64 Кх8. Внешняя память
данных: 64 Кх8. Кол-во таймеров/разрядность: 2/16. Число источников
прерываний; внешних выводов/приоритет: 5; 2/2.
КР1830ВЕ35 Разрядность шины данных: 8. fT: до 6 МГц. Порты ввода-вывода: (кол-
(i80С35) во)х(разрядн.): 3х8. UПИТ: 5 В; IПИТ: 8 мА. Внутреннее регистровое ОЗУ:
64х8 бит. Внешняя память программ: 4 Кх8. Внешняя память данных:
384х8. Кол-во таймеров/разрядность: 1/8.
КР1830ВЕ48 Внутреннее ПЗУ программ: 1 Кх8. Тип внутреннего ПЗУ: масочное.
(i80С48)
КР1830ВЕ51 Внутреннее ПЗУ программ: 4 Кбит. Тип внутреннего ПЗУ: масочное.
(i80С51ВН)
Окончание табл. А1
КР1830ВЕ753 Разрядность шины данных: 8. Порты ввода-вывода: (кол-во) х
139
(i87С51) (разрядн.): 4х8. UПИТ: 5 В. Внутреннее ПЗУ программ: 4 Кбит. Тип
внутреннего ПЗУ: УФ ППЗУ. Внутреннее регистровое ОЗУ: 128х8 бит.
Внешняя память программ: 64 Кх8. Внешняя память данных: 64 Кх8.
Кол-во таймеров/разрядность: 2/16. Число источников прерываний;
внешних выводов/приоритет: 5; 2/2.
КР1835ВЕ31 Разрядность шины данных: 8. fT: до 12 МГц. Порты ввода-вывода:
(i80C31ВН) (кол-во)х(разрядн.): 4х8. UПИТ: 5 В; IПИТ: 13 мА. Внутреннее регистровое
ОЗУ: 128х8 бит. Внешняя память программ: 64 Кх8. Внешняя память
данных: 64 Кх8. Кол-во таймеров/разрядность: 2/16.
КР1835ВЕ39 Разрядность шины данных: 8. Порты ввода-вывода: (кол-во) х
(i8039) (разрядн.): 3х8. Внутреннее регистровое ОЗУ: 128х8 бит. Внешняя
память программ: 4 Кх8. Внешняя память данных: 256х8. Кол-во
таймеров/разрядность: 1/8.
КР1835ВЕ49 Внутреннее ПЗУ программ: 2 Кх8. Тип внутреннего ПЗУ: масочное.
(i8049)
КР1835ВЕ51 Внутреннее ПЗУ программ: 4 Кбит. Тип внутреннего ПЗУ: масочное.
(i80C51ВН)
1835ВГ14 Разрядность шины данных: 8. fT: 8 МГц. Порты ввода-вывода: (кол-
(вместо во) х (разрядн.): 27 линий. UПИТ: 5 В; IПИТ: 1 мА. Внутреннее ПЗУ
1816ВЕ35, программ: 2 Кбайт. Внутреннее регистровое ОЗУ: 256 байт. Кол-во
ВЕ49) таймеров/разрядность: 1/8.
КР1850ВЕ31 fT: 3,5–12 МГц. UПИТ: 5 В; IПИТ: 120 мА. Внутреннее регистровое ОЗУ:
(i8031) 128х8 бит.
КР1850ВЕ631 fT: 3,5–12 МГц. UПИТ: 5 В; IПИТ: 120 мА. Внутреннее регистровое ОЗУ:
128х8 бит.
КР1850ВЕ651 Внутреннее ПЗУ программ: 32 Кбит.
КР1850ВЕ35 . fT: 8 МГц.
(i8035)
КР1850ВЕ48 Разрядность шины данных: 8. fT: 1–6 МГц. Порты ввода-вывода: (кол-
(i8048) во)х(разрядн.): 3х8. UПИТ: 5 В. Внутреннее ПЗУ программ: 1 Кбайт. Тип
внутреннего ПЗУ: масочное. Внутреннее регистровое ОЗУ: 64 байт.
Внешняя память программ: 2 Кх8. Внешняя память данных: 256х8.
Кол-во таймеров/разрядность: 1/8. Число источников прерываний;
внешних выводов/приоритет: –; 2/1.
КР1850ВЕ50 Разрядность шины данных: 8. fT: 1–6 МГц. Порты ввода-вывода: (кол-
(i8050) во)х(разрядн.): 3х8. Внутреннее ПЗУ программ: 4 Кбайт. Тип
внутреннего ПЗУ: масочное. Внутреннее регистровое ОЗУ: 256 байт.
Число источников прерываний; внешних выводов/приоритет: 2/1.
КР1850ВЕС48 fT: до 11 МГц. Порты ввода-вывода: (кол-во)х(разрядн.): 3х8. РПИТ:
5 мВт (при частоте 1 МГц). Внешняя память программ: 2 Кх8. Внешняя
память данных: 256х8. Кол-во таймеров/разрядность: 1/8.
140
Приложение Б
Характеристики отечественных и зарубежных
однокристальных микроконтроллеров
В таблице Б.1 показано последовательное развитие отечественных ОмК
[6, 7]. Исходные опытные серии, выпущенные ещё в СССР, не были
продолжены в связи с экономической ситуацией в стране в конце 80-х – начала
90-х гг. прошлого столетия. Но первые строки таблицы показывают, что данное
направление в нашей стране развивалось в русле мировых воззрений и
тенденций.
Таблица Б.1
Характеристики отечественных БИС ОмК
(обрабатываемых
Число команд
Кбайт Адресуемая память,
Таймер, бит
Ввод-вывод
Примеч.
Память
Тип
прерываний)
141
128х19
бит;
К145ИК13 ОЗУ
(К145ИК1301) 126х4
бит;
ПЗУ
256х23
бит;
Окончание табл. Б1
К145ИК18 ОЗУ UП =
(К145ИК1802) 72х4 минус 27
бит; В
ПЗУ
128х19
бит
К145ИК19 ОЗУ UП =
(К145ИК1907, 32х4 минус 27
К145ИК1908) бит; В
ПЗУ
128х20
бит
К145ИК1801 UП =
минус 27
В
К145ИК1808 UП = 27 В
К145ИК1809, UП = 27 В
К145ИК1810
К145ИК1901, UП = 27 В
К145ИК1902
К145ИК1916 UП = 9 В
К1011ВГ101 4 ПЗУ UП = 9 В
Кх8 1024х10
бит бит
Таблица Б.2
Характеристики зарубежных БИС ОмК
142
1
Тип
SQ)
(SB)
8хС198
(SB, SP,
8хС251SA
8хС151SA
8хС196КВ
8
8
8
2
16
Разрядность ШД
16
16
МГцfT,
до 16
до 16
4
34
Кол-во линий ввода-вывода
6х8
4х8
4х8
5
5;
5;
5;
5;
IП мАUП В,
8
8
6
Внутреннее ПЗУ программ, Кбайт
8–16
8–16
143
ф. Intel
7
К
регистровое ОЗУ, байтВнутреннее
232
232
232
488–1
Адрес.
8
64 К
64 К
64 К
128–
16/16/3
11
8х10
Продолжение табл. Б2
1 2 3 4 5 6 7 8 9 10 11
8хС196КС 16 20 6х8 5; 16 488 64 К 2/16 16/16/3 8х10
8хС196КD 16 20 6х8 5; 32 1000 64 К 2/16 16/16/3 8х10
8хС196КR 16 16, 20 41– 5; 16–48 488–1,5 64 К 2/16 (6–8)
(KQ, JR, JQ, 56 К х10
KT, KS, JT,
JS, JV)
8хС196МС 16 20 50– 5; 16–32 488– 64 К 2/16 (8–14)
(MD, MH) 64 744 х10
8хС196СА 16 44– 5; 32–56 1000– 64 К – 2/16 (6–8)
(СВ) 56 1,5 К 1М х10
8хС196NT 16 25, 50 32– 5; 4–32 1000– 1М 2/16 (0–4)
(NR, NU) 56 512 х10
8хС296SA 16 50 32 5; 2 512–2 6М 2/16 нет
К
8748Н 11 27 ; 2 128 1/8 Синхр/
100 Асинхр
(11 .
МГ послед
ц) ов.
порт
ф. Motorola
M68HC05 8 (2–4) 5; до 32 до 768 64 К (1–8)
х8 х8
M68HC08 8 5; до 36 1024 64 К нет
M68HC11 8 5; до 32 1278 1М 1/16 (8–12)
х(8–10)
M68HC16 16 5; до 48 до 4 К 1М 1/16
M68300 32 3,3– flash до 0,5–10 4Г
5 64 К
ф. MicroChip
PIC16C5x 14 до 20 12– 2,5– 0,5–2 25–73 внешне 1/8
20 6,2; й нет
2 (4
МГ
ц)
PIC16C6x 14 до 20 13– 3–6; 1–4 36–192 внешне 1–3/? 3–12//
22 2 (4 й нет
МГ
ц)
PIC17Cхx 16 до 25 33 3– 2–8 232– внешне 4х? 11//
5,5; 454 й нет
2 (4
МГ
ц)
PIC17C44 33 ; 38 8 454 3/16 Синхр.
(33 /Асинх
МГ р.
ц); послед
1 ов.
мкА порт.
спя ШИМ
щ.
реж
им
144
ф. Texas Instruments (серия MSP430)
TSS400 8 2,6– 8 512 2/16 есть
5,5;
0,5
MSP430 16 2,5– 8 512 2/16 есть
5,5;
0,3
Продолжение табл. Б2
ф. Philips
8хС552 12–30 5х8 5; 8 256 (1– 15/2/ есть
68 2)/16
8хС562 12–30 5х8 5; 8 256 (1– 15/2/ есть
68 2)/16
ф. Zilog (семейство Z86)
145
Фирма Dallas Semiconductor: семейство MCS-51 серия DS5000. Их резидентная память программ
выполнена в виде NVRAM – оперативной памяти, энергонезависимость которой обеспечивается
литиевой батарейкой, встроенной непосредственно в корпус микросхемы (10-летняя гарантия на
сохранность информации). Временные характеристики полностью идентичны характеристикам
микроконтроллера 8051.
Группа микроконтроллеров DS8xC300/500, в которых типовой цикл выборки и выполнения команд
сокращён до 4-х тактов, а холостые выборки исключены: команды стали выполняться за 4 такта
тактового генератора, т. е. в 3 раза быстрее. Команды МК 8051, которые не имели холостых выборок,
в DS8xC300/500 «ускорены» в 1,5 раза.
Окончание табл. Б2
Фирма Intel: (родоначальник архитектуры семейства MCS-51) разработала архитектуру MCS-251:
24-разрядное линейное адресное пространство, обеспечивающее адресацию до 16 Мбайт памяти;
регистровая архитектура, допускающая обращение к регистрам как к байтам, словам и двойным
словам; страничный режим адресации для ускорения выборки команд из внешней программной
памяти; очередь инструкций; расширенный набор команд, включающий 16-битовые арифметические
и логические операции; расширенное адресное пространство стека (до 64 Кбайт); выполнение самой
быстрой команды за 2 такта.
Фирма Philips: MCS-51 от Philips входят микроконтроллеры, работающие при тактовой частоте до
40 МГц и напряжении питания от 1,8 В. Во всех этих микроконтроллерах используется стандартное
ядро MCS-51 (архитектура микроконтроллера 8051), дополненное набором периферии: 10-разрядные
АЦП; 8-разрядный ЦАП; широтно-импульсные модуляторы; массивы программируемых
таймеров/счетчиков; интерфейсы I2C, CAN; интерфейсы с процессорными шинами (Processor Bus
Interface); специализированную периферию для телевизионной, видео и аудио техники. Выпущены
микроконтроллеры MCS-51, обладающие функцией снижения электромагнитных помех (Lower EMI).
Стандартные микроконтроллеры групп 8xC51, 8xC52/54/58 и 8xC51Fx фирмы Intel переведены на
новую технологию: серия MCS-51XA. Её возможности: максимальная тактовая частота до 33 МГц;
диапазон напряжения питания от 2,7 до 5,5 В; количество аппаратных уровней прерываний до 4-х;
введена функция программируемого clock-out; два DPTR; потребляемая мощность снижена на 50 %.
Кроме того, фирма Philips выпустила семейство микроконтроллеров 51ХА: 16-разрядное АЛУ на базе
регистровой архитектуры; 24-разрядное адресное пространство, обеспечивающее адресацию до
16 Мбайт памяти программ или данных; восемь 16-разрядных регистров для выполнения
арифметических и логических операций; расширенный набор команд; аппаратная поддержка
мультизадачности; выполнение инструкций типа регистр-регистр за 100 нс; напряжение питания от
2,7 В. Архитектура MCS-51ХА обеспечивает увеличение быстродействия до 100 раз по сравнению с
традиционной архитектурой MCS-51.
Фирма Atmel: ATmega16L-8 – тактовая частота 0–8 МГц; напряжение питания 2,7–5,5 В; ATmega16-
16 – тактовая частота 0–16 МГц; напряжение питания 4,5–5,5 В; потребление тока не более 1,1 мА, в
ждущем режиме не более 0,35 мА и в спящем режиме не более 1 мкА. Возможность внешнего
программирования внутренней памяти 16 Кбайт Flash; 512 байт памяти EEPROM; внутреннее
статическое запоминающее устройство с произвольной выборкой 1 Кбайт; два 8-битовых и один 16-
битовый таймер–счётчик с возможностью перепрограммирования коэффициента счёта, сравнения и
предустановки; 8-миканальный АЦП; аналоговый компаратор; 32 программируемые линии ввода-
вывода.
Примечание. х = 0 – нет ПЗУ; х = 3 – масочное ПЗУ; х = 7 – УФ ППЗУ
146
СОДЕРЖАНИЕ
ВВЕДЕНИЕ.........................................................................................................................................3
1. ОДНОКРИСТАЛЬНЫЕ МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА. АРХИТЕКТУРА
И ВИДЫ МИКРОЭВМ И МИКРОКОНТРОЛЛЕРОВ................................................................7
1.1. Архитектура процессоров......................................................................................................7
1.2. Виды микроЭВМ и микроконтроллеров............................................................................11
2. АППАРАТНАЯ ЧАСТЬ ОДНОКРИСТАЛЬНЫХ МП-СРЕДСТВ..........................................19
3. ОСОБЕННОСТИ ОБМЕНА ДАННЫМИ..................................................................................40
3.1. Синхронный последовательный обмен..............................................................................45
3.2. Протоколы для микроконтроллерных сетей......................................................................48
4. ПРОТОКОЛЫ ДЛЯ МИКРОКОНТРОЛЛЕРНЫХ СЕТЕЙ.....................................................55
4.1. Ввод-вывод аналоговых сигналов.......................................................................................57
4.1.1. Вывод аналоговых сигналов......................................................................................60
4.1.2. Однокристальные ведомые МП-устройства...........................................................61
4.2. МП-устройства с программируемой памятью...................................................................62
5. СЕМЕЙСТВО ОДНОКРИСТАЛЬНЫХ КОНТРОЛЛЕРОВ MCS-51......................................71
5.1. Организация памяти микроконтроллера 8xC51Fx70.........................................................77
5.2. Система команд микроконтроллеров семейства MCS-51.................................................80
5.2.1. Арифметические и логические инструкции.............................................................82
5.2.2. Команды передачи данных........................................................................................84
5.2.3. Булевые операции.......................................................................................................85
5.2.4. Инструкции переходов...............................................................................................85
6. АРХИТЕТУРА МИКРОКОНТРОЛЛЕРОВ PICMICRO...........................................................87
7. МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА AVR.......................................................................103
БИБЛИОГРАФИЧЕСКИЙ СПИСОК...........................................................................................121
ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ............................................................122
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ......................................................................................................128
ПРИЛОЖЕНИЯ..............................................................................................................................131
147
Редактор Ю. Н. Чигвинцев
Компьютерная верстка – Е. В. Беспалова
ИД № 06039 от 12.10.2001 г.
Сводный темплан 2010 г.
Подписано в печать 04.10.10. Формат 60×84 1/16. Бумага офсетная.
Отпечатано на дупликаторе. Усл. печ. л. 8,75. Уч.-изд. л. 8,75.
Тираж 80 экз. Заказ 631.
_________________________________________________________
Издательство ОмГТУ. 644050, г. Омск, пр. Мира, 11; т. 23-02-12
Типография ОмГТУ
148