- •Встраиваемые микроконтроллеры 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 фрейм
- •Логические ошибки
- •Стандартные коды ошибок
Часть 5. Таймеры/счетчики
в задачах формирования и измерения импульсов. (Л9…Л11)
5.1. Задачи формирования и измерения временных интервалов
В большинстве задач управления время выступает как важный фактор. Период исполнения основного цикла обычно достаточно сильно варьируется и не может служить надежным счетчиком времени. В то же время в ряде задач необходимо достаточно строго выдерживать интервалы времени.
1) Формирование временных интервалов:
а) синхронизация исполнения подпрограмм с внутренними и внешними событиями;
б) формирование на выходах МК одиночных и периодических импульсов с постоянными и переменными параметрами – частота/период T/f, длительность импульса/ паузы tи/tп, фаза импульса φ, число импульсов n (рис. 5.1).
2) Измерение временных интервалов событий на входах МК - частоты/периода T/f, длительности импульса/ паузы tи/tп, фазы импульса φ, числа импульсов n.
а
б
в
г
д
Рис. 5.1
Задача типа 1.а требует получения данных о времени / дате от внешнего устройства или формирования собственных данных об изменении даты/времени и периодического сканирования этих данных для выявления заданного момента. Период сканирования не должен превышать точность задания момента времени или длительности временного интервала.
Задача формирования однократного импульса состоит из формирования фронта (перевод выхода в высокое состояние), формирование длительности tи (например, программной задержкой) и формирования среза (перевод выхода в низкое состояние).
Формирование последовательностей периодических импульсов на выходах МК сводится к выполнению повторяющихся циклов и традиционно называется генерацией импульсов. Такие задачи возникают при управлении электроприводами, преобразователями электрической энергии, тактировании последовательных интерфейсов и пр.
Период следования импульсов T (длительность цикла) состоит из формирования фронтов и срезов на выходах МК и формирования временных интервалов между фронтами и срезами (длительность импульса tи и длительность паузы tп). При малых значениях периода или длительности импульса (менее тысячи машинных циклов) необходимо учитывать время программного формирования фронта и среза.
При постоянных значениях длительностей импульса и паузы для формирования временных интервалов можно использовать как программные задержки, так и более эффективный принцип: тактирование интервала импульсами (программными или аппаратными), период Tclk которых кратен или много меньше длительности формируемого интервала m = T / Tclk = const или m = tи / Tclk = const.
При генерации импульсов с переменными во времени значениями интервалов (T = 1/f = var или tи = var и пр.) также удобно использовать принцип тактирования короткими импульсами m = T / Tclk = var или m = tи / Tclk = var. Выбор частоты (периода) тактирующих импульсов определяет дискретность варьирования временных интервалов.
Обращаем внимание, что варьирование частоты генерируемых импульсов фактически всегда заменяется варьированием периода. При незначительном диапазоне изменения (fmax - fmin) * 2 / (fmax + fmin) < 0.3 – 0.7 это не приводит к значительным погрешностям, при большем следует каждый раз вычислять значение периода для варьируемого значения частоты Тi = 1 / fi.
Для плавного регулирования импульсных устройств часто применяется принцип широтно-импульсного модулирования (ШИМ), когда частота управляющих импульсов постоянна, варьируется длительность (ширина) импульса tи = var, (рис. 5.1, в).
По числу используемых выходов МК различают одноканальную и многоканальную генерацию импульсов. Для многоканальной генерации появляется параметр фазы φ – временной сдвиг между импульсами разных каналов (рис. 5.1, д). Этот сдвиг задается либо абсолютным значением времени задержки tз, либо относительной задержкой, не зависящей от частоты / периода импульсов φ = tз / Т. Для управления мощными преобразователями электрической энергии широко используется мостовая схема, она требует два канала импульсов, сдвинутых по отношению к друг другу строго на пол периода. Для управления трехфазными электродвигателями требуется три канала импульсов со сдвигом на одну треть периода.
Иногда задача генерации усложняется требованием формировать импульсы, синхронизируемые внешним периодическим сигналом (регулируемые выпрямители и инверторы, ведомые сетью). В этом случае (рис. 5.1, г) фронт (или срез) синхросигнала на входе МК запускает отсчет очередного цикла, состоящего из интервала задержки (обычно варьируемого) и интервала длительности импульса (обычно постоянного).
Начало последовательности импульсов привязано к внутреннему времени или логике программы, либо к заданному изменению входного сигнала (фронт или срез). Длина последовательности импульсов задается либо числом импульсов n, либо внешними условиями, либо таймером. В первом случае удобно организовать цикл из N периодов. Во втором и третьем при запуске устанавливается флаг генерации f_gen, разрешающий генерацию, его сброс обеспечивается фронтом или срезом внешнего сигнала или таймером.
Задачи измерения параметров внешних сигналов можно разделить на задачу измерения длительности импульса или периода и на задачу измерения частоты.
Измерение длительности импульса или периода состоит в выявлении фронта и среза для импульса или чередующихся фронтов (или срезов) для периода и в измерении длительности промежутка между этими двумя событиями. Для измерения длительности следует тактировать промежуток времени импульсами, период которых много меньше интервала и вести счет этих импульсов. Точность измерения в этом случае будет не лучше периода тактирования.
Измерение частоты импульсов f сводится к подсчету числа импульсов n за фиксированный интервал времени T: f [Гц] = n / T [имп/с]. Задача измерения частоты периодических импульсов на входе МК сводится к параллельному решению двух задач: формированию интервала измерения T, выявлению фронтов (или срезов) импульсов на входе МК и их подсчету суммированием; по окончании очередного интервала значение счетчика импульсов копируется в ячейку результата (при необходимости масштабируется), счетчик импульсов обнуляется для нового цикла измерений.
Выбор интервала измерения определяет дискретность измерения частоты – чем больше импульсов за интервал измерения, тем меньше погрешность измерения. Точность измерения сильно зависит от точности задания и стабильности интервала измерения. При высоких частотах измеряемого сигнала желателен аппаратный счет импульсов.
Измерение сдвига фазы между импульсами одинаковой частоты, например, между меандрами напряжения и тока резонансного контура (рис. 5.1, д), сводится к измерению задержки между фронтами tс (или срезами) импульсов на входах МК. Если частота f0 неизменна или меняется в малом диапазоне значение фазы линейно зависит от частоты φ = f0 * tс , значение частоты может считаться константой. Если частота сигналов варьируется более широко или повышаются требования к точности измерений, необходимо параллельно измерять частоту.
