Микроконтроллерные устройства автоматики
Покупка
Основная коллекция
Тематика:
Автоматика
Издательство:
Новосибирский государственный технический университет
Автор:
Пинигин Кирилл Юрьевич
Год издания: 2012
Кол-во страниц: 86
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
Профессиональное образование
ISBN: 978-5-7782-2120-8
Артикул: 631735.01.99
Пособие предназначено для студентов очного и заочного отделения, обучающихся по направлению подготовки 220200.62 «Автоматизация и управление», по дисциплине «Микропроцессорные устройства автоматики», (бакалавр, 4 курс), в качестве практикума по программированию однокристальных микроконтроллеров. Пособие содержит учебные материалы и методические рекомендации по самоконтролю (вопросы для самопроверки). Работа выполнена по заданию Министерства образования и науки РФ, проекты № 7.559.2011 (Темплан).
Для успешного овладения курсом требуется успешное обучение по ранее изученным курсам «Программирование и основы алгоритмизации», «Электроника», «Схемотехника».
Тематика:
ББК:
УДК:
- 004: Информационные технологии. Вычислительная техника...
- 681: Точная механика. Автоматика. Приборостроение
ОКСО:
- ВО - Бакалавриат
- 15.03.04: Автоматизация технологических процессов и производств
- ВО - Магистратура
- 15.04.04: Автоматизация технологических процессов и производств
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство образования и науки Российской Федерации НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ К.Ю. ПИНИГИН, В.А. ЖМУДЬ МИКРОКОНТРОЛЛЕРНЫЕ УСТРОЙСТВА АВТОМАТИКИ „ ,.........., Учебно-методическое пособие НОВОСИБИРСК 2012
УДК 004.315(075.8) П 326 Рецензенты: д-р техн. наук, профессор Н.Р. Рахимов д-р техн. наук, профессор Г. А. Французова Утверждено Редакционно-издательским советом университета в качестве учебно-методического пособия Пинигин К.Ю. П 326 Микроконтроллерные устройства автоматики : учеб.-метод. пособие / Пинигин К.Ю., Жмудь В.А. - Новосибирск, Изд-во НГТУ.-2012.-96 с. ISBN 978-5-7782-2120-8 Пособие предназначено для студентов очного и заочного отделения, обучающихся по направлению подготовки 220200.62 «Автоматизация и управление», по дисциплине «Микропроцессорные устройства автоматики», (бакалавр, 4 курс), в качестве практикума по программированию однокристальных микроконтроллеров Пособие содержит учебные материалы и методические рекомендации по самоконтролю (вопросы для самопроверки). Работа выполнена по заданию Министерства образования и науки РФ, проекты № 7.559.2011 (Темплан). Для успешного овладения курсом требуется успешное обучение по ранее изученным курсам «Программирование и основы алгоритмизации», «Электроника», «Схемотехника». УДК 004.315(075.8) ISBN 978-5-7782-2120-8 © Пинигин К.Ю., Жмудь В.А., 2012 © Новосибирский государственный технический университет, 2012
1. ВВЕДЕНИЕ Данное учебное пособие обучает применению аппаратных ресурсов RISC-микроконтроллера семейства AVR производства фирмы Atmel (далее по тексту микроконтроллер) в инженерной практике при проектировании электронных систем управления. Для успешного проектирования разработчик современных устройств такого типа должен хорошо ориентироваться в микроконтроллерной технике, как в аппаратном, так и программном обеспечении данных устройств. Изложение материала начинается с рассмотрения базовых возможностей микроконтроллера, архитектуры и функций его процессорного ядра. Далее рассмотрены вопросы организации пространства памяти, для того чтобы разработчик понимал, где хранятся различные константы и переменные. Также обсуждается использование аппаратных прерываний микроконтроллера, необходимых для создания систем управления реального времени. Рассматривается также распределение вычислительных ресурсов микроконтроллера. В последней главе приведены примеры реализации типовых регуляторов для систем термостабилизации наAVR микроконтроллерах. Микроконтроллеры фирмы Атмэл отличаются довольно развитой архитектурой периферийных устройств: присутствует встроенный аналого-цифровой преобразователь, аналоговый компаратор, таймеры, последовательные коммуникационные интерфейсы, встроенная FLASH- и EEPROMпамяти [1]. Чтобы определить функциональные возможности периферийных модулей различных моделей микроконтроллеров необходимо изучать документацию, сверяясь со спецификациями производителя. 2. ОБЗОР АРХИТЕКТУРЫ Начинать описание архитектуры AVR микроконтроллеров стоит с упоминания того, факта, что они являются RISC микроконтроллерами. RISC (аббревиатура расшифровывается как reduced instruction set 3
computing, то есть усеченный набор команд вычисления) означает то, что эти микроконтроллеры разработаны для быстрого выполнения команд за счет уменьшения числа аппаратно выполняемых инструкций. Уменьшенное количество инструкций обеспечивает увеличение скорости выполнения программ за счет упрощения архитектуры процессорного ядра, позволяя выполнять данные инструкций, как правило, за один или два такта системной синхронизации процессора. Для описания производительности процессора существует базовый термин MIPS (million of instructions per second, что в переводе: миллион операций в секунду) [2]. Это обозначает для AVR микроконтроллера, работающего на частоте системной синхронизации равной 8 МГц, производительность составляет величину порядка 8 MIPS. Кроме того AVR микроконтроллеры представляют собой однокристальные микро-ЭВМ, то есть законченный компьютер, аппаратное обеспечение которого содержит в себе процессорное ядро, память, порты ввода-вывода на одном кристалле и оптимизировано для построения электронных систем реального времени. Использование такой однокристальной технологии дает такие преимущества, как большая скорость и надежность, за счет того, что периферия портов ввода-вывода затрачивает меньше времени для записи и чтения информации с процессорного ядра и периферии, а также за счет сокращения длин связей. Оптимизация аппаратных ресурсов AVR микроконтроллеров означает, что машинные инструкции предоставляют приемлемые команды для обеспечения легкого и удобного управления устройствами ввода-вывода, данные команды позволяют устанавливать, стирать, запрашивать отдельные биты из параллельного порта ввода-вывода или из регистров управления соответствующих параллельных портов. Возможность сбрасывать и устанавливать биты является типичной для устройств, работающих в режиме «включено-выключено». Процессорное ядро микроконтроллеров неоптимизированно для аппаратного управления, поэтому для сброса или чтения битов порта ввода-вывода (или соответствующих регистров) необходимо использовать дополнительные логические функции, такие как «И», «ИЛИ», «Исключающее ИЛИ» для воздействия на отдельные биты портов. Для примера опишем следующий фрагмент программного кода, в котором устанавливается в единицу третий бит порта А: PORTA = PORTA | 0x4; // установка бита 2 в единичное состояние. 4
Для одной и той же операции, в данном случае установке третьего бита в единичное состояние, выполнение для разных цифровых устройств (микропроцессора и микроконтроллера) будет происходить по-разному. Ниже приведен ассемблерный код для стандартного микропроцессора и для микроконтроллера AVR Микропроцессор: INR30, 0x1В MOVR26,R30 LDIR30, LOW(4) OR R30, R26 OUT 0x1b, R30 Микроконтроллер: SBI 0x1В, 2 Этот пример дизассемблирования демонстрирует, что стандартному микропроцессору требуется пять инструкций, в отличие от микроконтроллера, требующего всего одну инструкцию для выполнения той же задачи. Следовательно, скорость обращения к порту ввода-вывода для микроконтроллера в пять раз выше, чем у микропроцессора. Использование микроконтроллера позволяет уменьшить программный код и увеличить скорость выполнения в пять раз. Кроме того, архитектура AVR микроконтроллера содержит в себе центральное процессорное устройство (ЦПУ), память, регистры ввода-вывода. Работа ЦПУ скрыта от разработчика, но память и регистры общего назначения и ввода-вывода отрыты и доступны для работы с ними, что требует детального понимания от разработчика механизмов их работы. Принципы функционирования и конфигурирования портов ввода-вывода и памяти, также других периферийных узлов микроконтроллеров будут рассмотрены ниже. Вопросы для самопроверки 1. Что такое RISC -архитектура? 2. Отличие микропроцессора от микроконтроллера 3. В чем заключается процесс дизассемблирования 5
3. ВНУТРЕННЯЯ ПАМЯТЬ Память в AVR микроконтроллерах построена по гарвардской модели [3], в которой различные объемы памяти разделены для возможности быстрого доступа и хранения большего объема данных. ЦПУ имеет раздельный интерфейс для FLASH памяти программ, памяти хранения данных и EEPROM [4]. 3.1. FLASH память программ Область FLASH памяти программ это блок встроенной на кристалле FLASH памяти, который в адресном пространстве микроконтроллера начинается с нулевого адреса и размер данного сегмента памяти зависит от конкретной модели AVR микроконтроллера [5]. Память программ энергонезависимая, она сохраняет данные даже при выключенном питании, и используется для выполнения кода управляющей программы и хранения констант, которые должны быть сохранены даже в случае аварийного выключения питания. Пространство памяти Рис. 1. FLASH память программ 6
программ является 16-разрядным, и каждая новая машинная инструкция занимает в памяти 16-разрядное слово, то есть два байта. Рисунок 1 показывает карту распределения области FLASH памяти. Кроме того, FLASH память может быть программируема и пере-программируема с помощью исполняемого кода, это не означает обеспечения перепрограммирования «флэша» непосредственно исполняемой программой загруженной в FLASH память, так должна быть возможность внешнего перепрограммирования. 3.2. Память данных Память данных в микроконтроллерах Атмэл (Atmel) [6] обычно содержит три раздельных области памяти для чтения и записи. Самая нижняя область в адресном пространстве памяти данных содержит тридцать три рабочих регистра общего назначения, следующая -64 регистра ввода-вывода, которые расположены во внутреннем статическом ОЗУ. Регистры общего назначения служат лишь для хранения в них локальных переменных и разных временных данных для функционирования основной программы, также эти регистры используются для хранения глобальных переменных. 64 регистра ввода-вывода используются, как интерфейс между устройствами ввода-вывода и периферией, расположенной на кристалле микроконтроллера. А внутреннее статическое ОЗУ используется для хранения основных переменных и также для организации стека. Карта памяти данных показана на рис. 2. Регистры общего назначения нижние 32 ячейки в адресном пространстве памяти данных. Эти регистры наиболее предпочтительны для хранения локальных переменных, а также для сохранения временных переменных с результатами промежуточных вычислений. Иногда данные регистры используются для хранения глобальных переменных или указателей на области памяти, которые используется центральный процессор. Другими словами, процессор использует 32 регистра общего назначения при написании программ на языке высокого уровня, по своему усмотрению с целью наилучшего и эффективного выполнения кода рабочей программы. Распределение регистров общего назначения полностью ложится на плечи компилятора языка высокого уровня, при условии, что разработчик не использует ассемблерные вставки в программный код, в которых отдельно оговорено использование конкретного регистра. 7
Рис. 2. Структура памяти данных Если говорить о регистрах ввода-вывода, то, к примеру, в АТ-mega 16 (это широко распространенный представитель семейства Mega AVR микроконтроллеров) данные регистры занимают следующие вышестоящие 64 байта в адресном пространстве памяти данных. Каждый из этих регистров предоставляет допуск к регистру управления либо к регистрам периферийных устройств ввода-вывода, содержащихся в микроконтроллере. Разработчик использует регистры ввода-вывода весьма часто, чтобы обеспечить взаимодействие с периферией ввода-вывода микроконтроллера. Некоторые AVR микроконтроллеры, такие как ATmega 128 имеют значительно больше периферии ввода-вывода, и как следствие требуют больше адресного пространства для регистров ввода-вывода. Такие устройства требуют, как правило, до ста байт в области памяти данных. Таблица 1 показывает выбор регистров ввода-вывода, в зависимости от тог какие выбраны порты ввода-вывода. 8
Таблица 1 Имя регистра Адрес Адрес ввода-вывода регистра статического Описание ввода-вывода ОЗУ DDRA Ox1A Ox3A Регистр направления переда чи данных порта А DDRB Ox17 Ox37 Регистр направления переда чи данных порта В PORTA Ox1B Ox3B Регистр порта А PINB Ox16 Ox36 Регистр выводов порта B SREG Ox3F Ox5F Регистр статуса процессора Каждый регистр ввода-вывода имеет имя и адрес в пространстве памяти статического ОЗУ. Если разработчик использует язык программирования Си, то ему достаточно использовать только имена регистров. При программировании на языке Ассемблер необходимо крайне внимательно работать с адресами регистров ввода-вывода, так как в случае ошибки в одной цифре адреса можно обратиться к случайному регистру. Имена регистров ввода-вывода значительно удобнее в использовании. Компилятор ассоциирует символьные имена регистров с соответствующими адресами в ОЗУ. Любая программа на языке Си должна начинаться с директивы #include, которая подключает необходимый для корректной работы заголовочный файл, ассоциированный с компилятором. Нижеприведенный фрагмент программного кода показывает данную концепцию программирования: # include <mega16.h> main () { DDRA = OxFF; DDRB = OxOO; while (1) { PORTA = PINB; > } Приведенный программный код считывает информацию с контактов порта B используя команду PINB регистра ввода-вывода и записы 9
вает результат и в выходной регистр-защелку порта А. Компилятор обрабатывает адрес, чтобы использовать имена регистров из подключенного директивой заголовочного файла, к примеру, mega 16.h. Резюмируя вышесказанное, разработчик на языке Си использует регистры ввода-вывода, как интерфейс между внешними устройствами ввода-вывода, подключенными к микроконтроллеру. Следующая глава описывает функции каждого периферийного устройства ввода-вывода и соответствующие регистры ввода-вывода. 3.3. Память данных Память данных в микроконтроллерах Атмэл обычно содержит три раздельных области памяти для чтения и записи. Самая нижняя область в адресном пространстве памяти данных содержит тридцать три рабочих регистра общего назначения, следующая - 64 регистра ввода-вывода, которые расположены во внутреннем статическом ОЗУ. Регистры общего назначения служат лишь для хранения в них локальных переменных и разных временных данных для функционирования основной программы, также эти регистры используются для хранения глобальных переменных. 64 регистра ввода-вывода используются, как интерфейс между устройствами ввода-вывода и периферией, расположенной на кристалле микроконтроллера. А внутреннее статическое ОЗУ используется для хранения основных переменных и также для организации стека. Карта памяти данных показана на рис. 3. Регистры общего назначения нижние 32 ячейки в адресном пространстве памяти данных. Эти регистры наиболее предпочтительны для хранения локальных переменных, а также для сохранения временных переменных с результатами промежуточных вычислений. Иногда данные регистры используются для хранения глобальных переменных или указателей на области памяти, которые используется центральный процессор. Другими словами, процессор использует 32 регистра общего назначения при написании программ на языке высокого уровня, по своему усмотрению с целью наилучшего и эффективного выполнения кода рабочей программы. Распределение регистров общего назначения полностью ложится на плечи компилятора языка высокого уровня, при условии, что разработчик не использует ассемблерные вставки в программный код, в которых отдельно оговорено использование конкретного регистра. Если говорить о регистрах ввода-вывода, то, к примеру, в ATmega 16 (это широко распространенный представитель семейства Mega 10