- •Встраиваемые микроконтроллеры 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. Встроенный цап
- •Часть 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 фрейм
- •Логические ошибки
- •Стандартные коды ошибок
Структура и адресация памяти программ. Ветвления, циклы, подпрограммы, и группа команд передачи управления
Адресация в цифровых устройствах использует двоичное кодирование. Для адресации двух ячеек достаточно одной линии (адреса 0, 1), четырех ячеек – двух линий (адреса 0, 1, 2, 3). В общем случае n линий адресуют до N = 2n ячеек, для адресации N ячеек необходимо число линий равное ближайшему большему целому n = log2(N).
8 разрядов адресуют лишь 256 ячеек, поэтому в 8-разрядных МК для адресации памяти программ (нередко и для памяти данных) используют 16-разрядные регистры, позволяющие адресовать до 65536 = 64 К ячеек. Здесь и далее следует отличать 1 к = 1000 и 1 К = 1024 = 210.
Режимы адресации описывают способы кодирования (в машинной команде) адреса данных или перехода в программе. Различают прямую и непрямую (косвенную) адресацию.
При прямой адресации адрес является константой и входит в код команды. При адресации до 64 К адрес занимает 2 байта, поэтому длина команды получается 3-4 байта. Разделение большого адресного пространства на подобласти уменьшает длину команды, например, адресация только РОН, регистров ввода/вывода и пр.
Многочисленные варианты косвенной адресации используют регистры-указатели, содержимое которых формируется до выполнения команды с этим типом адресации или модифицируется во время выполнения. Косвенная адресация позволяет работать с вычисляемыми, а не только константными адресами, без чего работа с массивами была бы затруднительна.
Области памяти
Как было отмечено, память МК разделяется на память программ (ПП) [Program Memory] и память данных (ПД) [Data Memory].
Память программ обычно энергонезависима (постоянное запоминающее устройство – ПЗУ), так как управляющая программа редко модифицируется. Память данных состоит из энергозависимой части (оперативное запоминающее устройство – ОЗУ) – собственно рабочей ПД, и энергонезависимой (перепрограммируемое ПЗУ) для хранения редко изменяемых констант (настроек прибора).
Области адресации ПП и ПД разделены за счет выделения для ПП собственной магистрали выборки. Это позволяет производить одновременную выборку команд и данных.
Память программ
Память программ служит для хранения кодов программы и констант. Физическим носителем ПП обычно выступает один из видов энергонезависимого [nonvolatile] постоянного запоминающего устройства (ПЗУ) [ROM: Read Only Memory].
В МК семейства AVR память программ представлена ячейками размером 16 бит = 2 байта = 1 слово [word], количество которых варьируется от 512 до 65 536 слов (1 … 128 килобайт), что требует от 9 до 16 разрядов адреса соответственно. Это и определяет разрядность регистра счетчика команд (СК) [PC: Program Counter]. При размещении в ПП констант предоставляется доступ к отдельному байту, что усложняет обращение по адресам больше 65 535. Физическим носителем ПП является резидентное (встроенное в МК) электрически стираемое и программируемое постоянное запоминающее устройство (ЭСППЗУ) [FlashROM].
Команды передачи управления
Эти команды (в отличии от других) могут изменять последовательную выборку команд из памяти и служат для организации ветвлений (условных и безусловных) и механизма подпрограмм.
Ветвления безусловные представлены командами перехода и различаются лишь способом адресации перехода RJMP (относительная 12 бит), IJMP (косвенная Z-указатель 16 бит), JMP (прямая 16 бит).
Ветвления условные можно разделить на подгруппу ветвлений по состоянию флагов состояния процессора и подгруппу пропуска следующей команды.
Первая из указанных подгрупп представлена командами BRxx (от branch – ветвление) с относительным механизмом адресации 7 бит. Эти команды флага состояния процессора (или их сочетания). Состояние флагов процессора изменяется при выполнении арифметико-логических команд, а также команд сравнения TST, CP, CPC, CPI.
Команды пропуска (skip) проверяют состояние бита РОН (SBRS, SBRC), либо бита РВВ (SBIS, SBIC), либо сравнивает содержимое двух РОН (CPSE) и при выполнении условия пропускает следующую команду (PC + 2/3 PC), иначе выполняет следующую (PC + 1 PC). В этих командах адреса перехода предопределены, поэтому нет операнда адреса перехода.
Механизм подпрограмм обеспечивает многократное выполнение отдельного алгоритма или его части при экономии памяти программ. Использование механизма подпрограмм наряду с механизмом макросов развивает модульность программы и упрощает процесс отладки и развития программы.
Тело подпрограммы (п/п – subroutine) состоит из одной и более машинных команд. Адрес расположения первой команды называется точкой входа, для удобства она обозначается символической меткой. В этом случае команда вызова п/п (CALL, RCALL, ICALL, EICALL) в качестве операнда использует эту метку для вычисления адреса перехода. После выполнения запланированных в п/п действий необходимо вернуться к команде, следующей за командой вызова п/п. Для этого необходима хотя бы одна команда возврата из п/п (RET). Применение команд вызова п/п и возврата из п/п приводит к некоторым затратам времени (3–4 м. ц.) и памяти программ (1–2 слова на вызов и 1 слово на возврат из п/п), поэтому при длине п/п менее 5–8 команд эффективнее использовать механизм макрокоманд.
При необходимости передавать в п/п параметры и/или получать из п/п некоторые данные (результат) используются различные механизмы. Один из самых простых и распространенных – через РОН: п/п «знает» номера регистров, через которые получает входные параметры и по которым должна расположить возвращаемые значения.
