- •«Инструментальные средства разработки аппаратно-программных систем»
- •Оглавление
- •7 Инструментальные средства разработки систем управления на
- •Введение. Управляющие системы на микроконтроллерах.
- •Характеристика микроконтроллеров семейства avr
- •1.1 Особенности микроконтроллеров
- •1.2 Характеристики микроконтроллера aTмega16
- •1.3 Условное графическое обозначение микроконтроллера
- •2 Архитектура микроконтроллера
- •2.1 Структура микроконтроллера
- •2.2 Организация программной памяти
- •Организация памяти данных
- •2.4 Арифметико-логическое устройство и регистр состояния процессора
- •Методы адресации. Форматы команд
- •Система команд
- •2.6.1 Команды передачи данных (пересылки)
- •2.6.2 Команды передачи управления
- •2.6.3 Команды арифметики и логики (вычислительные)
- •2.6.4 Команды сдвигов и операций с битами
- •2.7 Функционирование конвейера
- •3 Встроенные устройства
- •3. 1 Параллельные порты ввода/вывода
- •Подсистема прерываний микроконтроллера
- •Регистр флагов прерываний таймеров/счетчиков – tifr
- •Таймеры/счетчики
- •Общие сведения
- •Таймер/счетчик т0.
- •3.3.3 Таймер/счетчик т1.
- •Сторожевой таймер (Watchdog Timer).
- •3.4 Последовательные интерфейсы -spi и uart
- •3.4.1 Последовательный периферийный интерфейс - spi
- •3.4.2 Uart - универсальный последовательный порт
- •3.5 Аналоговый компаратор и ацп
- •3.5.1 Аналоговый компаратор
- •3.5.2 Аналого-цифровой преобразователь
- •3.6 Энергонезависимая память данных
- •4 Ассемблер микроконтроллеров avr
- •5 Взаимодействие микроконтроллера с объектом управления
- •5.1 Формирование временных интервалов (задержек)
- •5.1.1 Программный способ формирования временных интервалов
- •Ext_l: ldi r17, X ;х – число внутренних циклов
- •Ext_l: ldi r17, 53 ;Загрузка в r17 константы внутреннего цикла
- •5.2 Генерация импульсных сигналов управления с использованием программных задержек
- •5.2.1 Генерация последовательности импульсов с использованием программных задержек
- •5.2.2 Генерация пакета импульсов
- •5.2.3 Генератор заданного числа пакетов импульсов
- •Формирование импульсных сигналов управления с использованием таймеров микроконтроллера
- •5.4 Ожидание внешних событий
- •5.5 Обработка динамического дисплея
- •5.6 Особенности схемы дисплея в учебной системе управления.
- •5.7 Часы
- •5.8 Измерение временных параметров импульсов
- •5.9 Обработка клавиатуры
- •6 Программирование микроконтроллеров aТmega16
- •7 Инструментальные средства разработки сисТем управления на микроконтроллерах aTmega16
- •Дубров ф.И. Встроенные системы управления на микроконтроллере aTmega16
5.2 Генерация импульсных сигналов управления с использованием программных задержек
5.2.1 Генерация последовательности импульсов с использованием программных задержек
Примерный вид импульсного сигнала, сформированного заданной программой на выходе 1-го разряда порта D приведен на рис.54.
Одиночный выходной импульс в разряде порта МК формируется в последовательности:
установка в нулевое состояние используемого разряда порта микроконтроллера;
задержка, равная паузе tп ;
установка в состояние логической единицы используемого разряда порта – формирование фронта импульса;
задержка, равная длительности импульса tи.
Для получения импульсной последовательности эта процедура повторяется.
Рисунок 54
Примерный текст программы генератора импульсов в 1-м разряде порта D.
.INCLUDE "M16DEF.INC"
.ORG 0
LDI R16, 4 ;Организация стека в верхней ячейке ОЗУ
OUT SPH, R16 ;ее адрес для Mega16 - 45F. По сбросу
LDI R16, $5F ; SP=0
OUT SPL, R16
SBI DDRD, 1 ;Настройка разряда порта, в котором
;будут формироваться импульсы, на выход
NXT_PERIOD: CBI PORTD, 1 ;Начало паузы
RCALL T_PAUSE ;Вызов п.п. длительности паузы
SBI PORTD, 1 ;Фронт импульса
RCALL T_PULSE ; Вызов п.п. длительности импульса
RJMP NXT_PERIOD ;Переход на формирование след. периода
T_PAUSE: . ;Выбранный вид процедуры
. ;с рассчитанными значениями констант
.
RET
T_PULSE:
. ;Выбранный вид процедуры
. ;с рассчитанными значениями констант
.
.
.
RET
5.2.2 Генерация пакета импульсов
Очевидно, что для генерации пакета импульсов необходимо количество повторений процедуры генерации одного импульса, равное заданному числу импульсов в пакете. Осциллограмма пакета приведена на рис.55.
В начале программы должен быть организован счетчик импульсов в серии загрузкой в регистр значения числа импульсов в серии, заданного таблицей 1. После окончания каждого импульса декрементируется содержимое счетчика и проверяется его значение на нуль. Если его содержимое счетчика не равно нулю, то производится переход на начало формирования следующего импульса.
Рисунок 55
Иначе устанавливается нулевое значение в разряде порта и производится зацикливание команды перехода, т.е. процедура выполнена и далее “делать нечего”.
Пакет импульсов представлен на рис 4.
Пример 7 Примерный текст программы генератора пакета импульсов
.INCLUDE "M16DEF.INC" ;Включение файла с определением имен регистров
; и битов микроконтроллера ATmega16
.ORG 0 ;Начало программы с нулевой ячейки ПЗУ
LDI R16, 4 ;Организация стека в верхней ячейке ОЗУ
OUT SPH, R16 ;ее адрес для Mega16 - 45F, так как по сбросу
LDI R16, $5F ;МК устанавливаются SPH=0 и SPL=o
OUT SPL, R16
SBI DDRD, 1 ;Настройка разряда порта, в котором
;будут формироваться импульсы, на вывод
LDI R17 ,М ;М - число импульсов в пакете, R17- счетчик
;импульсов
NXT_PERIOD: CBI PORTD, 1 ;Начало паузы
RCALL T_PAUSE ;Вызов подпрограммы длительности паузы
SBI PORTD, 1 ;Фронт импульса
RCALL T_PULSE ; Вызов подпрограммы длительности импульса
DEC R17 ;Отсчет счетчиком импульса в обратную сторону
BRNE NXT_PERIOD ;Если импульс не последний в серии, то повторять
;(если в регистре не 0, то переход по метке)
CBI PORTD, 1 ;Обнулить разряд после окончания пакета
LOOP_I: RJMP LOOP_I ;Бесконечный цикл
T_PAUSE: . ;Выбранный вид процедуры
. ;с расcчитанными значениями констант
.
RET ;Возврат из подпрограммы
T_PULSE:
. ;Выбранный вид процедуры
;с расcчитанными значениями констант
.
.
.
RET ;Возврат из подпрограммы