- •Кузнецов в.Н., Лисютченков с.Н. Цифровые и микропроцессорные устройства
- •Часть 3
- •220301– Автоматизация технологических процессов и производств
- •Содержание
- •Предисловие
- •Лабораторная работа №1 «Освоение среды разработки vmlab 3.12»
- •1.2 Теоретическое введение
- •1.2.1 Общие сведения
- •1.2.2 Среда разработки vmlab
- •1.2.3 Описание пользовательского интерфейса
- •1.2.4 Команды меню
- •Save All − сохранить все файлы Save As − сохранить файл текущего окна под новым именем
- •1.2.5 Доступные окна
- •1.2.6 Аппаратные компоненты
- •1.2.7 Формат программы на ассемблере
- •1.3 Порядок выполнения лабораторной работы
- •1.3.1 Создание нового проекта
- •1.3.2 Редактирование файла ассемблера
- •1.3.3 Ассемблирование и выполнение программы
- •1.4 Задание на лабораторную работу
- •1.5 Контрольные вопросы
- •1.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №2 «Изучение микроконтроллера aTmega128 и основы программирования»
- •2.2.1 Общие сведения о микроконтроллере aTmega128
- •Регистры ввода/вывода (рвв)
- •Организация памяти
- •Внешние прерывания
- •2.2.9 Директивы транслятора ассемблера
- •2.2.10 Выражения
- •2.2.11 Операнды
- •2.2.12 Функции
- •2.2.13 Операции
- •2.3 Порядок выполнения лабораторной работы
- •2.4 Задание на лабораторную работу
- •Задание для индивидуальной работы
- •2.5 Контрольные вопросы
- •2.6 Содержание отчета по лабораторной работе
- •3.2.2 Адресация в микроконтроллере
- •3.2.3 Команды пересылки данных
- •Mov Rd,Rr(пересылка между рон) – копирует содержимое регистра Rrв регистр Rd. Регистр-источник Rrне изменяется.
- •3.2.4 Команды передачи управления
- •3.3 Порядок выполнения лабораторной работы
- •3.4 Задание на лабораторную работу
- •3.5 Контрольные вопросы
- •3.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №4 «Выполнение арифметических операций»
- •4.2 Теоретическое введение
- •4.3 Порядок выполнения лабораторной работы
- •4.4 Задание на лабораторную работу
- •4.5 Контрольные вопросы
- •4.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №5 «Изучение логических операций»
- •5.2 Теоретическое введение
- •Управление энергопотреблением и режимы сна.
- •5.3 Порядок выполнения лабораторной работы
- •5.4 Задания на лабораторную работу
- •5.5 Контрольные вопросы
- •5.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №6 «Изучение портов ввода/вывода и их программирование»
- •6.2 Теоретическое введение
- •6.2.1 Общие сведения
- •6.2.2 Порты в качестве универсального цифрового ввода-вывода
- •6.2.3 Настройка выводов
- •6.2.4 Неподключенные выводы
- •6.2.5 Альтернативные функции порта
- •6.2.5.1 Альтернативные функции порта a
- •6.2.5.2 Альтернативные функции порта в
- •6.2.5.3 Альтернативные функции порта c
- •6.2.5.4 Альтернативные функции порта d.
- •6.2.5.5 Альтернативные функции порта e
- •6.2.5.6 Альтернативные функции порта f
- •6.2.5.1 Альтернативные функции порта g
- •6.2.6 Описание регистров портов ввода-вывода
- •6.2.7 Обращение к портам ввода/вывода
- •6.3 Порядок выполнения лабораторной работы на симуляторе
- •6.4 Задание на лабораторную работу
- •Задания для индивидуальной работы
- •Контрольные вопросы
- •6.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №7.
- •7.2.1 Общие сведения о Память
- •7.2.2 Статическое озу памяти данных
- •7.2.3 Организация памяти
- •7.2.4 Запоминающее устройство sram
- •7.2.5 Временная диаграмма доступа к памяти
- •7.3 Память данных на эсппзу
- •7.3.1 Чтение и запись эсппзу
- •7.3.2 Адресные регистры эсппзу
- •Порядок выполнения
- •7.4 Память ввода-вывода
- •Порядок выполнения
- •Порядок выполнения
- •7.5 Задание на лабораторную работу
- •Задание для индивидуальной работы
- •7.6 Контрольные вопросы
- •7.7 Содержание отчета по лабораторной работе
- •Генерация тактовых импульсов
- •Инициализация усапп
- •8.2.2 Передача данных - Передатчик усапп
- •8.2.3 Прием данных - Приемник усапп
- •Асинхронный прием данных
- •8.2.4 Многопроцессорный режим связи
- •8.2.5 Описание регистров усапп
- •8.2.6 Последовательный периферийный интерфейс - spi
- •8.2.7 Функционирование вывода ss
- •8.2.8 Связь двух мк
- •8.3 Задание на лабораторную работу
- •Задание для индивидуальной работы
- •8.6 Контрольные вопросы
- •Лабораторная работа №9 «Изучение принципа работы таймеров/счетчиков микроконтроллера»
- •9.2 Теоретическое введение
- •9.2.1 Общие сведения о таймерах/счетчиках
- •9.2.2 Назначение выводов таймеров/счетчиков
- •9.2.5 Выбор источника тактового сигнала
- •9.2.6 Режим таймера
- •9.2.7 Функция захвата (Capture)
- •9.2.8 Функция сравнения (Compare)
- •9.2.9 Режим шим
- •9.2.10 Сторожевой таймер
- •9.2.11 Общие сведения о работе клавиатуры
- •9.2.12 Ввод кода нажатой клавиши
- •9.2.13 Сканирование и идентификация
- •Листинг проектного файла №9
- •На эмуляторе
- •9.4 Задание на лабораторную работу
- •Задания для индивидуальной работы
- •9.5 Контрольные вопросы
- •10.2.2 Функционирование модуля ацп
- •10.2.3 Принцип действия
- •10.2.4 Каналы дифференциального усиления
- •10.2.5 Изменение канала или выбор опорного источника
- •10.2.6 Входные каналы ацп
- •10.2.7 Источник опорного напряжения ацп
- •10.2.8 Повышение точности преобразования
- •10.2.9 Методы компенсации смещения
- •10.2.10 Описание получения результата преобразования
- •10.2.5 Параметры ацп
- •10.2 Порядок выполнения работы на симуляторе
- •На эмуляторе
- •10.3 Задание на лабораторную работу
- •Задания для индивидуальной работы
- •10.4 Контрольные вопросы
- •Приложение
- •Список литературы
9.2.8 Функция сравнения (Compare)
Данная функция заключается в непрерывном (каждый машинный цикл) сравнении содержимого счетного регистра таймера/счетчика с числом, находящемся в регистре сравнения. При совпадении содержимого этих регистров устанавливается флаг соответствующего прерывания, а также могут выполняться другие действия.
Если состояние таймера/счетчика становится равным числу, находящемуся в регистре сравнения OCR1, то в следующем машинном цикле устанавливается соответствующий этому регистру флаг прерывания OCF1 в регистре TIFR и генерируется запрос на прерывание. Разрешение прерываний осуществляется установкой в “1” флага OCIE1 регистра TIMSK.
Наряду с установкой флага в регистре TIFR при равенстве счетного регистра и регистра сравнения могут выполняться и другие действия:
сброс таймера/счетчика;
изменение состояния определенного вывода микроконтроллера (для всех регистров).
Поведение микроконтроллера, т.е. выполнение или невыполнение указанных действий, определяется несколькими разрядами регистров управления TCCR1A и TCCR1B. Названия этих разрядов и их описание приведены в таблице 9.11.
Таблица 9.11 Управление работой схемы сравнения таймера/счетчика Т1
Регистр |
Название |
Описание | ||
TCCR1A |
7,6 |
|
Управление выводом OC1 микроконтроллера Состояние этих разрядов определяет поведение вывода ОС1 при совпадении содержимого счетного регистра и регистра сравнения OCR1. При изменении этих разрядов соответствующие прерывания от компаратора таймера/счетчика рекомендуется запретить (во избежании ложной генерации прерывания). Чтобы таймер/счетчик мог управлять этим выводом, он должен быть сконфигурирован как выходной. Поведение вывода задается следующим образом: | |
СОМ11 |
COM10 |
Описание | ||
0 |
0 |
Таймер/счетчик Т1 отключен от вывода ОС1 | ||
0 |
1 |
Состояние вывода меняется на противоположное | ||
1 |
0 |
Вывод сбрасывается в “0” | ||
1 |
1 |
Вывод устанавливается в “1”
| ||
TCCR1B |
3 |
CTC1
|
Сброс таймера/счетчика Если разряд установлен в “1”, то при совпадении содержимого счетного регистра и регистра сравнения OCR1 производится сброс таймера/счетчика в состояние $0000 |
9.2.9 Режим шим
В этом режиме таймер/счетчик Т1/T3 представляет собой одинарный или сдвоенный, в зависимости от модели, широтно-импульсньй модулятор. Широтно-импульсная модуляция является одним из видов непрерывной импульсной модуляции, при котором ширина импульса пропорциональна значению модулирующего сигнала. Соответственно в данном случае широтно-импульсная модуляция заключается в генерировании сигнала с программируемыми частотой и скважностью.
Для перевода таймера/счетчика Т1 в режим ШИМ и задания частоты ШИМ-сигнала используются разряды PWM11:PWM10 регистра управления таймером TCCR1A. Соответствие между состоянием этих разрядов и режимом работы таймера/счетчика Т1 приведено в таблице 9.12.
Таблица 9.12 Управление режимом ШИМ таймера/счетчика Т1
Регистр TCCR1A |
Описание | |
PWM11 |
PWM10 | |
0 |
0 |
Режим ШИМ таймера/счетчика Т1 выключен |
0 |
1 |
8-разрядный широтно-импульсный модулятор |
1 |
0 |
9-разрядный широтно-импульсный модулятор |
1 |
1 |
10-разрядный широтно-импульсный модулятор |
Для генерации сигнала с ШИМ используется схема сравнения таймера/счетчика, поэтому модулятор является одинарным один регистр сравнения.
Названия регистров сравнения, их адреса и правила обращения к ним были описаны в предыдущем параграфе. Соответственно сигнал снимается с выхода схемы сравнения таймера/счетчика.
В рассматриваемом режиме счетный регистр таймера/счетчика функционирует как реверсивный счетчик, модуль счета которого (ТОР) зависит от режима работы модулятора. Значение модуля счета и соответствующая частота ШИМ-сигнала для каждого режима работы модулятора приведены в таблице 9.13.
Таблица 9.13 Модуль счета счетного регистра и частота ШИМ-сигнала
Разрешение модулятора |
Модуль счета (ТОР) |
Частота ШИМ-сигнала |
8 разрядов |
$FF (255} |
fTCK1/510 |
9 разрядов |
$1FF (511) |
fTCK1/1022 |
10 разрядов |
$3FF(1023) |
fTCK1/2046 |
Примечание: fTCK1 − частота тактового сигнала таймера/счетчика Т1.
При работе таймера/счетчика Т1 в режиме ШИМ состояние счетного регистра изменяется от $000 до значения ТОР, а затем снова до $000, после чего цикл повторяется. При равенстве состояния счетчика и содержимого регистра сравнения состояние соответствующего этому регистру вывода микроконтроллера изменяется согласно таблице 9.14 (см. также рисунок 9.6). Таким образом, длительность импульса равна удвоенному значению содержимого регистра сравнения.
Таблица 9.14 Поведение выходов схемы сравнения в режиме ШИМ
РегистрTCCR1A |
Поведение вывода OC1 | |
СОМ11 |
СОМ 10 |
|
0 |
0 |
Таймер/счетчик Т 1 отключен от вывода |
0 |
1 |
Таймер/счетчик Т 1 отключен от вывода |
1 |
0 |
Сбрасывается в “0” при прямом счете и устанавливается в “1” при обратном счете (неинвертированный ШИМ-сишал) |
1 |
1 |
Устанавливается в “1” при прямом счете и сбрасывается в ”0” при обратном счете (инвертированный ШИМ-сигнал) |
Рис. 9.6 Формирование ШИМ-сигнала
Соответственно если в счетный регистр записать значение $000 или ТОР, то при следующем совпадении состояния счетчика и содержимого регистра сравнения выход схемы сравнения переключится в устойчивое состояние согласно таблице 9.15.
Таблица 9.15 Устойчивые состояния выхода схемы сравнения.
Регистр TCCR1A |
Регистр OCR1 |
Состояние вывода ОС1 | |
СОМ11 |
COM10 | ||
1 |
0 |
$000 |
0 |
1 |
0
|
ТОР |
1 |
1 |
1 |
$000 |
1 |
1 |
1 |
ТОР |
0 |
Особенностью работы таймера/счетчика Т1 в режиме ШИМ является то, что при записи в регистр сравнения младшие 10 разрядов записываемого числа на самом деле сохраняются в специальном временном регистре (не путать с регистром TEMP). А изменение содержимого регистра сравнения происходит только в момент достижения счетчиком максимального значения (ТОР). Благодаря такому решению исключается появление несимметричных выбросов сигнала на выходе модулятора (помех), которые были бы неизбежны при непосредственной записи в регистр сравнения.
Соответственно при чтении регистра сравнения в промежутке между записью в него и его действительным изменением возвращается содержимое временного регистра. То есть всегда возвращается значение, записанное последним.
И несколько слов о прерываниях. При работе таймера/счетчика Т1 в режиме ШИМ может генерироваться прерывание по переполнению счетного регистра таймера/счетчика, а также прерывания от схемы сравнения.
Флаги прерываний устанавливаются в “1” при изменении счетчиком направления счета: флаг TOV1 − в точке $000, а флаг OCF1 (для регистра OCR1) − в точке ТОР. Разрешение и обработка соответствующих прерываний выполняются как обычно.