
- •Встраиваемые микроконтроллеры avr-8
- •Санкт-Петербург 2013 Содержание
- •Часть 1. Архитектура мк (л2, л3)
- •Понятия мк для встраиваемых приложений и семейства мк. Семейство avr-8
- •Структура и архитектура мк
- •Тактирование, процессор и арифметико-логическая группа команд
- •Структура и адресация памяти программ. Ветвления, циклы, подпрограммы, и группа команд передачи управления
- •Структура и адресация памяти данных. Группа команд передачи данных
- •Порты ввода/вывода. Типовая схема включения мк. Структура управляющей программы, поллинг.
- •Часть 2. Процесс проектирования устройств на мк (л4, л5)
- •2.1. Этапы процесса проектирования устройств на мк
- •2.2.Техническое задание и разработка алгоритма (блок-схемы)
- •2.3. Языки программирования и синтаксическая проверка проекта
- •2.4. Средства загрузки кодов программ и данных (программаторы)
- •2.5. Средства отладки для выявления логических и схемотехнических ошибок
- •2.6. Подключение индикаторов и клавиатуры
- •Часть 3. Ввод/вывод в мпу
- •3.1. Понятие и характеристики интерфейса
- •3.2. Внутрисистемные интерфейсы в мпу
- •3.3 Параллельный порт avr
- •3.4. Внешняя магистраль памяти данных avr мк
- •3.5. Принцип и средства ввода/вывода по прерываниям.
- •3.6. Принцип прямого доступа к памяти
- •Часть 4. Прерывания (л8)
- •4.1. Механизм прерываний в avr и его программирование
- •4.2. Входы прерываний inTx и pcinTx.
- •Часть 5. Таймеры/счетчики
- •5.1. Задачи формирования и измерения временных интервалов
- •5.2. Принципы программного формирования/измерения временного интервала
- •5.3. Таймер/счетчик с прерыванием по переполнению
- •5.4. Таймер/счетчик с дополнительными узлами захвата и сравнения
- •Часть 6. Задачи и устройства аналогового ввода/вывода (л12, л13)
- •6.1. Задачи аналогового ввода и вывода
- •6.2. Встроенный аналоговый компаратор
- •6.3. Встроенный многоканальный ацп
- •6.4. Встроенный цап
- •6.5. Терморегулятор
- •Часть 7. Задачи и устройства последовательного интерфейса (л14, л15)
- •7.1. Принципы и преимущества последовательного интерфейса
- •7.2. Функции встроенного контроллера последовательного интерфейса
- •7.3. Протокол и контроллер трехпроводного синхронного пи (spi)
- •7.4. Устройство контроллера i2c и его применение
- •7.5 Цап с последовательным интерфейсом
- •7.6. Устройство контроллера u(s)art и его применение
- •7.7. Сетевые протоколы и их стандартизация
- •7.8. Открытый протокол Modbus
- •История
- •Введение
- •Категории кодов функций
- •Модель данных
- •Стандартные функции протокола Modbus
- •Запись одного значения
- •Запись нескольких значений
- •Контроль ошибок в протоколе Modbus rtu
- •Rtu фрейм
- •Логические ошибки
- •Стандартные коды ошибок
Структура и архитектура мк
Архитектурой называют образ, видимый пользователю, т. е. программисту или схемотехнику, работающему с данным МК. Основными элементами архитектуры являются:
• система команд и способы адресации;
• организация памяти и регистров;
• организация встроенных периферийных устройств и системы прерываний;
• типовые схемы включения с описанием назначения и расположения выводов и особенностей внутренней схемотехники выводов.
Знание архитектуры является минимально достаточным для понимания и практической работы с микроконтроллером. Сравнение однотипных черт и параметров архитектуры разных МК позволяет грамотно выбирать МК для решения конкретной задачи.
Структура МК отражает состав и связи его внутренних блоков в графическом виде. Знание структуры МК не является обязательным для работы с МК, но облегчает понимание и сравнение МК между собой за счет дополнительного визуального восприятия.
Разработчики МК снабжают каждую модель МК подробным техническим описанием [DataSheets], в котором приводятся отличия в архитектуре, структурные схемы, технические параметры в виде текстов, таблиц и графиков, иногда с примерами программирования. Описания элементов архитектуры общих для всей серии (семейства) МК, прежде всего, описания системы команд и режимов адресации, размещаются в отдельных документах на сайте разработчика. Примеры применения МК для решения конкретных прикладных задач находятся там же в файлах описания приложений [Application Notes].
Архитектура AVR
Система команд 8-разрядных МК серии AVR содержит от 90 до 133 инструкций, число которых зависит от модели. Как и для большинства других МК, этот набор можно условно разделить на три основные группы:
- арифметико-логические, включая сдвиги (собственно вычисления),
- передачи данных между ячейками памяти МК,
- ветвлений (переходов) в программе (формируют структуру программы).
Среди них можно выделить группы команд, оперирующих с байтами (8-битное слово) и с битами, отдельные команды работают с двухбайтными числами. Нередко группу команд работы с битами выделяют в самостоятельную четвертую группу.
Формат команды описывает структуру машинного слова команды. Часть бит выделяют под код операции, это обязательная часть любой команды. Остальные биты указывают операнды, то есть данное, адрес ячейки данных или адрес перехода. Различают команды безоперандные, одно- и двухоперандные. В двухоперандных командах обработки данных один из операндов называется источником [source], его содержимое не изменяется, другой - приемником [destination], его содержимое содержит результат операции.
Способы адресации определяют способы кодирования операндов, для кодирования используется двоичный код. Различают следующие виды адресации:
- прямая – адрес в виде константы, число бит n определяет число адресуемых ячеек N = 2n,
- непосредственная (или абсолютная) – данное в виде константы,
- несколько разновидностей косвенной – указывается адрес регистра-указателя (X, Y, Z, PC, SP), содержимое которого содержит адрес ячейки данных или перехода:
- простая косвенная,
- с преддекрементом – значение регистра указателя увеличивается до использования адреса,
- с постинкрементом – значение регистра указателя уменьшается после использования адреса,
- индексная – значение адреса вычисляется как сумма содержимого регистра указателя и константы,
- относительная – разновидность индексной с использованием счетчика команд кака регистра указателя перехода.
Краткий перечень команд находится в Приложении 3 и разбит на подгруппы команд. В первой колонке находится мнемоника – имя команды из 3-4 латинских символов, далее идут операнды – адреса ячеек данных (или сами данные) или адреса перехода. Далее следуют описание действий команды словами и виде условных значков. В колонке «Флаги» указаны имена битов регистра состояния SREG, значения которых меняются при выполнении данной команда. В колонке «цикл» указана длительность выполнения команды в машинных циклах. В колонке «слов» - длина команды в словах (1 слово – 16 бит). «Двоичный код команды» расписан по битам, для обозначения кодов адресов используются условные значки, расшифровка – ниже таблицы.
Более подробное рассмотрение системы команд будет дано в следующих разделах данной главы.
Память МК с так называемой гарвардской архитектурой разделяется на две принципиально различные области – память программ (ПП) [Program Memory] и память данных (ПД) [Data Memory]. Эти области разделены на два непересекающихся адресных пространства, имеют разное назначение, размер и тип ячеек. Разделение адресных пространств обеспечивается системой команд и способами адресации.
Память программ служит для хранения кодов программы и констант. Физическим носителем ПП выступает энергонезависимое постоянное запоминающее устройство (ПЗУ) типа FlashROM.
Память программ располагается только в кристалле, представлена ячейками размером 2 байта, количество которых варьируется от 1 до 128 (256) килобайт (КБ), что требует от 9 до 16 (17) разрядов адреса соответственно. Это и определяет разрядность регистра счетчика команд (СК) [PC: Program Counter]. При размещении в ПП констант предоставляется доступ к отдельному байту, что усложняет обращение по адресам больше 216 – 1 = 65 535.
Память данных имеет байтовую организацию и адресное пространство объемом до 64 КБ (16 битный адрес). В этом пространстве находятся три области, различные по назначению и техническим характеристикам:
1) энергозависимую оперативную память статического типа SRAM для временного хранения данных (от 0 байт до 64 КБ);
2) пространство регистров ввода/вывода (РВВ) [I/O Registers], иногда называют регистрами специальных функций (РСФ) [Spicial Function Registers – SFR], служит для управления и наблюдения состояния процессора и встроенных периферийных устройств ввода/вывода; занимает 64 ячейки в младших моделях, в старших моделях требуется больше ячеек [Ext. I/O Reg.], они занимают часть адресного пространства SRAM);
3) энергонезависимую память типа EEPROM для длительного хранения данных (до 4 КБ с доступом через регистры ввода/вывода).
Область оперативной памяти может иметь до трех подразделов:
1) обязательный файл регистров общего назначения (РОН) [GPR] объемом 32 байта – наиболее интенсивно используемая память для размещения данных и указателей (адресов),
2) резидентная (то есть размещенная на кристалле) память данных [Internal SRAM] объемом от 0 до 8 КБ,
2) внешняя память данных [External SRAM] объемом до 60 КБ, требует наличия 19 выводов для подключения.
Состав периферийных устройств ввода/вывода варьируется от модели к модели МК. В МК подсемейств AT90, ATmega, ATtiny в набор таких устройств входят:
1) Параллельные порты ввода / вывода – основной механизм ввода и вывода дискретных (цифровых) сигналов разрядностью 8 бит.
2) Параллельная магистраль (шина) для подключения внешних микросхем памяти данных (при наличии достаточного количества выводов – не менее 19).
3) Векторная маскируемая система прерываний с аппаратным распределением приоритетов и входы прерываний для быстрой реакции, асинхронной к основному циклу управляющей программы.
4) Таймеры/счетчики для формирования временных интервалов, генерации импульсов и измерения временных параметров внешних сигналов.
5) Контроллеры последовательного интерфейса для коммуникации в распределенной системе управления как в рамках одной установки, так и в составе распределенной системы управления.
6) Устройства аналогового интерфейса: аналоговый компаратор, аналогово-цифровой преобразователь, реже – цифро-аналоговый преобразователь.
В последней новации семейства AVR-8 – 8/16-разрядном подсемействе ATxmega, при наличии того же ядра и общей архитектуре, кроме усовершенствованных таймеров /счетчиков и устройств аналогового интерфейса, встречаются принципиально новые периферийные блоки:
1) Система управления событиями для разгрузки процессора от пересылки сигналов между блоками МК.
2) Контроллер прямого доступа к памяти - ориентирован на пересылку пакетов данных между блоками МК без участия процессора.
Типовая схема включения определяется числом и назначением выводов [pin] микроконтроллера. Следует выделить выводы особого назначения – питания [VCC, GND, AGND и пр.], сброса [RESET], тактирования [XTAL1, 2], остальные используются как выводы параллельных портов ввода/вывода [PB0, PD4, …], а также могут иметь одну или несколько альтернативных функций ввода/вывода (обозначаются через «косую черту») [PD2/INT0/RXD1/PCINT26]. Альтернативность означает возможность выбора только одной из функций для конкретного применения.
Каждая модель МК выпускается в одном или нескольких типах корпусов, имеющих одинаковое или примерно одинаковое число выводов и разную конструкцию. В техническом описании модели МК приводится описание расположения (нумерация) выводов для каждого корпуса (цоколевка).
Конкретная схема включения показывает внешние связи МК с системой питания, элементами тактирования (если не используется внутреннее тактирование), устройством загрузки/выгрузки кода программы и схемными узлами аппаратной обработки входных и выходных сигналов. Примеры будут рассмотрены ниже, после более подробного знакомства с архитектурой МК AVR-8.
Структура AVR
Основные элементы структуры процессорных устройств: собственно процессор, память программ и данных, устройства ввода/вывода и набор шин (проводников), объединяющих все элементы в систему.
Типовая структура микроконтроллера AVR-8 представлена на рис. 1.1.
Здесь показаны основные внутренние блоки, связи между ними и внешние выводы. Блоки, изображенные пунктирной линией являются вариативной частью МК, остальные входят в состав любой модели.
Практически неизменным по составу является ядро МК, включающее супервизор питания и сброса, систему тактирования, сторожевой таймер [WatchDog Timer], модуль внутрисистемной загрузки/выгрузки [In-System Programming], процессор [AVR CPU], память программ [FlashROM], память данных [Static RAM] и [EEPROM], набор бит конфигурации [Fuse] и защиты [Lock]. Здесь варьируется только число ячеек памяти, а также состав и назначение битов конфигурации.
В составе любой модели МК можно встретить такие блоки ввода/вывода, как модуль прерываний, параллельные порты ввода/вывода, не менее двух таймеров/счетчиков (T/C0 и T/C1) и аналоговый компаратор [Analog Comparator].
В моделях МК с расширенным составом можно встретить увеличенный состав параллельных портов, таймеров/счетчиков и такие блоки ввода/вывода, как аналого-цифровой преобразователь (АЦП) [Analog to Digital Converter] с источником опорного напряжения (ИОН) [Analog Reference] и модули аппаратной поддержки последовательного интерфейса различных стандартов – от простейших байтовых асинхронного [U(S)ART] и синхронного типа [SPI, I2C], до гораздо более сложных и эффективных CAN и USB.
Рис. 1.1. Структура МК AVR-8
В моделях последних поколений можно встретить модуль поддержки процесса отладки по принципу внутрисхемной эмуляции [In Circuit Emulator], реализуемой в МК серии ATtiny через вход сброса RESET по технологии однопроводного интерфейса, а в МК серии ATmega – через интерфейс JTAG.
Память данных и блоки ввода вывода подключены к процессору по внутренней системной магистрали с 8-разрядной шиной данных, память программ – по отдельной магистрали с 16-разрядной шиной данных. Остальные внутренние связи между блоками показаны в усеченном виде: выход тактового генератора fclk, интерфейс модуля загрузки/выгрузки с блоками энергонезависимой памяти и битами конфигурации и защиты.
Для подключения внешней памяти данных [External Static RAM] используется внешний интерфейс шинного типа, аналогичный внутренней магистрали, но с сокращенным набором проводников: мультиплексированная шина адреса и данных DA0…7, шина старших разрядов адреса A8…15, сигналы управления ЗАПИСЬ [WR], ЧТЕНИЕ [RD] и временного разделения адреса и данных [ALE].
Внешние выводы [pins] можно условно разбить на группы.
Выводы VCC и GND служат исключительно для подачи питания, к выводу VCC подводится положительное напряжение питания (+5 В или ниже), вывод GND является общим как для подключения нуля питания, так и для входных и выходных сигналов. Эти выводы имеют самую большую токовую нагрузку (до нескольких сотен миллиампер), поэтому в корпусах с большим количеством выводов их дублируют для равномерного распределения нагрузки.
Вход сброса RESET и выводы системы тактирования XTAL1, XTAL2 могут быть альтернативно использованы как входы/выходы параллельных портов (выбор только конфигурационными битами Fuse).
В МК серии ATmega для улучшения условий питания аналоговых модулей выделяют выводы питания AVCC и AGND, их потенциалы могут незначительно отличаться от потенциалов выводов цифрового питания (VCC и GND). Вывод AREF может использоваться как вход или выход опорного напряжения (если выбран при программной настройке аналогового компаратора или АЦП).
Все остальные выводы МК по умолчанию выполняют функции входов параллельных портов (Px.y, x = {A, B, …}, y = {0, 1, … 7}) и программно могут быть перенастроены либо как выходы портов, либо для использования предусмотренной разработчиком альтернативной функции. Под этим понимается функции входов или выходов остальных блоков ввода/вывода: входов прерываний (INTx, PCINTx), таймеров/счетчиков (входы Tx,, ICPx, выходы OCyx), аналогового компаратора (AIN0, AIN1) или АЦП (ADC0, ADC1, …), последовательного интерфейса, шинного интерфейса внешней памяти данных.
Подробнее о назначении выводов можно узнать из описания работы модулей ввода/вывода (в этом пособии) и технического описания конкретного микроконтроллера.