Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Микроконтроллерные устройства автоматики

Покупка
Основная коллекция
Артикул: 631735.01.99
Доступ онлайн
50 ₽
В корзину
Пособие предназначено для студентов очного и заочного отделения, обучающихся по направлению подготовки 220200.62 «Автоматизация и управление», по дисциплине «Микропроцессорные устройства автоматики», (бакалавр, 4 курс), в качестве практикума по программированию однокристальных микроконтроллеров. Пособие содержит учебные материалы и методические рекомендации по самоконтролю (вопросы для самопроверки). Работа выполнена по заданию Министерства образования и науки РФ, проекты № 7.559.2011 (Темплан). Для успешного овладения курсом требуется успешное обучение по ранее изученным курсам «Программирование и основы алгоритмизации», «Электроника», «Схемотехника».
Пинигин, К. Ю. Микроконтроллерные устройства автоматики : учебное пособие / К. Ю. Пинигин. - Новосибирск : НГТУ, 2012. - 86 с.: ISBN 978-5-7782-2120-8. - Текст : электронный. - URL: https://znanium.com/catalog/product/546581 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.

Министерство образования и науки Российской Федерации НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ





К.Ю. ПИНИГИН, В.А. ЖМУДЬ





                МИКРОКОНТРОЛЛЕРНЫЕ УСТРОЙСТВА АВТОМАТИКИ




„ ,..........,
Учебно-методическое пособие












НОВОСИБИРСК

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

Доступ онлайн
50 ₽
В корзину