GeoSELECT.ru



Компьютеры / Реферат: Разработка программной и аппаратной поддержки к методическим указаниям "Программирование микроконтроллеров" (Компьютеры)

Космонавтика
Уфология
Авиация
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Аудит
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника
Бухгалтерский учет
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Инвестиции
Иностранные языки
Информатика
Искусство и культура
Исторические личности
История
Кибернетика
Коммуникации и связь
Компьютеры
Косметология
Криминалистика
Криминология
Криптология
Кулинария
Культурология
Литература
Литература : зарубежная
Литература : русская
Логика
Логистика
Маркетинг
Масс-медиа и реклама
Математика
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Мифология
Москвоведение
Музыка
Муниципальное право
Налоги
Начертательная геометрия
Оккультизм
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование
Психология
Радиоэлектроника
Религия
Риторика
Сельское хозяйство
Социология
Спорт
Статистика
Страхование
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Физика
Физкультура
Философия
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
   

Реферат: Разработка программной и аппаратной поддержки к методическим указаниям "Программирование микроконтроллеров" (Компьютеры)



Министерство ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Воронежский Государственный Университет
Физический факультет



| |“К ЗАЩИТЕ ДОПУЩЕНА” |
|№______________________ |Зав. кафедрой физики полупроводников|
|кафедральной регистрации | |
| |и микроэлектроники |
| |проф. __________ Петров Б.К. |
| |“____”__________2002 г. |



УДК.681.3 КОРОБКОВ Георгий Николаевич


РАЗРАБОТКА ПРОГРАММНОЙ И АППАРАТНОЙ

ПОДДЕРЖКИ К МЕТОДИЧЕСКИМ УКАЗАНИЯМ

«ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ»


Магистерская диссертация по направлению «Физика»



Научный руководитель
доц. ___________ Клюкин В.И.



ВОРОНЕЖ 2002


РЕФЕРАТ

УДК. 681.3 КОРОБКОВ Георгий Николаевич
РАЗРАБОТКА ПРОГРАММНОЙ И АППАРАТНОЙ ПОДДЕРЖКИ К МЕТОДИЧЕСКИМ УКАЗАНИЯМ
«ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ». – Магистерская диссертация по
направлению «Физика», Воронеж, ВГУ, 2002. – 93 с., илл. 45, табл. 4,
прилож. 5, библ. 21 назв.

В настоящее время микроконтроллеры принимают все большее
распространение. Однако, информации по вопросам обучения программированию
микроконтроллеров в соединении с внешними исполнительными бывает не
достаточно.
В работе рассмотрены архитектура, аппаратные и программные средства
распространенных и недорогих микроконтроллеров фирмы ATMEL серии AVR типа
AT90S1200, AT90S2313, AT90S4414 и AT90S8515. Анализ методики
программирования в интегрированной среде разработке позволил объединить
практические рекомендации с некоторыми особенностями обучения
программирования микроконтроллеров. На основании этого предложен алгоритм
обучения.
Предложен макет программатора, который позволяет, как программировать,
так и обучать этому процессу. Приведен набор типовых задач которые могут
быть реализованы на вспомогательных платах внешних устройств, подключаемых
к программатору через соответствующие порты.
Так же приведены решения четырех типовых задач по работе с памятью,
индикацией, устройство «кодовый замок» и устройство измерителя частоты
звукового диапазона. В приложениях приведены тексты программ и справочные
данные на рассмотренные AVR микроконтроллеры.
СОДЕРЖАНИЕ

ВВЕДЕНИЕ 4


1. ОСНОВЫ АРХИТЕКТУРЫ МИКРОКОНТРОЛЛЕРОВ 6

1.1. ОСНОВНЫЕ ТИПЫ МИКРОКОНТРОЛЛЕРОВ И ИХ АРХИТЕКТУРА 6
1.2. Аппаратные средства 10
1.2.1. Запуск микроконтроллера 10
1.2.2. Тактирование и командные циклы 10
1.2.3. Программный счетчик и АЛУ 11
1.2.4. Подпрограммы и функции 13
1.2.5. Ввод/вывод данных 17
1.3. Инструментальные и программные средства разработки и отладки 20
1.4. Основные типы интерфейсов МК. 27
1.4.1. Подключение переключателей и подавление «звона» контактов. 27
1.4.2. Световая индикация. 28
1.4.3. Ввод с матричной клавиатуры. 30

2. ОСОБЕННОСТИ ПОСТРОЕНИЯ И ФУНКЦИОНИРОВАНИЯ МИКРОКОНТРОЛЛЕРОВ ФИРМЫ ATMEL
СЕМЕЙСТВА AVR 32

2.1. Архитектура микропроцессорного ядра AVR-микроконтроллеров 32
2.2. Аппаратные средства AVR. 41
2.3. Система команд микроконтроллера AVR 49

3. ПРОГРАММНОЕ И ИНСТРУМЕНТАЛЬНОЕ ОБЕСПЕЧЕНИЕ ПРОЦЕССА ПРОГРАММИРОВАНИЯ
МИКРОКОНТРОЛЛЕРОВ 56

3.1. Написание и отладка программного кода с помощью AVR Studio 56
3.1.1. Обзор AVR Studio 57
3.1.2. Создание нового проекта 58
3.1.3. Исполнение программного кода 62
3.2. Анализ методики реализации разработки программного обеспечения 69
3.2.1. Классификация вариантов заданий 69
3.2.2. Рассмотрение типовых примеров 73
3.3. Описание макета программатора. 77
ЗАКЛЮЧЕНИЕ 80
БИБЛИОГРАФИЧЕСКИЙ СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 81
ПРИЛОЖЕНИЕ 1 Инструкции процессоров AVR. 83
ПРИЛОЖЕНИЕ 2. Таблица регистров микроконтроллера AT90S1200 88
ПРИЛОЖЕНИЕ 3. Программа для измерителя звуковой частоты 89
ПРИЛОЖЕНИЕ 4. Программа для устройства «кодовый замок» 91
ПРИЛОЖЕНИЕ 5. Основные характеристики

микроконтроллеров AVR 93


ВВЕДЕНИЕ


Можно считать что микроконтроллер (МК) – это компьютер, разместившийся
в одной микросхеме. Отсюда и его основные привлекательные качества: малые
габариты; высокие производительность, надежность и способность быть
адаптированным для выполнения самых различных задач.
Микроконтроллер помимо центрального процессора (ЦП) содержит память и
многочисленные устройства ввода/вывода: аналого-цифровые преобразователи,
последовательные и параллельные каналы передачи информации, таймеры
реального времени, широтно-импульсные модуляторы (ШИМ), генераторы
программируемых импульсов и т.д. Его основное назначение – использование в
системах автоматического управления, встроенных в самые различные
устройства: кредитные карточки, фотоаппараты, сотовые телефоны, музыкальные
центры, телевизоры, видеомагнитофоны и видеокамеры, стиральные машины,
микроволновые печи, системы охранной сигнализации, системы зажигания
бензиновых двигателей, электроприводы локомотивов, ядерные реакторы и
многое, многое другое. Встраиваемые системы управления стали настолько
массовым явлением, что фактически сформировалась новая отрасль экономики,
получившая название Embedded Systems (встраиваемые системы).
Достаточно широкое распространение имеют МК фирмы ATMEL,
функциональные возможности которых охватывают все перечисленные задачи
[1,2].
Применение МК можно разделить на два этапа: первый – программирование,
когда пользователь разрабатывает программу и прошивает ее непосредственно в
кристалл, и второй – согласование спроектированных исполнительных устройств
с запрограммируемым МК. Значительно облегчают отладку программы на первом
этапе – симулятор, который наглядно моделирует работу микропроцессора. На
втором этапе для отладки используется внутрисхемный эмулятор, который
является сложным и дорогим устройством, зачастую недоступным рядовому
пользователю.
В тоже время в литературе мало уделено внимания вопросам обучения
программированию некоторых недорогих МК, в сочетании с реальными
исполнительными устройствами.
Разработка макета программатора отличающегося простотой, наглядностью
и низкой себестоимостью, становиться необходимой как для самого
программирования кристаллов, так и для наглядного обучения широкого круга
пользователей основам программирования МК.



1. ОСНОВЫ АРХИТЕКТУРЫ МИКРОКОНТРОЛЛЕРОВ


1.1. ОСНОВНЫЕ ТИПЫ МИКРОКОНТРОЛЛЕРОВ И ИХ АРХИТЕКТУРА

Если представить все типы современных микроконтроллеров (МК), то можно
поразиться огромным количеством разнообразных приборов этого класса,
доступных потребителю. Однако все эти приоры можно разделить на следующие
основные типы:
. Встраиваемые (embedded) 8-разрядные МК;
. 16- и 32-разрядные МК;
. Цифровые сигнальные процессоры.
Промышленностью выпускаются очень широкая номенклатура встраиваемых
МК. В них все необходимые ресурсы (память, устройства ввода-вывода и т.д.)
располагаются на одном кристалле с процессорным ядром [3]. Если подать
питание и тактовые импульсы на соответствующие входы МК, то можно сказать,
что он как бы «оживет» и с ним можно будет работать. Обычно МК содержат
значительное число вспомогательных устройств, благодаря чему обеспечивается
их включение в реальную систему с использованием минимального количества
дополнительных компонентов. В состав этих МК входят:
. Схема начального запуска процессора (Reset);
. Генератор тактовых импульсов;
. Центральный процессор;
. Память программ (E(E)PROM) и программный интерфейс;
. Средства ввода/вывода данных;
. Таймеры, фиксирующие число командных циклов.
Общая структура МК показана на рис. 1.1. Эта структура дает
представление о том, как МК связывается с внешним миром.
Более сложные встраиваемые МК могут дополнительно реализовывать
следующие возможности:
. Встроенный монитор/отладчик программ;
. Внутренние средства программирования памяти программ (ROM);
. Обработка прерываний от различных источников;
. Аналоговый ввод/вывод;
. Последовательный ввод/вывод (синхронный и асинхронный);
. Параллельный ввод/вывод (включая интерфейс с компьютером);
. Подключение внешней памяти (микропроцессорный режим).
Все эти возможности значительно увеличивают гибкость применения МК и
делают более простым процесс разработки систем на и основе.



Рис. 1.1. Структура микроконтроллера.
Некоторые МК (особенно 16- и 32-разрядные) используют только
внешнюю память, которая включает в себя как память программ (ROM), так и
некоторый объем памяти данных (RAM), требуемый для данного применения. Они
применяются в системах, где требуется большой объем памяти и относительное
не большое количество устройств (портов) ввода/вывода. Типичным примером
применения такого МК с внешней памятью является котроллер жесткого диска
(HDD) с буферной кэш-памятью, который обеспечивает промежуточное хранение и
распределение больших объемов данных (порядка нескольких мегабайт). Внешняя
память дает возможность такому микроконтроллеру работать с более высокой
скоростью, чем встраиваемый МК.
Цифровые сигнальные процессоры (DSP) – относительно новая категория
процессоров. Назначение DSP состоит в том, чтобы получать текущие данные от
аналоговой системы, обрабатывать данные и формировать соответствующий
отклик в реальном масштабе времени. Они обычно входят в состав систем,
используясь в качестве устройств управления внешним оборудованием, и не
предназначены для автономного применения.

Система команд.

В зависимости от числа используемых кодов операций системы команд МК
можно разделить на две группы: CISC и RISC. Термин CISC означает сложную
систему команд и является аббревиатурой английского определения Complex
Instruction Set Computer. Аналогично термин RISC означает сокращенную
систему команд и происходит от английского Reduce Instruction Set Computer.
Систему команд МК 8051 можно отнести к типу CISC. Однако, не смотря на
широкую распространенность этих понятий, необходимо признать, что сами
названия не отражают главного различия между системами команд CISC и RISC.
Основная идея RISC архитектуры – это тщательный подбор таких комбинаций
кодов операций, которые можно было бы выполнить за один такт тактового
генератора. Основной выигрыш от такого подхода – резкое упрощение
аппаратной реализации ЦП и возможность значительно повысить его
производительность.
Очевидно, что в общем случае одной команде CISC соответствует
несколько команд RISC. Однако обычно выигрыш от повышения быстродействия в
рамках RISC перекрывает потери от менее эффективной системы команд, что
приводит к более высокой эффективности RISC систем в целом по сравнению с
CISC.
Однако в настоящее время грань между CISC и RISC архитектурой
стремительно стирается. Например, МК семейства AVR фирмы Atmel имеют
систему команд из 120 инструкций, что соответствует типу CISC. Однако
большинство из них выполняется за один такт, что является признаком RISC
архитектуры. Сегодня принято считать, что признаком RISC архитектуры
является выполнение команд за один такт тактового генератора. Число команд
само по себе значения уже не имеет.

Типы памяти МК.

Можно выделить три основных вида памяти, используемой в МК:
а) память программ;
б) память данных;
в) регистры МК.
Память программ представляет собой постоянную память, предназначенную
для хранения программного кода и констант. Эта память не изменяет
содержимого в процессе выполнения программы. Память данных предназначена
для хранения переменных в ходе выполнения программы. Регистры МК – этот вид
памяти включает внутренние регистры процессора и регистры, которые служат
для управления периферийными устройствами.
Для хранения программ обычно служит один из видов постоянной памяти:
ROM (масочные ПЗУ), PROM (однократно программируемые ПЗУ), EPROM
(электрически программируемые ПЗУ с ультрафиолетовым стиранием) или EEPROM
(ПЗУ с электрической записью и стиранием, к этому виду также относятся
современные микросхемы Flash-памяти). Все эти виды памяти являются
энергонезависимыми – это означает, что содержимое памяти сохраняется после
выключения питания МК.
Многократно программируемые ПЗУ – EPROM и EEPROM (Electrically
Erasable Programmable Memory) подразделяются на ПЗУ со стиранием
ультрафиолетовым (УФ) облучением (выпускаются в корпусах с окном), и МК с
электрически перепрограммируемой памятью, соответственно.
В настоящее время протоколы программирования современной EEPROM
памяти позволяют выполнять программирование МК непосредственно в составе
системы, где он работает. Такой способ программирования получил название –
ISP (In System Programming). И теперь можно периодически обновлять
программное обеспечение МК без удаления из платы. Это дает огромный выигрыш
на начальных этапах разработки систем на базе МК или в процессе их
изучения, когда масса времени уходит на многократный поиск причин
неработоспособности системы и выполнение последующих циклов стирания-
программирования памяти программ.
Функционально Flash-память мало отличается от EEPROM. Основное
различие состоит в способности стирания записанной информации. В памяти
EEPROM стирание производится отдельно для каждой ячейки, а во Flash-памяти
стирание осуществляется целыми блоками.
ОЗУ (RAM) – оперативное запоминающее устройство, используется для
хранения данных. Эту память называют еще памятью данных. Число циклов
чтения и записи в ОЗУ неограниченно, но при отключение питания вся
информация теряется.


1.2. Аппаратные средства


1.2.1. Запуск микроконтроллера

Во многих приложениях используется батарейное питание МК, а в
некоторых случаях применяются даже конденсаторы большой емкости, которые
обеспечивают сохранение работоспособности при кратковременных отключеньях
питания. Поэтому проблема энергопотребления (энергосбережения) весьма
актуальна для МК. Так как практически все современные МК производятся по
КМОП технологии, то они потребляют значительно меньше мощности, чем ранее
выпускавшиеся биполярные или n-МОП – микроконтроллеры.

Сброс в начальное состояние.

На рис. 1.3. изображена схема сброса. Эту схему лучшего всего
использовать в случаях, когда гарантированно поддержание напряжения питания
в рабочем диапазоне. Кнопка RESET используется в процессе разработки
устройств для сброса МК в начальное состояние. (См. рис. 1.2. )



Рис. 1.2. Схема RESET.

1.2.2. Тактирование и командные циклы

Существует три способа задания тактовой частоты МК. Первый способ –
использование кварцевого резонатора. Второй способ синхронизации –
использования RC генератора. Третий способ синхронизации – это подача
тактовых импульсов от внешнего генератора. С его помощью можно задать любую
частоту синхронизации.
Следует обратить внимание на то, что командные циклы и такты
синхронизации не одно и тоже. Командный цикл состоит обычно из нескольких
тактов, которые необходимы процессору для выполнения команды. На рис. 1.3,
показан командный цикл, состоящий из четырех тактов.



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

1.2.3. Программный счетчик и АЛУ

Программный счетчик (Program Counter) или счетчик команд (СК)
используется для указания следующей команды выполняемой программы.
Реализация этой функции значительно усложняется, когда необходимо сохранить
содержимое СК при вызове подпрограмм и обработке запросов прерывания или
обеспечить ветвление программы. СК представляет собой счетчик с
параллельным вводом/выводом. В процессорах с Принстонской архитектурой
содержимое СК поступает оп шине данных в схему управления памятью, указывая
адрес считываемой команды. Часто СК входит в состав схемы управления
памятью – это позволяет избежать передачи адреса по внутренней шине данных.
Важные особенности функционирования СК – параллельная загрузка нового
содержимого, поступающего с шины данных, возможность сброса (возврат к
адресу первой команды программы), реализация инкремента. В 8-разрядных МК
разрядность СК обычно больше, чем 8 бит. При загрузки в СК нового адреса,
он поступает по шине данных частями по 8-бит, что требует выполнения
дополнительных машинных циклов. Чтобы сократить время загрузки СК,
некоторые МК имеют команды ветвления, при которых загружается только 8
младших разрядов адреса, а старшие разряды остаются без изменения. При
выполнении такой команды достаточно передать по шине данных только один
байт, тогда как для загрузки полного 16-разрядного адреса требуется
пересылка двух байт.
После чтения очередной команды содержимое СК увеличивается
(инкрементируется), чтобы обеспечить переход к адресу следующей команды.
Если выполняется вызов подпрограммы или происходит прерывание, то адрес
возврата (текущее состояние СК) может быть сохранен в стеке без выполнения
дополнительных тактов для инкремента содержимого СК. В работе с МК
необходимо следить, чтобы значение СК не вышло за пределы памяти программ.
Так как это может привести к выполнению неопределенных команд и
непредсказуемому результату.
Арифметико-логическое устройство (АЛУ) процессора используется для
выполнения всех математических операций в программе. Это операции включают
сложение, вычитание, логическое И, логическое ИЛИ, сдвиг содержимого
регистров и установку содержимого регистра состояния в соответствии с
полученным результатами. АЛУ не используется при чтении или записи данных
или команд, оно служит только для обработки данных.
АЛУ можно представить как аппаратный блок, который обрабатывает два
слова данных (операнды) и сохраняет полученный результат (см. рис. 1.4).
Как вводятся операнды в АЛУ и куда поступает результат – зависит от
конкретного типа МК. В этом состоит одно из основных различий между разными
типами процессоров и системами команд. Некоторые МК выбирают один операнд
из регистра-аккумулятора и сохраняют результат также в аккумуляторе. Другие
МК позволяют использовать различные источники операндов и места размещения
результатов.



Рис. 1.4. Структура АЛУ.
АЛУ обычно работает только с положительными целыми числами. Однако при
выполнении вычитания получаются отрицательные числа, если вычитаемое больше
уменьшаемого. Для представления отрицательных чисел используется
дополнительный код – «дополнение до двух». Это необходимо учитывать при
знакомстве с работой АЛУ.
Вместо вычитания одного числа из другого, происходит добавление
отрицательного числа:
А – В = А + (-В),
где отрицательное число (-В) представляется в дополнительном коде.
Чтобы получить дополнительный код отрицательного двоичного числа,
необходимо инвертировать значение каждого бита, а затем прибавить единицу:
-В = ( В ^ 0хff ) + 1, где ^ - операция «исключительное или».
Сложность АЛУ во многом определяет сложность всего МК в целом. Часто
над созданием АЛУ работает группа разработчиков, сравнимая по составу с
той, которая работает над остальной частью микропроцессора или
микроконтроллера. От того, как работает АЛУ, зависит функционирование
процессора, входящего в состав МК, а значит и всего МК в целом.

1.2.4. Подпрограммы и функции

При вызове подпрограммы или функции требуется сохранить содержимое СК
для того, чтобы команда возврата могла вернуть управление исходной
программе. Это может выполняться автоматически путем сохранения адреса
возврата в сетке. При возврате к исходной программе адрес извлекается из
стека и загружается в СК. Вызов функции может быть реализован в МК, не
имеющих стека, путем использования индексного регистра для эмуляции стека.
Если нельзя непосредственно загрузить в стек содержимое СК, то адрес
возврата к исходной программе можно сохранить в эмулированном стеке.
Иногда приходится передавать функции некоторые параметры. Один из
самых эффективных и часто встречаемых способов передачи параметров в
функцию – это поместить их в стек перед вызовом функции. В подпрограмме
можно загрузить индексный регистр значения указателя стека и таким образом
получить доступ к параметрам.
Другим способом передачи параметров является их сохранение в регистрах
процессора или в памяти данных в качестве специальных переменных. Передача
параметров через регистры сокращает число регистров, доступных при
выполнении функции. Сохранение же параметров в виде специальных переменных
уменьшает объем памяти, доступной для использования программой. Данное
ограничение может быть весьма существенно для МК. Обычно значения
возвращаемых параметров загружаются в регистры процессора, т.к. это
наиболее быстрый и эффективный способ передачи данных.

Прерывания.

Прерывание – это запуск специальной подпрограммы (называемой
«обработчиком прерывания» или «программой обслуживания прерывания»),
который вызывается сигналом аппаратуры. На время выполнения этой
подпрограммы реализация текущей программы останавливается(см. рис.1.5).
Термин «запрос на прерывание» (interrupt request) используется потому, что
иногда программа отказывается подтвердить прерывание и выполнить обработчик
прерывания немедленно.



Рис. 1.5. Выполнение прерываний.
МК может не реагировать на прерывания, пока не завершится выполнение
текущей задачи – этот реализуется путем запрещения (маскирования)
обслуживания запроса прерывания. После решения задачи возможен один из двух
вариантов: сброс маски и разрешение обслуживания прерывания, что приведет к
вызову обработчика прерывания, или анализ значения битов, указывающих на
поступление запросов прерывания и непосредственное выполнение программы
обслуживания без вызова обработчика прерывания. Такой метод обработки
прерывания используется, когда требуется обеспечить заданное время
выполнения основной программы, так как любое пребывание может нарушить
реализацию необходимого интерфейса.
Обработчик всегда обеспечивает следующую последовательность действий:
1. Сохранить содержимое регистров контекста.
2. Сбросить контроллер прерываний и оборудование, вызвавшее запрос.
3. Обработать данные.
4. Восстановить содержимое регистров контекста.
5. Вернуться к прерванной программе.
Регистры контекста – это регистры, определяющие текущее состояние
выполнения основной программы. Обычно к их относят СК, регистры состояния и
аккумулятор. Другие регистры МК, такие как индексные регистры, могут быть
использованы в процессе обработки прерывания, поэтому их содержимое также
необходимо сохранить. Все остальные регистры являются специфическими для
конкретного типа МК и его применения.
После сброса в исходное состояние контроллер прерываний готов
воспринимать следующий запрос, а оборудование, вызывающее прерывание,
готово посылать запрос, когда возникают соответствующие причины. Если
поступит новый запрос прерывания, то регистр маскирования прерываний
процессора предотвратит обработку прерывания, но регистр состояния
прерываний зафиксирует этот запрос, который будет ожидать своего
обслуживания. После завершения обслуживания текущего прерывания маска
прерывание будет сброшена, и вновь поступивший запрос поступит на
обработку.
Вложенные прерывания сложны некоторым типам МК, которые не имеют
стека. Эти прерывания так же могут вызывать проблемы, связанные с
переполнением стека.
Иногда МК может быстро отреагировать на запрос прерывания, приняв
необходимые данные, которые будут потом использованы после решения текущей
задачи. Это реализуется путем сохранения поступивших данных в массиве
памяти и последующей их обработки, когда выполнение исходной программы буде
завершено. Такой способ обслуживания является хорошим компромиссом между
немедленной полной обработкой прерывания, которая может потребовать много
времени, и игнорированием прерывания, что может привести к потере
информации о событии, вызвавшем прерывание.
При обработке прерывания содержимое регистра состояния обычно (но не
всегда) автоматически сохраняется вместе с содержимым СК перед обработкой
прерывания. Это избавляет от необходимость сохранять его в памяти
программными средствами с помощью команды пересылки, а затем
восстанавливать при возврате к исходной программе. Однако такое
автоматическое сохранение реализуется не во всех типах МК.
Если содержимое регистра состояния сохраняется перед началом обработки
прерывания, то по команде возврата производится его автоматическое
обновление. Если содержимое других регистров изменяется при выполнении
обслуживания прерывания, то оно также должно быть сохранено в памяти до
изменения и восстановлено перед возвратом в основную программу.
«Вектор прерывания» – это адрес, который загружается в СК при переходе
к обработчику прерывания. Существует несколько типов векторов. Адрес,
который загружается в СК при запуске МК (RESET) называется «вектор сброса».
Для различных прерываний могут быть заданы различные вектора. Но иногда
различным прерываниям назначается один вектор. Это не должно вызвать
проблем при работе с МК, так как чаще всего он исполняет одну единственную
программу. В МК, где аппаратная часть хорошо известна, не должно возникнуть
каких либо проблем при совместном использовании векторов прерываний.
В заключении можно добавить, что системные подпрограммы – это своего
рода программные прерывания, которые с помощью специальных процессорных
команд имитируют аппаратные прерывания. Они располагаются в произвольном
месте памяти, или могут требовать для обращения к ним межсегментных
переходов.

Таймеры.

Таймеры в микропроцессорных системах используются не только для
обеспечения заданной задержки, но и для решения гораздо более широкого
круга задач. Обычно для переключения таймера используют тактовые импульсы
процессора. Загрузив в таймер начальное значение, можно отсчитывать
определенные интервалы времени, фиксируя окончание интервала по моменту
переполнения таймера. Часто перед таймером включают предварительный
делитель тактовой частоты, чтобы иметь возможность отсчитывать более
длинные интервалы времени. Делитель обеспечивает инкремент содержимого
таймера после поступления определенного числа тактовых импульсов.
Их можно использовать для точного формирования временных интервалов,
подсчета импульсов на выходах МК, формирования последовательности
импульсов, тактирования приемопередатчика последовательного канала связи.
Таймеры/счетчики способны вырабатывать запросы прерываний, переключая ЦП на
их обслуживание по событиям и освобождая его от необходимости
периодического опроса состояний таймеров. Поскольку основное применение МК
находят в системах реального времени, таймеры/счетчики являются их
обязательным элементом. В некоторых модификациях число таймеров достигает
32.

1.2.5. Ввод/вывод данных

Основной интерфейс между МК и внешними устройствами реализуется через
параллельные порты ввода/вывода. Во многих МК выводы этих портов служат
также для выполнения других функций, например последовательного или
аналогового ввода/вывода.
Во многих МК отдельные выводы портов могут быть запрограммированы на
ввод или вывод данных. Необходимо обратить особое внимание на то, при вводе
данных считывается значение сигнала, поступающего на внешний вывод, а не
содержимое триггера данных. Если к внешнему выводу подключены выводы других
устройств, то они могут установить свой уровень выходного сигнала, который
будет считан вместо ожидаемого значения данных, записанных в триггер. В
некоторых МК существует возможность выбора между чтением данных,
установленных на выходе триггера или на внешнем выводе.
Когда на шину необходимо вывести «0» или «1», то сначала записывают
соответствующее значение в триггер данных, а затем с помощью триггера
управления на выходе устанавливается необходимый уровень потенциала.
Триггер управления разрешает вывод данных на шину. В современных МК
обеспечивается индивидуальный доступ к триггерам данных и управления с
помощь адресной шины.
Внешний вывод может быть также использован для подачи запроса
прерывания. Это обычно реализуется, когда вывод работает в режиме ввода.
Наиболее распространенный вид связи между различными электронно-
вычислительными системами – это последовательный обмен. В этом случае байт
данных передается по единственному проводу бит за битом с обеспечением
синхронизации между приемником и источником данных. Очевидное преимущество
последовательной передачи данных состоит в том, что она требует небольшого
количества линий связи.
Существует множество стандартных последовательных протоколов передачи
данных. В некоторых МК эти протоколы реализуются внутренними схемами,
размещенными на кристалле, что позволят упростить разработку различных
приложений.

Аналоговый компаратор.

Часто в МК встраивается аналоговый компаратор напряжений. Компаратор
представляет собой простую схему, которая, которая сравнивает два
напряжения. Обычно один сигнал называют входным, а другой опорным.[7] На
выходе устанавливается «1», если входное напряжение больше, чем опорное
(см. рис. 1.6). этот способ наиболее удобно использовать в таких
устройствах, как термостаты, где необходимо контролировать достижение
определенного уровня измеряемой величины, которая задается значением
входного напряжения.



Рис. 1.6. Сигналы на входе и выходе аналогового компаратора.

Программирование устройств.

Программирование устройств, в том числе и микроконтроллеров обычно
происходит следующим образом. В регистр программатора загружается значение,
которое необходимо разместить по определенному адресу, затем включается
схема, которая пересылает содержимое этого регистра по заданному адресу,
проходит некоторое время ожидания, пока завершиться процесс
программирования выбранной ячейки памяти и, на конец, выполняется
верификация, т.е. проверяется правильность записанного значения.
Программирование всего устройства может занять от нескольких секунд до
нескольких минут в зависимости от размера памяти и алгоритма
программирования.
Часто оборудования для программирования оказывается слишком дорогим,
особенно для радиолюбителей и предприятий малого бизнеса. Но в некоторых
случаях для программирования требуется весьма простое и доступное
оборудование. К примеру, некоторые модели PIC и AVR микроконтроллеров
программируются очень легко. Существует также устройства, которые не
требуют оборудования для программирования, на пример, МК Basic STAMP, или
имеют встроенный аппаратно-программный блок, избавляющий от необходимости
использования внешнего оборудования, кроме источника повышенного напряжения
для программирования, как МК 68НС05.
Очень важный аспект, касающийся программирования устройств,
заключается в том, что может ли устройство быть запрограммировано в
системе. Это называется внутрисистемное программирование (ВСП) – от
английского In-System Programming (ISP). Если МК допускает возможность
такого программирования, то это означает, что он может быть смонтирован на
плату с пустой памятью программ, которая затем может быть запрограммирована
без какого либо влияния на остальные компоненты схемы. Это может стать
важным обстоятельством при выборе МК. Использование ВСП избавляет МК от
необходимость покупать специальный программатор, дает возможность обновлять
программное обеспечения без изменения расположенных на плате аппаратных
средств и позволяет производителям создавать запас готовых изделий, которые
могут легко модифицироваться в соответствии с поступающими заказами.

Безопасность памяти программ.

Для многих приложений желательно защитить программный код, записанный
в МК. Чтобы обеспечить такую возможность многие МК содержат специальные
средства для предотвращения считывания хранящихся в них программ. Часто
такая возможность реализуется путем установки определенного значения
конфигурационного бита в процессе программирования. Обычно значения этого
бита можно изменить только в процессе перепрограммирования содержимого
памяти МК, например при УФ стирании содержимого EPROM.
Встроенная защита не может предотвратить все возможности считывания
программного кода. Такое считывание можно произвести во многих
лабораториях, выполняющих анализ причин отказов микросхем, причем за очень
короткое время. Чтобы усложнить и сделать операцию считывания менее
эффективной, некоторые компании зашифровывают записанные программы путем
перемешивания команд и включают специальные аппаратные блоки, которые
преобразуют перемешенные данные в поток команд процессора. И все же,
установка бита защиты не может гарантировать абсолютную защиту программного
кода загруженного в МК.

1.3. Инструментальные и программные средства разработки и отладки

Самый эффективный способ отладки программ для МК – применение
специализированных профессиональных инструментальных отладочных средств, к
которым следует отнести:
. внутрисхемные эмуляторы (ВСЭ) – программно аппаратное средство,
способное замещать собой эмулируемый процессор в реальном устройстве;
. программные симуляторы – программное средство способное имитировать
работу МК и его памяти;
. мониторы отладки – специальная программа, загружаемая в память
отлаживаемой системы.
. платы развития (Evaluation Boards – оценочные платы) – своеобразные
конструкторы для макетирования прикладных систем;
. эмуляторы ПЗУ – программно-аппаратное средство, позволяющее заменить ПЗУ
отлаживаемого устройства на ОЗУ, в которое можно загрузить программу с
компьютера через один из стандартных каналов связи.
Помимо этого существуют и комбинированные устройства и наборы.

Симуляторы

Как правило, симулятор состоит из отладчика, модели ЦП и памяти. Более
совершенные устройства содержат в своем составе модели встроенных
периферийных устройств (таймеров, портов, АЦП и систем прерываний).
Симулятор должен уметь загружать файлы программ в всех популярных
форматах, максимально полно отображать информацию о состоянии ресурсов
симулируемого МК, а также предоставлять возможности по симуляции выполнения
загружаемой программы в различных режимах. В процессе отладки модель
выполняет программу, и на экране монитора компьютера отображается текущее
состояние модели.
Загрузив программу в симулятор, пользователь может запускать ее
пошаговом или непрерывном режиме, задавать условные или безусловные точки
останова, контролировать и свободно модифицировать содержимое ячеек памяти
и регистров симулируемого МК. Симулятор позволяет быстро проверить логику
выполнения программы, правильность выполнения арифметических операций.
В зависимости от класса используемого отладчика некоторые модели
симуляторов поддерживают высокоуровневую отладку программ.
Симулятор может содержать и ряд дополнительных программных средств,
например интерфейс внешней среды. Наличие такого интерфейса позволяет
создавать и гибко использовать модель внешней среды МК, функционирующую и
воздействующую на отлаживаемую программу по заданному алгоритму.
В реальной системе МК обычно «занимается» считыванием информации с
подключенных к нему устройств (датчиков), обработкой ее и выдачи
управляющих сигналов на исполнительные устройства. Для того чтобы в простом
симуляторе смоделировать работу датчика, нужно в ручную изменять текущее
состояние модели периферийного устройства, к которому в реальной системе
подключен датчик. Но существует ряд современных разработок программных
симуляторов, в которых чтобы имитировать внешние условия и ситуации, обычно
используется специальный файл входных воздействий. Этот файл задает
последовательность входных сигналов, поступающих на моделируемое
устройство.


К примеру, для микроконтроллеров AVR этот входной файл программного
симулятора может выглядеть следующим образом:
000000000:00
000000006:F1
000000015:18
000000109:1C
000000203:61
000000250:10
000000344:1F
000000391:71
999999999:ff
где каждая строка содержит – цикл:данные , поступающие на какой либо
указанный порт.
В некоторых моделях симуляторов эта проблема имитации внешних сигналов
решена таким образом, что симулятор имеет встроенное средство для создания
моделей подключенных к МК внешних устройств, включая средства графического
отображения информации.
Очевидная особенность программных симуляторов в том, что загруженные в
них программы выполняются в масштабе времени, отличном от реального. Однако
низкая цена, возможность отладки даже при отсутствии макета отлаживаемого
устройства делают программные симуляторы весьма привлекательным средством
отладки. Необходимо также отметить, что существует целый класс ошибок,
которые можно обнаружить только с помощью симулятора.

Интегрированные среды разработки

Идея единства программного и аппаратного обеспечения систем на базе МК
является очень важной. Объединение инструментальных средств разработки
программного обеспечения с инструментальными средствами разработки
аппаратного обеспечения может стать важным преимуществом при разработке
устройств.
Существенно облегчают и ускоряют процесс разработки и отладки
микропроцессорных систем, так называемые интегрированные среды разработки.
Они совмещают в себе текстовый редактор для написания исходных текстов,
трансляторы с ассемблера и Си, линкер, отладчик, справочную информацию по
МК и другие средства, необходимые разработчику. Настройка трансляторов,
линкера и других компонентов производится не методом указания ключей в
командной строке, а в виде диалоговых окон, где нужно только расставить
«галочки» в нужных местах. Преобразование исходных текстов программ в файл
машинных кодов запускается нажатием одной клавишей.
Появление интегрированных сред разработки программ ещё больше повысило
эффективность создания программ для МК, позволило разработчику
сосредоточиться на сути решаемой задачи и отвлечься от конкретных деталей
ее реализации. Интегрированные пакеты для разработки программ выпускают
несколько фирм, пакеты разных производителей схожи между собой по функциям,
но различаются предоставляемыми сервисными возможностями, удобством работы
и качеством генерированного машинного кода.
Напомним, что при традиционном подходе начальный этап написания
программ строится следующим образом. Исходный текст набирают с помощью
какого либо текстового редактора. По завершению набора работа с текстовым
редактором прекращается и запускается кросс-компилятор. Как правило, новая
программ содержит синтаксические ошибки, и компилятор сообщает о них на
консоль оператора. Затем вновь запускается текстовый редактор, и оператор
ищет и устраняет выявленные ошибки. При этом сообщение об их характере,
выведенные компилятором уже не видны, так как экран занят текстовым
редактором.
Этот цикл может повторяться не один раз. И если программа относительно
сложна, собирается из различных частей, подвергается редактированию или
модернизации, то даже этот начальный этап может потребовать очень много сил
и времени программиста.
Избежать рутинной работы и тем самым существенно повысить
производительность труда программиста позволяет появившиеся и быстро
завоевывающие популярность так называемые интегрированные среды (оболочки)
разработки (Integrated Development Environment – IDE).
Как правило, хорошая интегрированная среда объединяет имеющиеся
средства отладки (внутрисхемный эмулятор, программный симулятор и
программатор) и обеспечивает работу программиста с текстами программ в
стиле диалоговых окон.
Интегрированная среда позволяет:
. использовать встроенный многофайловый текстовый редактор, специально
ориентированный на работу с исходными текстами программ;
. наблюдать одновременно в многооконном режиме диагностику выявленных при
компиляции ошибок и исходный текст программы доступный редактированию;
. вести параллельную работу над несколькими проектами. Менеджер проектов
позволяет использовать любой проект в качестве шаблона для вновь
создаваемого. Опции используемых компиляторов и список исходных файлов
проекта устанавливаются в диалоговых меню и сохраняются в рамках
проекта, устраняя необходимость работы с неудобными bat – файлами:
. подвергать перекомпиляции, только редактировавшиеся модули;
. загружать отлаживаемую программу в имеющиеся средства отладки и работать
с ними без выхода из оболочки;
. подключать к оболочки практически любые программные средства.
В последнее время функции интегрированных сред разработки становится
принадлежностью программных интерфейсов наиболее «продвинутых» эмуляторов и
отладчиков симуляторов. Такие функциональные возможности в сочетании с
дружественным интерфейсом существенно ускоряют работу программиста.
Таким образом, выбирая инструментальные средства отладки,
целесообразно принимать в расчет следующий комплекс показателей: перечень
поддерживаемых МК, ограничения на ресурсы эмулируемых/симулируемых МК,
возможность символьной отладки, перечень поддерживаемых компиляторов и,
наконец, сервисные возможности.

Язык Ассемблера.

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

Языки программирования высокого уровня.

Для программирования МК можно использовать различные языки высокого
уровня. Термин «язык высокого уровня» служит для обозначения языков,
используемых для написания легко читаемых программ, которые конвертируются
(компилируются) в язык ассемблера, а затем преобразуются в объектный код
(биты и байты) для их выполнения микроконтроллером.
Перечислим основные характеристики языков высокого уровня:
. наличие встроенных функций (например, консольный ввод/вывод) с
подключаемыми библиотеками;
. разнообразные типы данных (8-, 16-, 32-битные и с плавающей
точкой);
. выполнение арифметических операций с использованием стека;
. использование локальных и глобальных переменных, указателей и
структур данных;
. распределение памяти;
. доступ к аппаратным регистрам;
. символическая информация для симулятора/эмулятора.
Реализация этих характеристик может быть проблематичной для
встраиваемых МК, которые обладают следующими особенностями:
. ограниченный объем памяти программ ROM и памяти данных RAM;
. отсутствие BIOS или операционной системы;
. переопределяемый ввод/вывод (когда вывод может использоваться как
цифровой/аналоговый/последовательный вход/выход).
Таким образом, использование ассемблера необходимо, если к размеру и
быстродействию генерируемого кода предъявляются очень жесткие требования. В
настоящее время таких случаев становится все меньше и меньше, т.к.
практически всегда можно взять более «быстрый» МК с большим объемом памяти.
Кроме того, современные пакеты кросс средств позволяют легко писать
смешанные программы, где часть модулей написана на Си, а наиболее критичные
к быстродействию части – на ассемблере. Компиляторы Си позволяют также
вставлять в исходные тексты ассемблерные инструкции.
При разработке программного обеспечения для МК существует несколько
правил, которые следует выполнять, чтобы объем используемых ресурсов не
превысил доступный предел.
1. Использовать только один вид интерфейса с аппаратными средствами
(внешними устройствами). Применения различных интерфейсов создает
проблемы, если потребуется подключать другие типы внешних
устройств.
2. Идентифицировать глобальные переменные, специфичные для
подпрограмм, и не использовать их где-нибудь еще в коде.
3. Использовать везде, где возможно, локальные переменные (это можно
реализовать только в языках высокого уровня).
4. Если предполагается наличие временно используемых переменных, то
программа должна обеспечить их уникальное использование.
Следование этим правилам при разработке прикладных программ избавит
вас в дальнейшем от проблем, связанных с устранением трудно выявляемых
неустойчивых ошибок в программе.

1.4. Основные типы интерфейсов МК.


1.4.1. Подключение переключателей и подавление «звона» контактов.

При замыкании и размыкании переключателей в цепи возникают импульсные
помехи, вызванные дребезгом контактов. Эти помехи обычно называют «шумом»
или «звоном». Такое явление часто возникает в системах на базах МК, где для
ввода данных используется клавиатура, и «звон» может восприниматься как
многократное нажатие клавиши (см. рис. 1.7). «Звон» возникает при установке
и разрыве контакта путем нажатия на клавишу.



а) б)

Рис. 1.7. а) схема ключа; б) дребезг контактов.
Чтобы устранить данный эффект, используются специальные схемы или
программные методы для подавления «звона». Один из простых схемотехнических
способов устранения «звона» состоит в подключении RC-цепи. В этой схеме
время, требуемое для заряда разряда конденсатора до порогового напряжения,
маскирует «звон» контактов при переключении. Можно также установить триггер
Шмитта между схемой ключа и МК, чтобы усилить эффект подавления «звона».
Недостатки этого метода – дополнительные затраты на компоненты, которые
должны быть установлены на плате, и дополнительное время, требуемое для
заряда/разряда RC-цепи. Все это может затруднить использование данной
схемы, так как для некоторых ключей с большим уровнем шумов дополнительная
задержка может составить десятые доли секунды. Значительно лучший способ
избавиться от «звона» – сделать это программно. Если уровень напряжения на
выходе ключа не изменяется в течении 20мс, то можно считать, что «звон»
окончился, и больше изменения состояний не ожидается.

1.4.2. Световая индикация.

Очень часто вывод данных реализуются с помощью светодиодов LED (Light
Emitting Diode), которые достаточно дешевы и легко подключаются к МК.
Обычно для свечения светодиода требуется ток более 16 мА, что для
большинства МК находится в диапазоне допустимых значений выходных токов.
Следует помнить, что светодиод является диодом, пропуская ток только в
одном направлении.
Типичная схема подключения светодиода к выводу МК показана на рис.
1.8. В этой схеме светодиоды будут светиться когда МК выдает сигнал «0»
(низкое напряжение). Когда вывод работает в качестве входа данных или на
него выводится «1», то светодиод будет выключен.
Резистор сопротивлением 220 Ом используется для ограничения тока, т.к.
слишком большой ток может вывести из строя МК и светодиод. Некоторые МК
содержат ограничители тока на выходных линиях, что устраняет потребность в
ограничивающем резисторе. Но все же целесообразно, на всякий случай,
включить этот резистор, чтобы гарантировать, что короткое замыкание на
«землю» или напряжение питания Vcc, не выведет из строя МК.



Рис. 1.8. Подключение светодиода к микроконтроллеру.

Семи сегментный индикатор.

Вероятно самый простой вывод числовых десятичных и шестнадцатеричных
данных – это использование семи сегментного индикатора (ССИ). Такие
индикаторы были очень популярны в 70х годах, но в последствии их место
заняли жидкокристаллические индикаторы (ЖКИ). Но светодиодные индикаторы до
сих пор являются полезными приборами, которые могут быть включены в схему
без больших усилий для создания программного обеспечения. Включая
определенные светодиоды (зажигая сегменты), можно выводить десятичные числа
(см. рис. 1.9).
Каждый светодиод в индикаторе имеет свой буквенный идентификатор (A,
B, C, D, E, F, G), и одна из ножек светодиода подключена к соответствующему
внешнему выводу. Вторые ножки всех светодиодов соединены вместе и
подключены к общему выводу. Этот общий вывод определяет тип индикатора: с
общим катодом или с общим анодом.
Подключение индикатора к МК осуществляется весьма просто: обычно
индикатор подключают как семь или восемь (если используется десятичная
точка) независимых светодиодов. Наиболее важной частью работы при
подключении к МК нескольких ССИ является назначения линий вводе вывода для
каждого светодиода. Решение этой задачи в начале выполнения проекта
упростит вам монтаж разводки и отладку устройств в дальнейшем. Типичный
способ подключения нескольких индикаторов состоит в том, чтобы включить их
параллельно и затем управлять протеканием тока через общие выводы отдельных
индикаторов. Так как величина этого тока обычно превышает допустимое
значение выходного тока МК, то для управления оком включается
дополнительные транзисторы, которые выбирают, какой из индикаторов будет
находиться в активном состоянии.



Рис. 1.9. Семи сегментный индикатор.
На рис. 1.10 показано подключение к МК четырех ССИ. В этой схеме МК
выдает данные для индикации, последовательно переходя от одного индикатора
к другому. Каждая цифра будет высвечиваться в течении очень короткого
интервала времени. Это обычно выполняется с помощью подпрограммы
обслуживания прерываний таймера. Чтобы избежать мерцания изображения,
подпрограмма должна выполняться со скоростью, обеспечивающий включение
индикатора, по крайней мере, 50 раз в секунду. Чем больше цифр, тем чаще
должны следовать прерывания от таймера. Например, при использовании восьми
ССИ цифры должны выводиться со скоростью 400 раз в секунду.



Рис. 1.10. Подключение к МК четырех ССИ.

1.4.3. Ввод с матричной клавиатуры.

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



Рис. 1.11. Подключение к МК матричной клавиатуры.
Для чтения состояния определенного ключа на столбец подается сигнал, а
затем считывается состояние рядов. Обычно ряды подключаются к высокому
потенциалу, а опрашиваемый столбец соединяется с землей. Если при
сканировании считывается низкий уровень сигнала, то это означает, что ключ
в данной позиции ряд-столбец замкнут. На рис. 1.11 показаны два МОП-
транзистора, которые используются для подключения столбцов к земле. Но в
некоторых МК выводы могут работать в режиме с открытым коллектором, и
следовательно имитировать работу этих транзисторов, делая их включение
ненужным.
Матричная клавиатура может быть расширена практически до любого
размера, используя при этом небольшое число выводов МК. Например, 104-
клавишная клавиатура ПК – это матрица, содержащая 13х8 ключей.


2. ОСОБЕННОСТИ ПОСТРОЕНИЯ И ФУНКЦИОНИРОВАНИЯ МИКРОКОНТРОЛЛЕРОВ ФИРМЫ
ATMEL СЕМЕЙСТВА AVR



2.1. Архитектура микропроцессорного ядра AVR-микроконтроллеров

Архитектура AVR была оптимизирована так, чтобы соединить достоинства
Гарвардской и Принстонской (Фон Неймана) архитектуры для достижения очень
быстрого и эффективного выполнения программ. Такая организация обеспечивает
высокую эффективность процессора при обработке данных.
Основной идеей всех RISC (Reduced Instruction Set Computer), как
известно, является увеличение быстродействия за счет сокращения количества
операций обмена с памятью программ. Для этого каждую команду стремятся
уместить в одну ячейку памяти программ. При ограниченной разрядности ячейки
памяти это неизбежно приводит к сокращению набора команд микропроцессора.
У AVR-микроконтроллеров в соответствии с этим принципом практически
все команды (исключая те, у которых одним из операндов является 16-
разрядный адрес) также упакованы в одну ячейку памяти программ. Но сделать
это удалось не за счет сокращения количества команд процессора, а путем
расширения ячейки памяти программ до 16 разрядов. Такое решение является
причиной богатства системы команд AVR по сравнению с другими RISC-
микроконтроллерами.
Организация памяти AVR выполнена по схеме Гарвардского типа, в которой
разделены не только адресные пространства памяти программ и памяти данных,
но также и шины доступа к ним. Для более углубленного понимания архитектуры
приведем две схемы (см. рис. 2.1 и 2.2).
Вся программная память AVR-микроконтроллеров выполнена по технологии
FLASH и размещена на кристалле. Она представляет собой последовательность
16-разрядных ячеек и имеет емкость от 512 слов до 64K слов в зависимости от
типа кристалла.
Разделение шин доступа (рис. 2.2.) к FLASH памяти и SRAM памяти дает
возможность иметь шины данных для памяти данных и памяти программ различной
разрядности, а также использовать технологию конвейеризации. Конвейеризация
заключается в том, что во время исполнения текущей команды программный код
следующей уже выбирается из памяти и дешифрируется.



Рис. 2.1. Архитектура AVR-микроконтроллеров.



Рис. 2.2. Структурная схема архитектуры процессора семейства AVR.
Для сравнения вспомним, что у микроконтроллеров семейства MCS-51
выборка кода команды и ее исполнение осуществляются последовательно, что
занимает один машинный цикл, который длится 12 периодов кварцевого
резонатора.
В случае использования конвейера приведенную длительность машинного
цикла можно сократить. Например, у PIC-микроконтроллеров фирмы Microchip за
счет использования конвейера удалось уменьшить длительность машинного цикла
до 4 периодов кварцевого резонатора. Длительность же машинного цикла AVR
составляет один период кварцевого резонатора. Таким образом, AVR способны
обеспечить заданную производительность при более низкой тактовой частоте.
Именно эта особенность архитектуры и позволяет AVR-микроконтроллерам иметь
наилучшее соотношение энергопотребление/производительность, так как
потребление КМОП микросхем, как известно, определяется их рабочей частотой
[9,11].

Программная модель AVR и система команд.

На рисунке 2.3 изображена программная модель AVR-микроконтроллеров,
которая представляет собой диаграмму программно доступных ресурсов AVR.
Центральным блоком на этой диаграмме является регистровый файл из 32
оперативных регистров (R0-R31) или как их обычно называют регистры общего
назначения (РОН). Все РОН непосредственно доступны АЛУ. Старшие регистры
(см. рис. 2.4.) объединены парами и образуют три 16-разрядных регистра,
предназначенных для косвенной адресации ячеек памяти (AVR без SRAM имеют
только один 16-битный регистр Z).



Рис. 2.3. Программная модель AVR-микроконтроллеров.
Регистровый файл, блок регистров ввода/вывода и оперативная память,
как показано на рис. 2.3, образуют единое адресное пространство, что дает
возможность при программировании обращаться к 32 оперативным регистрам и к
регистрам ввода/вывода как к ячейкам памяти, используя команды доступа к
SRAM (в том числе и с косвенной адресацией) [8].
Все арифметические и логические операции, а также часть операций
работы с битами выполняются в АЛУ только над содержимым РОН. Следует
обратить внимание, что команды, которые в качестве второго операнда имеют
константу (SUBI, SBCI, ANDI, ORI, SBR, CBR), могут использовать в качестве
первого операнда только регистры из второй половины РОН (R16-R31). Команды
16-разрядного сложения с константой ADIW и вычитания константы SBIW в
качестве первого операнда используют только регистры R24, R26, R28, R30.



Рис. 2.4. Регистровый файл или РОН.
Во время выполнения арифметических и логических операций или операций
работы с битами АЛУ формирует те или иные признаки результата операции, то
есть устанавливает или сбрасывает биты в регистре состояния SREG (Status
Register) (см. рис. 2.5).
Признаки результата операции могут быть затем использованы в программе
для выполнения дальнейших арифметико-логических операций или команд
условных переходов.

Адресация регистров ввода/вывода и памяти SRAM.

Регистры ввода/вывода, также изображенные на рис. 1, представляют
собой набор регистров управления процессорного ядра и регистров управления
и данных аппаратных узлов AVR-микроконтроллера. Регистрами ввода/вывода
являются регистры SREG, MCUSR и указатель стека SPH:SPL а также регистры,
управляющие системой прерывания микроконтроллера, режимами подключения
EEPROM памяти, сторожевым таймером, портами ввода/вывода и другими
периферийными узлами. Изучение данных регистров удобно выполнять
одновременно с изучением конкретного периферийного узла.
Все регистры ввода/вывода могут считываться и записываться через РОН
при помощи команд IN, OUT (см. группу команд передачи данных приложение 1).
Регистры ввода/вывода, имеющие адреса в диапазоне $00 - $1F (знак $
указывает на шестнадцатеричную систему счисления), обладают возможностью
побитовой адресации. Непосредственная установка и сброс отдельных разрядов
этих регистров выполняется командами SBI и CBI (см. группу команд работы с
битами приложение 1). Для признаков результата операции, которые являются
битами регистра ввода/вывода SREG, имеется целый набор команд установки и
сброса. Команды условных переходов в качестве своих операндов могут иметь
как биты-признаки результата операции, так и отдельные разряды побитно
адресуемых регистров ввода/вывода.
На рис. 2.3 показано распределение адресов в едином адресном
пространстве. Младшие 32 адреса ($0 - $1F) соответствуют оперативным
регистрам т.е. РОН. Следующие 64 адреса ($20 - $5F) зарезервированы для
регистров ввода/вывода. Внутренняя SRAM у всех AVR начинается с адреса $60.

Таким образом, регистры ввода/вывода имеют двой

Новинки рефератов ::

Реферат: Малый бизнес (Менеджмент)


Реферат: Обработка деталей на шлифовальном станке (Технология)


Реферат: Деятельность юристов в Древнем Риме (История)


Реферат: Коррозия меди в 5М изопропанольных растворах НС1 (Химия)


Реферат: Государственное устройство Веймарской республики (Государство и право)


Реферат: Проблема эмансипации в русской и европейской литературе 19 века (Литература : русская)


Реферат: Фрезерные станки (Технология)


Реферат: А.П.Чехов "Устрицы" (Литература)


Реферат: О смысле новейшей Российской истории - и перспективах ее - в ее православной ретроспективе (История)


Реферат: Формирование современной, отечественной этики бизнеса (Психология)


Реферат: Гражданская война (История)


Реферат: Господарство України періоду утвердження капіталізму (История)


Реферат: Художественная обработка материалов животного происхождения в Приамурье (Искусство и культура)


Реферат: Василий Шукшин (Исторические личности)


Реферат: Рыбные ресурсы их использование и охрана (Сельское хозяйство)


Реферат: Великие реформаторы России: государственная деятельность Сергея Юльевича Витте (История)


Реферат: Исторический Таллин (История)


Реферат: Форматирование текста в MicroSoft Word (Программирование)


Реферат: Doubts accident result of freak weather (Иностранные языки)


Реферат: Конопля и всё о конопле (Биология)



Copyright © GeoRUS, Геологические сайты альтруист